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

Reply via email to