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

Reply via email to