It doesn't use MiikTspace, the tangent for normal maps is not the same one that you would want to use for anisotropic shading.
Brecht. On Wed, Oct 10, 2012 at 10:17 PM, Michael Fox <[email protected]> wrote: > does this use MiikTspace for nomalmaps as it produces far greater normal > maps results, luxrender uses it, blender uses it in both GLSL and BI > > On 11/10/12 02:56, Brecht Van Lommel wrote: >> Revision: 51267 >> >> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51267 >> Author: blendix >> Date: 2012-10-10 15:56:43 +0000 (Wed, 10 Oct 2012) >> Log Message: >> ----------- >> Cycles: per-BSDF normal input and new Bump node. >> >> Each BSDF node now has a Normal input, which can be used to set a custom >> normal >> for the BSDF, for example if you want to have only bump on one of the layers >> in >> a multilayer material. >> >> The Bump node can be used to generate a normal from a scalar value, the same >> as >> what happens when you connect a scalar value to the displacement output. >> >> Documentation has been updated with the latest changes: >> http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Nodes >> >> Patch by Agustin Benavidez, some implementation tweaks by me. >> >> Modified Paths: >> -------------- >> trunk/blender/intern/cycles/blender/blender_shader.cpp >> trunk/blender/intern/cycles/kernel/kernel_types.h >> trunk/blender/intern/cycles/kernel/svm/bsdf_ashikhmin_velvet.h >> trunk/blender/intern/cycles/kernel/svm/bsdf_diffuse.h >> trunk/blender/intern/cycles/kernel/svm/bsdf_microfacet.h >> trunk/blender/intern/cycles/kernel/svm/bsdf_oren_nayar.h >> trunk/blender/intern/cycles/kernel/svm/bsdf_reflection.h >> trunk/blender/intern/cycles/kernel/svm/bsdf_refraction.h >> trunk/blender/intern/cycles/kernel/svm/bsdf_ward.h >> trunk/blender/intern/cycles/kernel/svm/bsdf_westin.h >> trunk/blender/intern/cycles/kernel/svm/svm.h >> trunk/blender/intern/cycles/kernel/svm/svm_closure.h >> trunk/blender/intern/cycles/kernel/svm/svm_displace.h >> trunk/blender/intern/cycles/kernel/svm/svm_types.h >> trunk/blender/intern/cycles/render/graph.cpp >> trunk/blender/intern/cycles/render/graph.h >> trunk/blender/intern/cycles/render/nodes.cpp >> trunk/blender/intern/cycles/render/nodes.h >> trunk/blender/source/blender/blenkernel/BKE_node.h >> trunk/blender/source/blender/blenkernel/intern/node.c >> trunk/blender/source/blender/makesrna/intern/rna_nodetree_types.h >> trunk/blender/source/blender/nodes/CMakeLists.txt >> trunk/blender/source/blender/nodes/NOD_shader.h >> >> trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c >> >> trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c >> trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c >> >> trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c >> >> trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c >> >> trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c >> >> Added Paths: >> ----------- >> trunk/blender/source/blender/nodes/shader/nodes/node_shader_bump.c >> >> Modified: trunk/blender/intern/cycles/blender/blender_shader.cpp >> =================================================================== >> --- trunk/blender/intern/cycles/blender/blender_shader.cpp 2012-10-10 >> 14:28:47 UTC (rev 51266) >> +++ trunk/blender/intern/cycles/blender/blender_shader.cpp 2012-10-10 >> 15:56:43 UTC (rev 51267) >> @@ -402,6 +402,10 @@ >> node = new ParticleInfoNode(); >> break; >> } >> + case BL::ShaderNode::type_BUMP: { >> + node = new BumpNode(); >> + break; >> + } >> case BL::ShaderNode::type_TEX_IMAGE: { >> BL::ShaderNodeTexImage b_image_node(b_node); >> BL::Image b_image(b_image_node.image()); >> >> Modified: trunk/blender/intern/cycles/kernel/kernel_types.h >> =================================================================== >> --- trunk/blender/intern/cycles/kernel/kernel_types.h 2012-10-10 14:28:47 >> UTC (rev 51266) >> +++ trunk/blender/intern/cycles/kernel/kernel_types.h 2012-10-10 15:56:43 >> UTC (rev 51267) >> @@ -370,6 +370,7 @@ >> #endif >> float data0; >> float data1; >> + float3 N; >> >> } ShaderClosure; >> >> >> Modified: trunk/blender/intern/cycles/kernel/svm/bsdf_ashikhmin_velvet.h >> =================================================================== >> --- trunk/blender/intern/cycles/kernel/svm/bsdf_ashikhmin_velvet.h >> 2012-10-10 14:28:47 UTC (rev 51266) >> +++ trunk/blender/intern/cycles/kernel/svm/bsdf_ashikhmin_velvet.h >> 2012-10-10 15:56:43 UTC (rev 51267) >> @@ -58,7 +58,7 @@ >> __device float3 bsdf_ashikhmin_velvet_eval_reflect(const ShaderData *sd, >> const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf) >> { >> float m_invsigma2 = sc->data0; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> float cosNO = dot(m_N, I); >> float cosNI = dot(m_N, omega_in); >> @@ -106,7 +106,7 @@ >> __device int bsdf_ashikhmin_velvet_sample(const ShaderData *sd, const >> ShaderClosure *sc, float randu, float randv, float3 *eval, float3 *omega_in, >> float3 *domega_in_dx, float3 *domega_in_dy, float *pdf) >> { >> float m_invsigma2 = sc->data0; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> // we are viewing the surface from above - send a ray out with uniform >> // distribution over the hemisphere >> >> Modified: trunk/blender/intern/cycles/kernel/svm/bsdf_diffuse.h >> =================================================================== >> --- trunk/blender/intern/cycles/kernel/svm/bsdf_diffuse.h 2012-10-10 >> 14:28:47 UTC (rev 51266) >> +++ trunk/blender/intern/cycles/kernel/svm/bsdf_diffuse.h 2012-10-10 >> 15:56:43 UTC (rev 51267) >> @@ -53,7 +53,7 @@ >> >> __device float3 bsdf_diffuse_eval_reflect(const ShaderData *sd, const >> ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf) >> { >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> float cos_pi = fmaxf(dot(m_N, omega_in), 0.0f) * M_1_PI_F; >> *pdf = cos_pi; >> @@ -72,7 +72,7 @@ >> >> __device int bsdf_diffuse_sample(const ShaderData *sd, const ShaderClosure >> *sc, float randu, float randv, float3 *eval, float3 *omega_in, float3 >> *domega_in_dx, float3 *domega_in_dy, float *pdf) >> { >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> // distribution over the hemisphere >> sample_cos_hemisphere(m_N, randu, randv, omega_in, pdf); >> @@ -116,7 +116,7 @@ >> >> __device float3 bsdf_translucent_eval_transmit(const ShaderData *sd, const >> ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf) >> { >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> float cos_pi = fmaxf(-dot(m_N, omega_in), 0.0f) * M_1_PI_F; >> *pdf = cos_pi; >> @@ -130,7 +130,7 @@ >> >> __device int bsdf_translucent_sample(const ShaderData *sd, const >> ShaderClosure *sc, float randu, float randv, float3 *eval, float3 *omega_in, >> float3 *domega_in_dx, float3 *domega_in_dy, float *pdf) >> { >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> // we are viewing the surface from the right side - send a ray out >> with cosine >> // distribution over the hemisphere >> >> Modified: trunk/blender/intern/cycles/kernel/svm/bsdf_microfacet.h >> =================================================================== >> --- trunk/blender/intern/cycles/kernel/svm/bsdf_microfacet.h 2012-10-10 >> 14:28:47 UTC (rev 51266) >> +++ trunk/blender/intern/cycles/kernel/svm/bsdf_microfacet.h 2012-10-10 >> 15:56:43 UTC (rev 51267) >> @@ -76,7 +76,7 @@ >> float m_ag = sc->data0; >> //float m_eta = sc->data1; >> int m_refractive = sc->type == >> CLOSURE_BSDF_MICROFACET_GGX_REFRACTION_ID; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> if(m_refractive) return make_float3 (0, 0, 0); >> float cosNO = dot(m_N, I); >> @@ -113,7 +113,7 @@ >> float m_ag = sc->data0; >> float m_eta = sc->data1; >> int m_refractive = sc->type == >> CLOSURE_BSDF_MICROFACET_GGX_REFRACTION_ID; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> if(!m_refractive) return make_float3 (0, 0, 0); >> float cosNO = dot(m_N, I); >> @@ -154,7 +154,7 @@ >> float m_ag = sc->data0; >> float m_eta = sc->data1; >> int m_refractive = sc->type == >> CLOSURE_BSDF_MICROFACET_GGX_REFRACTION_ID; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> float cosNO = dot(m_N, sd->I); >> if(cosNO > 0) { >> @@ -302,7 +302,7 @@ >> float m_ab = sc->data0; >> //float m_eta = sc->data1; >> int m_refractive = sc->type == >> CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> if(m_refractive) return make_float3 (0, 0, 0); >> float cosNO = dot(m_N, I); >> @@ -341,7 +341,7 @@ >> float m_ab = sc->data0; >> float m_eta = sc->data1; >> int m_refractive = sc->type == >> CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> if(!m_refractive) return make_float3 (0, 0, 0); >> float cosNO = dot(m_N, I); >> @@ -384,7 +384,7 @@ >> float m_ab = sc->data0; >> float m_eta = sc->data1; >> int m_refractive = sc->type == >> CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> float cosNO = dot(m_N, sd->I); >> if(cosNO > 0) { >> >> Modified: trunk/blender/intern/cycles/kernel/svm/bsdf_oren_nayar.h >> =================================================================== >> --- trunk/blender/intern/cycles/kernel/svm/bsdf_oren_nayar.h 2012-10-10 >> 14:28:47 UTC (rev 51266) >> +++ trunk/blender/intern/cycles/kernel/svm/bsdf_oren_nayar.h 2012-10-10 >> 15:56:43 UTC (rev 51267) >> @@ -57,9 +57,9 @@ >> >> __device float3 bsdf_oren_nayar_eval_reflect(const ShaderData *sd, const >> ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf) >> { >> - if (dot(sd->N, omega_in) > 0.0f) { >> + if (dot(sc->N, omega_in) > 0.0f) { >> *pdf = 0.5f * M_1_PI_F; >> - return bsdf_oren_nayar_get_intensity(sc, sd->N, I, omega_in); >> + return bsdf_oren_nayar_get_intensity(sc, sc->N, I, omega_in); >> } >> else { >> *pdf = 0.0f; >> @@ -79,15 +79,15 @@ >> >> __device int bsdf_oren_nayar_sample(const ShaderData *sd, const >> ShaderClosure *sc, float randu, float randv, float3 *eval, float3 *omega_in, >> float3 *domega_in_dx, float3 *domega_in_dy, float *pdf) >> { >> - sample_uniform_hemisphere(sd->N, randu, randv, omega_in, pdf); >> + sample_uniform_hemisphere(sc->N, randu, randv, omega_in, pdf); >> >> if (dot(sd->Ng, *omega_in) > 0.0f) { >> - *eval = bsdf_oren_nayar_get_intensity(sc, sd->N, sd->I, >> *omega_in); >> + *eval = bsdf_oren_nayar_get_intensity(sc, sc->N, sd->I, >> *omega_in); >> >> #ifdef __RAY_DIFFERENTIALS__ >> // TODO: find a better approximation for the bounce >> - *domega_in_dx = (2.0f * dot(sd->N, sd->dI.dx)) * sd->N - >> sd->dI.dx; >> - *domega_in_dy = (2.0f * dot(sd->N, sd->dI.dy)) * sd->N - >> sd->dI.dy; >> + *domega_in_dx = (2.0f * dot(sc->N, sd->dI.dx)) * sc->N - >> sd->dI.dx; >> + *domega_in_dy = (2.0f * dot(sc->N, sd->dI.dy)) * sc->N - >> sd->dI.dy; >> *domega_in_dx *= 125.0f; >> *domega_in_dy *= 125.0f; >> #endif >> >> Modified: trunk/blender/intern/cycles/kernel/svm/bsdf_reflection.h >> =================================================================== >> --- trunk/blender/intern/cycles/kernel/svm/bsdf_reflection.h 2012-10-10 >> 14:28:47 UTC (rev 51266) >> +++ trunk/blender/intern/cycles/kernel/svm/bsdf_reflection.h 2012-10-10 >> 15:56:43 UTC (rev 51267) >> @@ -69,7 +69,7 @@ >> __device int bsdf_reflection_sample(const ShaderData *sd, const >> ShaderClosure *sc, float randu, float randv, float3 *eval, float3 *omega_in, >> float3 *domega_in_dx, float3 *domega_in_dy, float *pdf) >> { >> //const BsdfReflectionClosure *self = (const >> BsdfReflectionClosure*)sc->data; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> // only one direction is possible >> float cosNO = dot(m_N, sd->I); >> >> Modified: trunk/blender/intern/cycles/kernel/svm/bsdf_refraction.h >> =================================================================== >> --- trunk/blender/intern/cycles/kernel/svm/bsdf_refraction.h 2012-10-10 >> 14:28:47 UTC (rev 51266) >> +++ trunk/blender/intern/cycles/kernel/svm/bsdf_refraction.h 2012-10-10 >> 15:56:43 UTC (rev 51267) >> @@ -71,7 +71,7 @@ >> __device int bsdf_refraction_sample(const ShaderData *sd, const >> ShaderClosure *sc, float randu, float randv, float3 *eval, float3 *omega_in, >> float3 *domega_in_dx, float3 *domega_in_dy, float *pdf) >> { >> float m_eta = sc->data0; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> float3 R, T; >> #ifdef __RAY_DIFFERENTIALS__ >> >> Modified: trunk/blender/intern/cycles/kernel/svm/bsdf_ward.h >> =================================================================== >> --- trunk/blender/intern/cycles/kernel/svm/bsdf_ward.h 2012-10-10 >> 14:28:47 UTC (rev 51266) >> +++ trunk/blender/intern/cycles/kernel/svm/bsdf_ward.h 2012-10-10 >> 15:56:43 UTC (rev 51267) >> @@ -66,7 +66,7 @@ >> { >> float m_ax = sc->data0; >> float m_ay = sc->data1; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> float3 m_T = sd->T; >> >> float cosNO = dot(m_N, I); >> @@ -108,7 +108,7 @@ >> { >> float m_ax = sc->data0; >> float m_ay = sc->data1; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> float3 m_T = sd->T; >> >> float cosNO = dot(m_N, sd->I); >> >> Modified: trunk/blender/intern/cycles/kernel/svm/bsdf_westin.h >> =================================================================== >> --- trunk/blender/intern/cycles/kernel/svm/bsdf_westin.h 2012-10-10 >> 14:28:47 UTC (rev 51266) >> +++ trunk/blender/intern/cycles/kernel/svm/bsdf_westin.h 2012-10-10 >> 15:56:43 UTC (rev 51267) >> @@ -62,7 +62,7 @@ >> __device float3 bsdf_westin_backscatter_eval_reflect(const ShaderData *sd, >> const ShaderClosure *sc, const float3 I, const float3 omega_in, float *pdf) >> { >> float m_invroughness = sc->data0; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> // pdf is implicitly 0 (no indirect sampling) >> float cosNO = dot(m_N, I); >> @@ -89,7 +89,7 @@ >> __device int bsdf_westin_backscatter_sample(const ShaderData *sd, const >> ShaderClosure *sc, float randu, float randv, float3 *eval, float3 *omega_in, >> float3 *domega_in_dx, float3 *domega_in_dy, float *pdf) >> { >> float m_invroughness = sc->data0; >> - float3 m_N = sd->N; >> + float3 m_N = sc->N; >> >> float cosNO = dot(m_N, sd->I); >> if(cosNO > 0) { >> >> @@ Diff output truncated at 10240 characters. @@ >> _______________________________________________ >> Bf-blender-cvs mailing list >> [email protected] >> http://lists.blender.org/mailman/listinfo/bf-blender-cvs >> > > _______________________________________________ > Bf-blender-cvs mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-blender-cvs _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
