Cycles / Closures:

* Avoid some unnecessary re-declarations of closure data and simplify *_setup() functions a bit.
This commit is contained in:
Thomas Dinges 2013-05-10 22:41:24 +00:00
parent 3e1e76a2c1
commit 4ae201e105
2 changed files with 11 additions and 39 deletions

@ -44,11 +44,8 @@ __device_inline float safe_sqrtf(float f)
__device int bsdf_microfacet_ggx_setup(ShaderClosure *sc)
{
float ag = sc->data0;
sc->data0 = clamp(sc->data0, 0.0f, 1.0f); /* m_ag */
float m_ag = clamp(ag, 0.0f, 1.0f);
sc->data0 = m_ag;
sc->type = CLOSURE_BSDF_MICROFACET_GGX_ID;
return SD_BSDF|SD_BSDF_HAS_EVAL|SD_BSDF_GLOSSY;
@ -56,14 +53,8 @@ __device int bsdf_microfacet_ggx_setup(ShaderClosure *sc)
__device int bsdf_microfacet_ggx_refraction_setup(ShaderClosure *sc)
{
float ag = sc->data0;
float eta = sc->data1;
sc->data0 = clamp(sc->data0, 0.0f, 1.0f); /* m_ag */
float m_ag = clamp(ag, 0.0f, 1.0f);
float m_eta = eta;
sc->data0 = m_ag;
sc->data1 = m_eta;
sc->type = CLOSURE_BSDF_MICROFACET_GGX_REFRACTION_ID;
return SD_BSDF|SD_BSDF_HAS_EVAL|SD_BSDF_GLOSSY;
@ -71,9 +62,7 @@ __device int bsdf_microfacet_ggx_refraction_setup(ShaderClosure *sc)
__device void bsdf_microfacet_ggx_blur(ShaderClosure *sc, float roughness)
{
float m_ag = sc->data0;
m_ag = fmaxf(roughness, m_ag);
sc->data0 = m_ag;
sc->data0 = fmaxf(roughness, sc->data0); /* m_ag */
}
__device float3 bsdf_microfacet_ggx_eval_reflect(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)
@ -273,10 +262,7 @@ __device int bsdf_microfacet_ggx_sample(const ShaderClosure *sc, float3 Ng, floa
__device int bsdf_microfacet_beckmann_setup(ShaderClosure *sc)
{
float ab = sc->data0;
float m_ab = clamp(ab, 0.0f, 1.0f);
sc->data0 = m_ab;
sc->data0 = clamp(sc->data0, 0.0f, 1.0f); /* m_ab */
sc->type = CLOSURE_BSDF_MICROFACET_BECKMANN_ID;
return SD_BSDF|SD_BSDF_HAS_EVAL|SD_BSDF_GLOSSY;
@ -284,13 +270,7 @@ __device int bsdf_microfacet_beckmann_setup(ShaderClosure *sc)
__device int bsdf_microfacet_beckmann_refraction_setup(ShaderClosure *sc)
{
float ab = sc->data0;
float eta = sc->data1;
float m_ab = clamp(ab, 0.0f, 1.0f);
float m_eta = eta;
sc->data0 = m_ab;
sc->data1 = m_eta;
sc->data0 = clamp(sc->data0, 0.0f, 1.0f); /* m_ab */
sc->type = CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID;
return SD_BSDF|SD_BSDF_HAS_EVAL|SD_BSDF_GLOSSY;
@ -298,9 +278,7 @@ __device int bsdf_microfacet_beckmann_refraction_setup(ShaderClosure *sc)
__device void bsdf_microfacet_beckmann_blur(ShaderClosure *sc, float roughness)
{
float m_ab = sc->data0;
m_ab = fmaxf(roughness, m_ab);
sc->data0 = m_ab;
sc->data0 = fmaxf(roughness, sc->data0); /* m_ab */
}
__device float3 bsdf_microfacet_beckmann_eval_reflect(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)

@ -39,14 +39,8 @@ CCL_NAMESPACE_BEGIN
__device int bsdf_ward_setup(ShaderClosure *sc)
{
float ax = sc->data0;
float ay = sc->data1;
float m_ax = clamp(ax, 1e-4f, 1.0f);
float m_ay = clamp(ay, 1e-4f, 1.0f);
sc->data0 = m_ax;
sc->data1 = m_ay;
sc->data0 = clamp(sc->data0, 1e-4f, 1.0f); /* m_ax */
sc->data1 = clamp(sc->data1, 1e-4f, 1.0f); /* m_ay */
sc->type = CLOSURE_BSDF_WARD_ID;
return SD_BSDF|SD_BSDF_HAS_EVAL|SD_BSDF_GLOSSY;
@ -54,8 +48,8 @@ __device int bsdf_ward_setup(ShaderClosure *sc)
__device void bsdf_ward_blur(ShaderClosure *sc, float roughness)
{
sc->data0 = fmaxf(roughness, sc->data0);
sc->data1 = fmaxf(roughness, sc->data1);
sc->data0 = fmaxf(roughness, sc->data0); /* m_ax */
sc->data1 = fmaxf(roughness, sc->data1); /* m_ay */
}
__device float3 bsdf_ward_eval_reflect(const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf)