[Bf-blender-cvs] [8cc123a] master: Fix T48783: OSL render errors after recent refactoring.

Brecht Van Lommel noreply at git.blender.org
Sun Jul 3 13:09:35 CEST 2016


Commit: 8cc123a387db5989714b133247c0c55aa9cb3f8c
Author: Brecht Van Lommel
Date:   Sun Jul 3 13:08:21 2016 +0200
Branches: master
https://developer.blender.org/rB8cc123a387db5989714b133247c0c55aa9cb3f8c

Fix T48783: OSL render errors after recent refactoring.

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

M	intern/cycles/kernel/osl/osl_services.cpp
M	intern/cycles/kernel/shaders/CMakeLists.txt
M	intern/cycles/kernel/shaders/node_image_texture.osl
A	intern/cycles/kernel/shaders/node_rgb_to_bw.osl
M	intern/cycles/render/nodes.cpp

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

diff --git a/intern/cycles/kernel/osl/osl_services.cpp b/intern/cycles/kernel/osl/osl_services.cpp
index ebe739e..acc6887 100644
--- a/intern/cycles/kernel/osl/osl_services.cpp
+++ b/intern/cycles/kernel/osl/osl_services.cpp
@@ -912,7 +912,7 @@ bool OSLRenderServices::texture(ustring filename,
 #endif
 	bool status;
 
-	if(filename[0] == '@') {
+	if(filename.length() && filename[0] == '@') {
 		int slot = atoi(filename.c_str() + 1);
 		float4 rgba = kernel_tex_image_interp(slot, s, 1.0f - t);
 
@@ -993,7 +993,7 @@ bool OSLRenderServices::texture3d(ustring filename,
 	}
 
 	bool status;
-	if(filename[0] == '@') {
+	if(filename.length() && filename[0] == '@') {
 		int slot = atoi(filename.c_str() + 1);
 		float4 rgba = kernel_tex_image_interp_3d(slot, P.x, P.y, P.z);
 
diff --git a/intern/cycles/kernel/shaders/CMakeLists.txt b/intern/cycles/kernel/shaders/CMakeLists.txt
index 49030f3..b43f840 100644
--- a/intern/cycles/kernel/shaders/CMakeLists.txt
+++ b/intern/cycles/kernel/shaders/CMakeLists.txt
@@ -81,6 +81,7 @@ set(SRC_OSL
 	node_wireframe.osl
 	node_hair_bsdf.osl
 	node_uv_map.osl
+	node_rgb_to_bw.osl
 )
 
 set(SRC_OSL_HEADERS
diff --git a/intern/cycles/kernel/shaders/node_image_texture.osl b/intern/cycles/kernel/shaders/node_image_texture.osl
index a004018..7cd2922 100644
--- a/intern/cycles/kernel/shaders/node_image_texture.osl
+++ b/intern/cycles/kernel/shaders/node_image_texture.osl
@@ -88,7 +88,7 @@ shader node_image_texture(
 	string color_space = "sRGB",
 	string projection = "flat",
 	string interpolation = "smartcubic",
-	string wrap = "periodic",
+	string extension = "periodic",
 	float projection_blend = 0.0,
 	int is_float = 1,
 	int use_alpha = 1,
@@ -108,7 +108,7 @@ shader node_image_texture(
 		                             use_alpha,
 		                             is_float,
 		                             interpolation,
-		                             wrap);
+		                             extension);
 	}
 	else if (projection == "box") {
 		/* object space normal */
@@ -184,7 +184,7 @@ shader node_image_texture(
 			                                          use_alpha,
 			                                          is_float,
 			                                          interpolation,
-			                                          wrap);
+			                                          extension);
 			Alpha += weight[0] * tmp_alpha;
 		}
 		if (weight[1] > 0.0) {
@@ -195,7 +195,7 @@ shader node_image_texture(
 			                                          use_alpha,
 			                                          is_float,
 			                                          interpolation,
-			                                          wrap);
+			                                          extension);
 			Alpha += weight[1] * tmp_alpha;
 		}
 		if (weight[2] > 0.0) {
@@ -206,7 +206,7 @@ shader node_image_texture(
 			                                          use_alpha,
 			                                          is_float,
 			                                          interpolation,
-			                                          wrap);
+			                                          extension);
 			Alpha += weight[2] * tmp_alpha;
 		}
 	}
@@ -219,7 +219,7 @@ shader node_image_texture(
 		                             use_alpha,
 		                             is_float,
 		                             interpolation,
-		                             wrap);
+		                             extension);
 	}
 	else if (projection == "tube") {
 		point projected = map_to_tube(texco_remap_square(p));
@@ -230,6 +230,6 @@ shader node_image_texture(
 		                             use_alpha,
 		                             is_float,
 		                             interpolation,
-		                             wrap);
+		                             extension);
 	}
 }
diff --git a/intern/cycles/kernel/shaders/node_rgb_to_bw.osl b/intern/cycles/kernel/shaders/node_rgb_to_bw.osl
new file mode 100644
index 0000000..903dfcd
--- /dev/null
+++ b/intern/cycles/kernel/shaders/node_rgb_to_bw.osl
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2011-2013 Blender Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "stdosl.h"
+
+shader node_rgb_to_bw(
+	color Color = 0.0,
+	output float Val = 0.0)
+{
+	Val = Color[0] * 0.2126 + Color[1] * 0.7152 + Color[2] * 0.0722;
+}
+
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index b38135f..15b55d1 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -1596,7 +1596,7 @@ void RGBToBWNode::compile(SVMCompiler& compiler)
 
 void RGBToBWNode::compile(OSLCompiler& compiler)
 {
-	compiler.add(this, "node_convert_from_color");
+	compiler.add(this, "node_rgb_to_bw");
 }
 
 /* Convert */




More information about the Bf-blender-cvs mailing list