[Bf-blender-cvs] [be51d671b50] master: Fix T86121: Cycles Attribute returning wrong results with OSL

Brecht Van Lommel noreply at git.blender.org
Mon Mar 15 20:47:37 CET 2021


Commit: be51d671b500e8b6881295778de7272a70504b71
Author: Brecht Van Lommel
Date:   Mon Mar 15 20:42:06 2021 +0100
Branches: master
https://developer.blender.org/rBbe51d671b500e8b6881295778de7272a70504b71

Fix T86121: Cycles Attribute returning wrong results with OSL

Fix uninitialized variable in the OSL shader.

===================================================================

M	intern/cycles/kernel/shaders/node_attribute.osl
M	intern/cycles/kernel/shaders/node_light_path.osl
M	intern/cycles/kernel/shaders/node_normal_map.osl
M	intern/cycles/kernel/shaders/node_tangent.osl

===================================================================

diff --git a/intern/cycles/kernel/shaders/node_attribute.osl b/intern/cycles/kernel/shaders/node_attribute.osl
index 205d0a21bed..b7f35956ec7 100644
--- a/intern/cycles/kernel/shaders/node_attribute.osl
+++ b/intern/cycles/kernel/shaders/node_attribute.osl
@@ -23,7 +23,7 @@ shader node_attribute(string bump_offset = "center",
                       output float Fac = 0.0,
                       output float Alpha = 0.0)
 {
-  float data[4];
+  float data[4] = {0.0, 0.0, 0.0, 0.0};
   getattribute(name, data);
   Color = color(data[0], data[1], data[2]);
   Vector = point(Color);
diff --git a/intern/cycles/kernel/shaders/node_light_path.osl b/intern/cycles/kernel/shaders/node_light_path.osl
index 4ff06915771..ba268db288c 100644
--- a/intern/cycles/kernel/shaders/node_light_path.osl
+++ b/intern/cycles/kernel/shaders/node_light_path.osl
@@ -42,23 +42,23 @@ shader node_light_path(output float IsCameraRay = 0.0,
 
   getattribute("path:ray_length", RayLength);
 
-  int ray_depth;
+  int ray_depth = 0;
   getattribute("path:ray_depth", ray_depth);
   RayDepth = (float)ray_depth;
 
-  int diffuse_depth;
+  int diffuse_depth = 0;
   getattribute("path:diffuse_depth", diffuse_depth);
   DiffuseDepth = (float)diffuse_depth;
 
-  int glossy_depth;
+  int glossy_depth = 0;
   getattribute("path:glossy_depth", glossy_depth);
   GlossyDepth = (float)glossy_depth;
 
-  int transparent_depth;
+  int transparent_depth = 0;
   getattribute("path:transparent_depth", transparent_depth);
   TransparentDepth = (float)transparent_depth;
 
-  int transmission_depth;
+  int transmission_depth = 0;
   getattribute("path:transmission_depth", transmission_depth);
   TransmissionDepth = (float)transmission_depth;
 }
diff --git a/intern/cycles/kernel/shaders/node_normal_map.osl b/intern/cycles/kernel/shaders/node_normal_map.osl
index 912960f13ab..6d4780f6dae 100644
--- a/intern/cycles/kernel/shaders/node_normal_map.osl
+++ b/intern/cycles/kernel/shaders/node_normal_map.osl
@@ -31,7 +31,7 @@ shader node_normal_map(normal NormalIn = N,
     vector tangent;
     vector ninterp;
     float tangent_sign;
-    float is_smooth;
+    float is_smooth = 0.0;
 
     getattribute("geom:is_smooth", is_smooth);
     if (!is_smooth) {
diff --git a/intern/cycles/kernel/shaders/node_tangent.osl b/intern/cycles/kernel/shaders/node_tangent.osl
index 83f19a4610b..f086fa079ec 100644
--- a/intern/cycles/kernel/shaders/node_tangent.osl
+++ b/intern/cycles/kernel/shaders/node_tangent.osl
@@ -22,7 +22,7 @@ shader node_tangent(normal NormalIn = N,
                     string axis = "z",
                     output normal Tangent = normalize(dPdu))
 {
-  vector T;
+  vector T = vector(0.0, 0.0, 0.0);
 
   if (direction_type == "uv_map") {
     getattribute(attr_name, T);



More information about the Bf-blender-cvs mailing list