Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-10-10 17:02:20 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-10-10 17:02:20 +0400
commitf0a9b664694dacb0388a8e078d46753dc6a36352 (patch)
tree2abf4e68d65708dd36133f1ed83c2b578d34b859 /intern/cycles/kernel/svm/bsdf_ward.h
parentb4671d67edef053118ae53b12b2672603a8bf9b6 (diff)
Cycles: Anisotropic BSDF enabled, with tangents now computed from the active UV map.
It's using the Ward BSDF currently, which has some energy loss so might be a bit dark. More/better BSDF options can be implemented later. Patch by Mike Farnsworth, some modifications by me. Currently it's not possible yet to set a custom tangent, that will follow as part of per-bsdf normals patch.
Diffstat (limited to 'intern/cycles/kernel/svm/bsdf_ward.h')
-rw-r--r--intern/cycles/kernel/svm/bsdf_ward.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/intern/cycles/kernel/svm/bsdf_ward.h b/intern/cycles/kernel/svm/bsdf_ward.h
index 6ae45948a73..56b8ad72c89 100644
--- a/intern/cycles/kernel/svm/bsdf_ward.h
+++ b/intern/cycles/kernel/svm/bsdf_ward.h
@@ -67,7 +67,7 @@ __device float3 bsdf_ward_eval_reflect(const ShaderData *sd, const ShaderClosure
float m_ax = sc->data0;
float m_ay = sc->data1;
float3 m_N = sd->N;
- float3 m_T = normalize(sd->dPdu);
+ float3 m_T = sd->T;
float cosNO = dot(m_N, I);
float cosNI = dot(m_N, omega_in);
@@ -90,6 +90,7 @@ __device float3 bsdf_ward_eval_reflect(const ShaderData *sd, const ShaderClosure
*pdf = exp_val / denom;
return make_float3 (out, out, out);
}
+
return make_float3 (0, 0, 0);
}
@@ -108,7 +109,7 @@ __device int bsdf_ward_sample(const ShaderData *sd, const ShaderClosure *sc, flo
float m_ax = sc->data0;
float m_ay = sc->data1;
float3 m_N = sd->N;
- float3 m_T = normalize(sd->dPdu);
+ float3 m_T = sd->T;
float cosNO = dot(m_N, sd->I);
if(cosNO > 0) {