style cleanup
This commit is contained in:
@@ -87,12 +87,14 @@ public:
|
|||||||
|
|
||||||
ClosureParam closure_background_params[] = {
|
ClosureParam closure_background_params[] = {
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(GenericBackgroundClosure) };
|
CLOSURE_FINISH_PARAM(GenericBackgroundClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(closure_background_prepare, GenericBackgroundClosure)
|
CLOSURE_PREPARE(closure_background_prepare, GenericBackgroundClosure)
|
||||||
|
|
||||||
ClosureParam closure_holdout_params[] = {
|
ClosureParam closure_holdout_params[] = {
|
||||||
CLOSURE_FINISH_PARAM(HoldoutClosure) };
|
CLOSURE_FINISH_PARAM(HoldoutClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(closure_holdout_prepare, HoldoutClosure)
|
CLOSURE_PREPARE(closure_holdout_prepare, HoldoutClosure)
|
||||||
|
|
||||||
|
@@ -156,7 +156,8 @@ public:
|
|||||||
domega_in_dy = (2 * m_N.dot(domega_out_dy)) * m_N - domega_out_dy;
|
domega_in_dy = (2 * m_N.dot(domega_out_dy)) * m_N - domega_out_dy;
|
||||||
domega_in_dx *= 125;
|
domega_in_dx *= 125;
|
||||||
domega_in_dy *= 125;
|
domega_in_dy *= 125;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
pdf = 0;
|
pdf = 0;
|
||||||
return Labels::REFLECT;
|
return Labels::REFLECT;
|
||||||
}
|
}
|
||||||
@@ -169,7 +170,8 @@ ClosureParam bsdf_ashikhmin_velvet_params[] = {
|
|||||||
CLOSURE_VECTOR_PARAM(AshikhminVelvetClosure, m_N),
|
CLOSURE_VECTOR_PARAM(AshikhminVelvetClosure, m_N),
|
||||||
CLOSURE_FLOAT_PARAM(AshikhminVelvetClosure, m_sigma),
|
CLOSURE_FLOAT_PARAM(AshikhminVelvetClosure, m_sigma),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(AshikhminVelvetClosure) };
|
CLOSURE_FINISH_PARAM(AshikhminVelvetClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(bsdf_ashikhmin_velvet_prepare, AshikhminVelvetClosure)
|
CLOSURE_PREPARE(bsdf_ashikhmin_velvet_prepare, AshikhminVelvetClosure)
|
||||||
|
|
||||||
|
@@ -97,7 +97,8 @@ public:
|
|||||||
domega_in_dy = (2 * m_N.dot(domega_out_dy)) * m_N - domega_out_dy;
|
domega_in_dy = (2 * m_N.dot(domega_out_dy)) * m_N - domega_out_dy;
|
||||||
domega_in_dx *= 125;
|
domega_in_dx *= 125;
|
||||||
domega_in_dy *= 125;
|
domega_in_dy *= 125;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
pdf = 0;
|
pdf = 0;
|
||||||
return Labels::REFLECT;
|
return Labels::REFLECT;
|
||||||
}
|
}
|
||||||
@@ -160,7 +161,8 @@ public:
|
|||||||
domega_in_dy = (2 * m_N.dot(domega_out_dy)) * m_N - domega_out_dy;
|
domega_in_dy = (2 * m_N.dot(domega_out_dy)) * m_N - domega_out_dy;
|
||||||
domega_in_dx *= -125;
|
domega_in_dx *= -125;
|
||||||
domega_in_dy *= -125;
|
domega_in_dy *= -125;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
pdf = 0;
|
pdf = 0;
|
||||||
return Labels::TRANSMIT;
|
return Labels::TRANSMIT;
|
||||||
}
|
}
|
||||||
@@ -169,12 +171,14 @@ public:
|
|||||||
ClosureParam bsdf_diffuse_params[] = {
|
ClosureParam bsdf_diffuse_params[] = {
|
||||||
CLOSURE_VECTOR_PARAM(DiffuseClosure, m_N),
|
CLOSURE_VECTOR_PARAM(DiffuseClosure, m_N),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM (DiffuseClosure) };
|
CLOSURE_FINISH_PARAM(DiffuseClosure)
|
||||||
|
};
|
||||||
|
|
||||||
ClosureParam bsdf_translucent_params[] = {
|
ClosureParam bsdf_translucent_params[] = {
|
||||||
CLOSURE_VECTOR_PARAM(TranslucentClosure, m_N),
|
CLOSURE_VECTOR_PARAM(TranslucentClosure, m_N),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM (TranslucentClosure) };
|
CLOSURE_FINISH_PARAM(TranslucentClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(bsdf_diffuse_prepare, DiffuseClosure)
|
CLOSURE_PREPARE(bsdf_diffuse_prepare, DiffuseClosure)
|
||||||
CLOSURE_PREPARE(bsdf_translucent_prepare, TranslucentClosure)
|
CLOSURE_PREPARE(bsdf_translucent_prepare, TranslucentClosure)
|
||||||
|
@@ -213,7 +213,8 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
// CAUTION: the i and o variables are inverted relative to the paper
|
// CAUTION: the i and o variables are inverted relative to the paper
|
||||||
// eq. 39 - compute actual refractive direction
|
// eq. 39 - compute actual refractive direction
|
||||||
Vec3 R, dRdx, dRdy;
|
Vec3 R, dRdx, dRdy;
|
||||||
@@ -274,7 +275,8 @@ public:
|
|||||||
Vec3 m_N;
|
Vec3 m_N;
|
||||||
float m_ab; // width parameter (roughness)
|
float m_ab; // width parameter (roughness)
|
||||||
float m_eta; // index of refraction (for fresnel term)
|
float m_eta; // index of refraction (for fresnel term)
|
||||||
MicrofacetBeckmannClosure() : BSDFClosure(Labels::GLOSSY, Refractive ? Back : Front) { }
|
MicrofacetBeckmannClosure() : BSDFClosure(Labels::GLOSSY, Refractive ? Back : Front) {
|
||||||
|
}
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
@@ -287,7 +289,9 @@ public:
|
|||||||
m_eta == comp->m_eta && BSDFClosure::mergeable(other);
|
m_eta == comp->m_eta && BSDFClosure::mergeable(other);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t memsize () const { return sizeof(*this); }
|
size_t memsize() const {
|
||||||
|
return sizeof(*this);
|
||||||
|
}
|
||||||
|
|
||||||
const char *name() const {
|
const char *name() const {
|
||||||
return Refractive ? "microfacet_beckmann_refraction"
|
return Refractive ? "microfacet_beckmann_refraction"
|
||||||
@@ -441,7 +445,8 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
// CAUTION: the i and o variables are inverted relative to the paper
|
// CAUTION: the i and o variables are inverted relative to the paper
|
||||||
// eq. 39 - compute actual refractive direction
|
// eq. 39 - compute actual refractive direction
|
||||||
Vec3 R, dRdx, dRdy;
|
Vec3 R, dRdx, dRdy;
|
||||||
@@ -502,27 +507,31 @@ ClosureParam bsdf_microfacet_ggx_params[] = {
|
|||||||
CLOSURE_VECTOR_PARAM(MicrofacetGGXClosure<0>, m_N),
|
CLOSURE_VECTOR_PARAM(MicrofacetGGXClosure<0>, m_N),
|
||||||
CLOSURE_FLOAT_PARAM(MicrofacetGGXClosure<0>, m_ag),
|
CLOSURE_FLOAT_PARAM(MicrofacetGGXClosure<0>, m_ag),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(MicrofacetGGXClosure<0>) };
|
CLOSURE_FINISH_PARAM(MicrofacetGGXClosure<0>)
|
||||||
|
};
|
||||||
|
|
||||||
ClosureParam bsdf_microfacet_ggx_refraction_params[] = {
|
ClosureParam bsdf_microfacet_ggx_refraction_params[] = {
|
||||||
CLOSURE_VECTOR_PARAM(MicrofacetGGXClosure<1>, m_N),
|
CLOSURE_VECTOR_PARAM(MicrofacetGGXClosure<1>, m_N),
|
||||||
CLOSURE_FLOAT_PARAM(MicrofacetGGXClosure<1>, m_ag),
|
CLOSURE_FLOAT_PARAM(MicrofacetGGXClosure<1>, m_ag),
|
||||||
CLOSURE_FLOAT_PARAM(MicrofacetGGXClosure<1>, m_eta),
|
CLOSURE_FLOAT_PARAM(MicrofacetGGXClosure<1>, m_eta),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(MicrofacetGGXClosure<1>) };
|
CLOSURE_FINISH_PARAM(MicrofacetGGXClosure<1>)
|
||||||
|
};
|
||||||
|
|
||||||
ClosureParam bsdf_microfacet_beckmann_params[] = {
|
ClosureParam bsdf_microfacet_beckmann_params[] = {
|
||||||
CLOSURE_VECTOR_PARAM(MicrofacetBeckmannClosure<0>, m_N),
|
CLOSURE_VECTOR_PARAM(MicrofacetBeckmannClosure<0>, m_N),
|
||||||
CLOSURE_FLOAT_PARAM(MicrofacetBeckmannClosure<0>, m_ab),
|
CLOSURE_FLOAT_PARAM(MicrofacetBeckmannClosure<0>, m_ab),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(MicrofacetBeckmannClosure<0>) };
|
CLOSURE_FINISH_PARAM(MicrofacetBeckmannClosure<0>)
|
||||||
|
};
|
||||||
|
|
||||||
ClosureParam bsdf_microfacet_beckmann_refraction_params[] = {
|
ClosureParam bsdf_microfacet_beckmann_refraction_params[] = {
|
||||||
CLOSURE_VECTOR_PARAM(MicrofacetBeckmannClosure<1>, m_N),
|
CLOSURE_VECTOR_PARAM(MicrofacetBeckmannClosure<1>, m_N),
|
||||||
CLOSURE_FLOAT_PARAM(MicrofacetBeckmannClosure<1>, m_ab),
|
CLOSURE_FLOAT_PARAM(MicrofacetBeckmannClosure<1>, m_ab),
|
||||||
CLOSURE_FLOAT_PARAM(MicrofacetBeckmannClosure<1>, m_eta),
|
CLOSURE_FLOAT_PARAM(MicrofacetBeckmannClosure<1>, m_eta),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(MicrofacetBeckmannClosure<1>) };
|
CLOSURE_FINISH_PARAM(MicrofacetBeckmannClosure<1>)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(bsdf_microfacet_ggx_prepare, MicrofacetGGXClosure<0>)
|
CLOSURE_PREPARE(bsdf_microfacet_ggx_prepare, MicrofacetGGXClosure<0>)
|
||||||
CLOSURE_PREPARE(bsdf_microfacet_ggx_refraction_prepare, MicrofacetGGXClosure<1>)
|
CLOSURE_PREPARE(bsdf_microfacet_ggx_refraction_prepare, MicrofacetGGXClosure<1>)
|
||||||
|
@@ -100,7 +100,8 @@ public:
|
|||||||
ClosureParam bsdf_reflection_params[] = {
|
ClosureParam bsdf_reflection_params[] = {
|
||||||
CLOSURE_VECTOR_PARAM(ReflectionClosure, m_N),
|
CLOSURE_VECTOR_PARAM(ReflectionClosure, m_N),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(ReflectionClosure) };
|
CLOSURE_FINISH_PARAM(ReflectionClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(bsdf_reflection_prepare, ReflectionClosure)
|
CLOSURE_PREPARE(bsdf_reflection_prepare, ReflectionClosure)
|
||||||
|
|
||||||
|
@@ -112,7 +112,8 @@ ClosureParam bsdf_refraction_params[] = {
|
|||||||
CLOSURE_VECTOR_PARAM(RefractionClosure, m_N),
|
CLOSURE_VECTOR_PARAM(RefractionClosure, m_N),
|
||||||
CLOSURE_FLOAT_PARAM(RefractionClosure, m_eta),
|
CLOSURE_FLOAT_PARAM(RefractionClosure, m_eta),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(RefractionClosure) };
|
CLOSURE_FINISH_PARAM(RefractionClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(bsdf_refraction_prepare, RefractionClosure)
|
CLOSURE_PREPARE(bsdf_refraction_prepare, RefractionClosure)
|
||||||
|
|
||||||
|
@@ -89,7 +89,8 @@ public:
|
|||||||
|
|
||||||
ClosureParam bsdf_transparent_params[] = {
|
ClosureParam bsdf_transparent_params[] = {
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(TransparentClosure) };
|
CLOSURE_FINISH_PARAM(TransparentClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(bsdf_transparent_prepare, TransparentClosure)
|
CLOSURE_PREPARE(bsdf_transparent_prepare, TransparentClosure)
|
||||||
|
|
||||||
|
@@ -134,19 +134,22 @@ public:
|
|||||||
float tanPhi = alphaRatio * tanf((float) M_PI_2 * val);
|
float tanPhi = alphaRatio * tanf((float) M_PI_2 * val);
|
||||||
cosPhi = 1 / sqrtf(1 + tanPhi * tanPhi);
|
cosPhi = 1 / sqrtf(1 + tanPhi * tanPhi);
|
||||||
sinPhi = tanPhi * cosPhi;
|
sinPhi = tanPhi * cosPhi;
|
||||||
} else if (randu < 0.5) {
|
}
|
||||||
|
else if (randu < 0.5) {
|
||||||
float val = 1 - 4 * (0.5f - randu);
|
float val = 1 - 4 * (0.5f - randu);
|
||||||
float tanPhi = alphaRatio * tanf((float) M_PI_2 * val);
|
float tanPhi = alphaRatio * tanf((float) M_PI_2 * val);
|
||||||
// phi = (float) M_PI - phi;
|
// phi = (float) M_PI - phi;
|
||||||
cosPhi = -1 / sqrtf(1 + tanPhi * tanPhi);
|
cosPhi = -1 / sqrtf(1 + tanPhi * tanPhi);
|
||||||
sinPhi = -tanPhi * cosPhi;
|
sinPhi = -tanPhi * cosPhi;
|
||||||
} else if (randu < 0.75f) {
|
}
|
||||||
|
else if (randu < 0.75f) {
|
||||||
float val = 4 * (randu - 0.5f);
|
float val = 4 * (randu - 0.5f);
|
||||||
float tanPhi = alphaRatio * tanf((float) M_PI_2 * val);
|
float tanPhi = alphaRatio * tanf((float) M_PI_2 * val);
|
||||||
//phi = (float) M_PI + phi;
|
//phi = (float) M_PI + phi;
|
||||||
cosPhi = -1 / sqrtf(1 + tanPhi * tanPhi);
|
cosPhi = -1 / sqrtf(1 + tanPhi * tanPhi);
|
||||||
sinPhi = tanPhi * cosPhi;
|
sinPhi = tanPhi * cosPhi;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
float val = 1 - 4 * (1 - randu);
|
float val = 1 - 4 * (1 - randu);
|
||||||
float tanPhi = alphaRatio * tanf((float) M_PI_2 * val);
|
float tanPhi = alphaRatio * tanf((float) M_PI_2 * val);
|
||||||
// phi = 2 * (float) M_PI - phi;
|
// phi = 2 * (float) M_PI - phi;
|
||||||
@@ -214,7 +217,8 @@ ClosureParam bsdf_ward_params[] = {
|
|||||||
CLOSURE_FLOAT_PARAM(WardClosure, m_ax),
|
CLOSURE_FLOAT_PARAM(WardClosure, m_ax),
|
||||||
CLOSURE_FLOAT_PARAM(WardClosure, m_ay),
|
CLOSURE_FLOAT_PARAM(WardClosure, m_ay),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(WardClosure) };
|
CLOSURE_FINISH_PARAM(WardClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(bsdf_ward_prepare, WardClosure)
|
CLOSURE_PREPARE(bsdf_ward_prepare, WardClosure)
|
||||||
|
|
||||||
|
@@ -212,8 +212,10 @@ public:
|
|||||||
domega_in_dy = (2 * m_N.dot(domega_out_dy)) * m_N - domega_out_dy;
|
domega_in_dy = (2 * m_N.dot(domega_out_dy)) * m_N - domega_out_dy;
|
||||||
domega_in_dx *= 125;
|
domega_in_dx *= 125;
|
||||||
domega_in_dy *= 125;
|
domega_in_dy *= 125;
|
||||||
} else
|
}
|
||||||
|
else {
|
||||||
pdf = 0;
|
pdf = 0;
|
||||||
|
}
|
||||||
return Labels::REFLECT;
|
return Labels::REFLECT;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -224,13 +226,15 @@ ClosureParam bsdf_westin_backscatter_params[] = {
|
|||||||
CLOSURE_VECTOR_PARAM(WestinBackscatterClosure, m_N),
|
CLOSURE_VECTOR_PARAM(WestinBackscatterClosure, m_N),
|
||||||
CLOSURE_FLOAT_PARAM(WestinBackscatterClosure, m_roughness),
|
CLOSURE_FLOAT_PARAM(WestinBackscatterClosure, m_roughness),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(WestinBackscatterClosure) };
|
CLOSURE_FINISH_PARAM(WestinBackscatterClosure)
|
||||||
|
};
|
||||||
|
|
||||||
ClosureParam bsdf_westin_sheen_params[] = {
|
ClosureParam bsdf_westin_sheen_params[] = {
|
||||||
CLOSURE_VECTOR_PARAM(WestinSheenClosure, m_N),
|
CLOSURE_VECTOR_PARAM(WestinSheenClosure, m_N),
|
||||||
CLOSURE_FLOAT_PARAM(WestinSheenClosure, m_edginess),
|
CLOSURE_FLOAT_PARAM(WestinSheenClosure, m_edginess),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(WestinSheenClosure) };
|
CLOSURE_FINISH_PARAM(WestinSheenClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(bsdf_westin_backscatter_prepare, WestinBackscatterClosure)
|
CLOSURE_PREPARE(bsdf_westin_backscatter_prepare, WestinBackscatterClosure)
|
||||||
CLOSURE_PREPARE(bsdf_westin_sheen_prepare, WestinSheenClosure)
|
CLOSURE_PREPARE(bsdf_westin_sheen_prepare, WestinSheenClosure)
|
||||||
|
@@ -97,7 +97,8 @@ public:
|
|||||||
ClosureParam closure_bssrdf_cubic_params[] = {
|
ClosureParam closure_bssrdf_cubic_params[] = {
|
||||||
CLOSURE_COLOR_PARAM(BSSRDFCubicClosure, m_radius),
|
CLOSURE_COLOR_PARAM(BSSRDFCubicClosure, m_radius),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(BSSRDFCubicClosure) };
|
CLOSURE_FINISH_PARAM(BSSRDFCubicClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(closure_bssrdf_cubic_prepare, BSSRDFCubicClosure)
|
CLOSURE_PREPARE(closure_bssrdf_cubic_prepare, BSSRDFCubicClosure)
|
||||||
|
|
||||||
|
@@ -72,7 +72,8 @@ public:
|
|||||||
ClosureParam closure_debug_params[] = {
|
ClosureParam closure_debug_params[] = {
|
||||||
CLOSURE_STRING_PARAM(DebugClosure, m_tag),
|
CLOSURE_STRING_PARAM(DebugClosure, m_tag),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(DebugClosure) };
|
CLOSURE_FINISH_PARAM(DebugClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(closure_debug_prepare, DebugClosure)
|
CLOSURE_PREPARE(closure_debug_prepare, DebugClosure)
|
||||||
|
|
||||||
|
@@ -99,7 +99,8 @@ public:
|
|||||||
|
|
||||||
ClosureParam closure_emission_params[] = {
|
ClosureParam closure_emission_params[] = {
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(GenericEmissiveClosure) };
|
CLOSURE_FINISH_PARAM(GenericEmissiveClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(closure_emission_prepare, GenericEmissiveClosure)
|
CLOSURE_PREPARE(closure_emission_prepare, GenericEmissiveClosure)
|
||||||
|
|
||||||
|
@@ -172,7 +172,9 @@ void fresnel (vector I, normal N, float eta,
|
|||||||
output float Kr, output float Kt,
|
output float Kr, output float Kt,
|
||||||
output vector R, output vector T)
|
output vector R, output vector T)
|
||||||
{
|
{
|
||||||
float sqr(float x) { return x*x; }
|
float sqr(float x) {
|
||||||
|
return x * x;
|
||||||
|
}
|
||||||
float c = dot(I, N);
|
float c = dot(I, N);
|
||||||
if (c < 0)
|
if (c < 0)
|
||||||
c = -c;
|
c = -c;
|
||||||
@@ -189,7 +191,8 @@ void fresnel (vector I, normal N, float eta,
|
|||||||
// OPT: the following recomputes some of the above values, but it
|
// OPT: the following recomputes some of the above values, but it
|
||||||
// gives us the same result as if the shader-writer called refract()
|
// gives us the same result as if the shader-writer called refract()
|
||||||
T = refract(I, N, eta);
|
T = refract(I, N, eta);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
// total internal reflection
|
// total internal reflection
|
||||||
Kr = 1.0;
|
Kr = 1.0;
|
||||||
Kt = 0.0;
|
Kt = 0.0;
|
||||||
@@ -327,7 +330,8 @@ color transformc (string from, string to, color x)
|
|||||||
color r;
|
color r;
|
||||||
if (s < 0.0001) {
|
if (s < 0.0001) {
|
||||||
r = v;
|
r = v;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
h = 6 * (h - floor(h)); // expand to [0..6)
|
h = 6 * (h - floor(h)); // expand to [0..6)
|
||||||
int hi = (int)h;
|
int hi = (int)h;
|
||||||
float f = h - hi;
|
float f = h - hi;
|
||||||
@@ -351,7 +355,8 @@ color transformc (string from, string to, color x)
|
|||||||
color r;
|
color r;
|
||||||
if (v <= 0) {
|
if (v <= 0) {
|
||||||
r = 0;
|
r = 0;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
float min = 2 * l - v;
|
float min = 2 * l - v;
|
||||||
s = (v - min) / v;
|
s = (v - min) / v;
|
||||||
r = hsv_to_rgb(color(h, s, v));
|
r = hsv_to_rgb(color(h, s, v));
|
||||||
@@ -412,7 +417,9 @@ int strlen (string s) BUILTIN;
|
|||||||
int startswith(string s, string prefix) BUILTIN;
|
int startswith(string s, string prefix) BUILTIN;
|
||||||
int endswith(string s, string suffix) BUILTIN;
|
int endswith(string s, string suffix) BUILTIN;
|
||||||
string substr(string s, int start, int len) BUILTIN;
|
string substr(string s, int start, int len) BUILTIN;
|
||||||
string substr (string s, int start) { return substr (s, start, strlen(s)); }
|
string substr(string s, int start) {
|
||||||
|
return substr(s, start, strlen(s));
|
||||||
|
}
|
||||||
|
|
||||||
// Define concat in terms of shorter concat
|
// Define concat in terms of shorter concat
|
||||||
string concat(string a, string b, string c) {
|
string concat(string a, string b, string c) {
|
||||||
|
@@ -203,7 +203,8 @@ static bool get_mesh_attribute_convert(KernelGlobals *kg, const ShaderData *sd,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (attr.type == TypeDesc::TypePoint || attr.type == TypeDesc::TypeVector ||
|
else if (attr.type == TypeDesc::TypePoint || attr.type == TypeDesc::TypeVector ||
|
||||||
attr.type == TypeDesc::TypeNormal || attr.type == TypeDesc::TypeColor) {
|
attr.type == TypeDesc::TypeNormal || attr.type == TypeDesc::TypeColor)
|
||||||
|
{
|
||||||
float3 tmp[3];
|
float3 tmp[3];
|
||||||
float *fval = (float *)val;
|
float *fval = (float *)val;
|
||||||
|
|
||||||
@@ -268,11 +269,14 @@ bool OSLRenderServices::get_attribute(void *renderstate, bool derivatives, ustri
|
|||||||
if (tri != ~0) {
|
if (tri != ~0) {
|
||||||
if (attr.type == type || (attr.type == TypeDesc::TypeColor &&
|
if (attr.type == type || (attr.type == TypeDesc::TypeColor &&
|
||||||
(type == TypeDesc::TypePoint || type == TypeDesc::TypeVector || type == TypeDesc::TypeNormal)))
|
(type == TypeDesc::TypePoint || type == TypeDesc::TypeVector || type == TypeDesc::TypeNormal)))
|
||||||
|
{
|
||||||
return get_mesh_attribute(kg, sd, attr, derivatives, val);
|
return get_mesh_attribute(kg, sd, attr, derivatives, val);
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
return get_mesh_attribute_convert(kg, sd, attr, type, derivatives, val);
|
return get_mesh_attribute_convert(kg, sd, attr, type, derivatives, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
/* object attribute */
|
/* object attribute */
|
||||||
get_object_attribute(attr, derivatives, val);
|
get_object_attribute(attr, derivatives, val);
|
||||||
@@ -308,8 +312,7 @@ void *OSLRenderServices::get_pointcloud_attr_query(ustring *attr_names,
|
|||||||
to the query. Just to prevent buffer overruns */
|
to the query. Just to prevent buffer overruns */
|
||||||
query.capacity = -1;
|
query.capacity = -1;
|
||||||
|
|
||||||
for(int i = 0; i < nattrs; ++i)
|
for (int i = 0; i < nattrs; ++i) {
|
||||||
{
|
|
||||||
query.attr_names[i] = attr_names[i];
|
query.attr_names[i] = attr_names[i];
|
||||||
|
|
||||||
TypeDesc element_type = attr_types[i].elementtype();
|
TypeDesc element_type = attr_types[i].elementtype();
|
||||||
@@ -321,16 +324,21 @@ void *OSLRenderServices::get_pointcloud_attr_query(ustring *attr_names,
|
|||||||
|
|
||||||
/* convert the OSL (OIIO) type to the equivalent Partio type so
|
/* convert the OSL (OIIO) type to the equivalent Partio type so
|
||||||
we can do a fast check at query time. */
|
we can do a fast check at query time. */
|
||||||
if(element_type == TypeDesc::TypeFloat)
|
if (element_type == TypeDesc::TypeFloat) {
|
||||||
query.attr_partio_types[i] = Partio::FLOAT;
|
query.attr_partio_types[i] = Partio::FLOAT;
|
||||||
else if(element_type == TypeDesc::TypeInt)
|
}
|
||||||
|
else if (element_type == TypeDesc::TypeInt) {
|
||||||
query.attr_partio_types[i] = Partio::INT;
|
query.attr_partio_types[i] = Partio::INT;
|
||||||
|
}
|
||||||
else if (element_type == TypeDesc::TypeColor || element_type == TypeDesc::TypePoint ||
|
else if (element_type == TypeDesc::TypeColor || element_type == TypeDesc::TypePoint ||
|
||||||
element_type == TypeDesc::TypeVector || element_type == TypeDesc::TypeNormal)
|
element_type == TypeDesc::TypeVector || element_type == TypeDesc::TypeNormal)
|
||||||
|
{
|
||||||
query.attr_partio_types[i] = Partio::VECTOR;
|
query.attr_partio_types[i] = Partio::VECTOR;
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
return NULL; /* report some error of unknown type */
|
return NULL; /* report some error of unknown type */
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* this is valid until the end of RenderServices */
|
/* this is valid until the end of RenderServices */
|
||||||
return &query;
|
return &query;
|
||||||
|
@@ -79,8 +79,7 @@ private:
|
|||||||
right now it only caches the types already converted to
|
right now it only caches the types already converted to
|
||||||
Partio constants. this is what get_pointcloud_attr_query
|
Partio constants. this is what get_pointcloud_attr_query
|
||||||
returns */
|
returns */
|
||||||
struct AttrQuery
|
struct AttrQuery {
|
||||||
{
|
|
||||||
/* names of the attributes to query */
|
/* names of the attributes to query */
|
||||||
std::vector<ustring> attr_names;
|
std::vector<ustring> attr_names;
|
||||||
/* types as (enum Partio::ParticleAttributeType) of the
|
/* types as (enum Partio::ParticleAttributeType) of the
|
||||||
|
@@ -73,7 +73,8 @@ public:
|
|||||||
// didn't quite converge, pick result in the middle of remaining interval
|
// didn't quite converge, pick result in the middle of remaining interval
|
||||||
return 0.5f * (lo + hi);
|
return 0.5f * (lo + hi);
|
||||||
}
|
}
|
||||||
SubsurfaceClosure() { }
|
SubsurfaceClosure() {
|
||||||
|
}
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
@@ -127,7 +128,8 @@ ClosureParam closure_subsurface_params[] = {
|
|||||||
CLOSURE_COLOR_PARAM(SubsurfaceClosure, m_mfp),
|
CLOSURE_COLOR_PARAM(SubsurfaceClosure, m_mfp),
|
||||||
CLOSURE_COLOR_PARAM(SubsurfaceClosure, m_albedo),
|
CLOSURE_COLOR_PARAM(SubsurfaceClosure, m_albedo),
|
||||||
CLOSURE_STRING_KEYPARAM("label"),
|
CLOSURE_STRING_KEYPARAM("label"),
|
||||||
CLOSURE_FINISH_PARAM(SubsurfaceClosure) };
|
CLOSURE_FINISH_PARAM(SubsurfaceClosure)
|
||||||
|
};
|
||||||
|
|
||||||
CLOSURE_PREPARE(closure_subsurface_prepare, SubsurfaceClosure)
|
CLOSURE_PREPARE(closure_subsurface_prepare, SubsurfaceClosure)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user