Cycles / Wavelength Node:
authorThomas Dinges <blender@dingto.org>
Mon, 10 Jun 2013 08:28:39 +0000 (08:28 +0000)
committerThomas Dinges <blender@dingto.org>
Mon, 10 Jun 2013 08:28:39 +0000 (08:28 +0000)
* Fix for OpenCL compilation, tested with Intel and nVidia. It didn't like an implicit double promotion.
* Some small variable renaming.

intern/cycles/kernel/svm/svm_wavelength.h

index 97d6f82f85e444d78ebf294ba31d057f864f71d1..4f2d5bd24925330c61c8b7c743f3bc4fba606200 100644 (file)
@@ -73,27 +73,27 @@ __device void svm_node_wavelength(ShaderData *sd, float *stack, uint wavelength,
        };
 
        float lambda_nm = stack_load_float(stack, wavelength);
-       float3 rgb;
-       
     float ii = (lambda_nm-380.0f) / 5.0f;  // scaled 0..80
     int i = float_to_int(ii);
+       float3 color;
+       
     if (i < 0 || i >= 80) {
-        rgb = make_float3(0.0f, 0.0f, 0.0f);
+        color = make_float3(0.0f, 0.0f, 0.0f);
        }
        else {
                ii -= i;
                float *c = cie_colour_match[i];
-               rgb = lerp_interp(make_float3(c[0], c[1], c[2]), make_float3(c[3], c[4], c[5]), ii);
+               color = lerp_interp(make_float3(c[0], c[1], c[2]), make_float3(c[3], c[4], c[5]), ii);
        }
        
-       rgb = xyz_to_rgb(rgb.x, rgb.y, rgb.z);
-       rgb *= 1.0/2.52;    // Empirical scale from lg to make all comps <= 1
+       color = xyz_to_rgb(color.x, color.y, color.z);
+       color *= 1.0f/2.52f;    // Empirical scale from lg to make all comps <= 1
        
-       /* Clamp to Zero if values are smaller */
-       rgb = max(rgb, make_float3(0.0f, 0.0f, 0.0f));
+       /* Clamp to zero if values are smaller */
+       color = max(color, make_float3(0.0f, 0.0f, 0.0f));
 
        if(stack_valid(color_out))
-               stack_store_float3(stack, color_out, rgb);
+               stack_store_float3(stack, color_out, color);
 }
 
 CCL_NAMESPACE_END