[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45754] branches/soc-2011-tomato: Cycles: added a Normal output to the texture coordinate node.

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Apr 18 18:11:49 CEST 2012


Revision: 45754
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45754
Author:   blendix
Date:     2012-04-18 16:11:48 +0000 (Wed, 18 Apr 2012)
Log Message:
-----------
Cycles: added a Normal output to the texture coordinate node. This currently
gives the object space normal, which is the same under object animation.

In the future this might become a "generated" normal so it's also stable for
deforming objects, but for now it's already useful for non-deforming objects.

Modified Paths:
--------------
    branches/soc-2011-tomato/intern/cycles/kernel/svm/svm_tex_coord.h
    branches/soc-2011-tomato/intern/cycles/kernel/svm/svm_types.h
    branches/soc-2011-tomato/intern/cycles/render/nodes.cpp
    branches/soc-2011-tomato/source/blender/gpu/intern/gpu_shader_material.glsl
    branches/soc-2011-tomato/source/blender/gpu/intern/gpu_shader_material.glsl.c
    branches/soc-2011-tomato/source/blender/nodes/shader/nodes/node_shader_tex_coord.c

Modified: branches/soc-2011-tomato/intern/cycles/kernel/svm/svm_tex_coord.h
===================================================================
--- branches/soc-2011-tomato/intern/cycles/kernel/svm/svm_tex_coord.h	2012-04-18 15:23:13 UTC (rev 45753)
+++ branches/soc-2011-tomato/intern/cycles/kernel/svm/svm_tex_coord.h	2012-04-18 16:11:48 UTC (rev 45754)
@@ -40,6 +40,15 @@
 				data = sd->P;
 			break;
 		}
+		case NODE_TEXCO_NORMAL: {
+			if(sd->object != ~0) {
+				Transform tfm = object_fetch_transform(kg, sd->object, OBJECT_INVERSE_TRANSFORM);
+				data = transform_direction(&tfm, sd->N);
+			}
+			else
+				data = sd->N;
+			break;
+		}
 		case NODE_TEXCO_CAMERA: {
 			Transform tfm = kernel_data.cam.worldtocamera;
 
@@ -85,6 +94,15 @@
 				data = sd->P + sd->dP.dx;
 			break;
 		}
+		case NODE_TEXCO_NORMAL: {
+			if(sd->object != ~0) {
+				Transform tfm = object_fetch_transform(kg, sd->object, OBJECT_INVERSE_TRANSFORM);
+				data = transform_direction(&tfm, sd->N);
+			}
+			else
+				data = sd->N;
+			break;
+		}
 		case NODE_TEXCO_CAMERA: {
 			Transform tfm = kernel_data.cam.worldtocamera;
 
@@ -133,6 +151,15 @@
 				data = sd->P + sd->dP.dy;
 			break;
 		}
+		case NODE_TEXCO_NORMAL: {
+			if(sd->object != ~0) {
+				Transform tfm = object_fetch_transform(kg, sd->object, OBJECT_INVERSE_TRANSFORM);
+				data = normalize(transform_direction(&tfm, sd->N));
+			}
+			else
+				data = sd->N;
+			break;
+		}
 		case NODE_TEXCO_CAMERA: {
 			Transform tfm = kernel_data.cam.worldtocamera;
 

Modified: branches/soc-2011-tomato/intern/cycles/kernel/svm/svm_types.h
===================================================================
--- branches/soc-2011-tomato/intern/cycles/kernel/svm/svm_types.h	2012-04-18 15:23:13 UTC (rev 45753)
+++ branches/soc-2011-tomato/intern/cycles/kernel/svm/svm_types.h	2012-04-18 16:11:48 UTC (rev 45754)
@@ -119,6 +119,7 @@
 } NodeLightPath;
 
 typedef enum NodeTexCoord {
+	NODE_TEXCO_NORMAL,
 	NODE_TEXCO_OBJECT,
 	NODE_TEXCO_CAMERA,
 	NODE_TEXCO_WINDOW,

Modified: branches/soc-2011-tomato/intern/cycles/render/nodes.cpp
===================================================================
--- branches/soc-2011-tomato/intern/cycles/render/nodes.cpp	2012-04-18 15:23:13 UTC (rev 45753)
+++ branches/soc-2011-tomato/intern/cycles/render/nodes.cpp	2012-04-18 16:11:48 UTC (rev 45754)
@@ -1503,6 +1503,7 @@
 {
 	add_input("Normal", SHADER_SOCKET_NORMAL, ShaderInput::NORMAL, true);
 	add_output("Generated", SHADER_SOCKET_POINT);
+	add_output("Normal", SHADER_SOCKET_NORMAL);
 	add_output("UV", SHADER_SOCKET_POINT);
 	add_output("Object", SHADER_SOCKET_POINT);
 	add_output("Camera", SHADER_SOCKET_POINT);
@@ -1551,6 +1552,12 @@
 		}
 	}
 
+	out = output("Normal");
+	if(!out->links.empty()) {
+		compiler.stack_assign(out);
+		compiler.add_node(texco_node, NODE_TEXCO_NORMAL, out->stack_offset);
+	}
+
 	out = output("UV");
 	if(!out->links.empty()) {
 		int attr = compiler.attribute(Attribute::STD_UV);

Modified: branches/soc-2011-tomato/source/blender/gpu/intern/gpu_shader_material.glsl
===================================================================
--- branches/soc-2011-tomato/source/blender/gpu/intern/gpu_shader_material.glsl	2012-04-18 15:23:13 UTC (rev 45753)
+++ branches/soc-2011-tomato/source/blender/gpu/intern/gpu_shader_material.glsl	2012-04-18 16:11:48 UTC (rev 45754)
@@ -2041,12 +2041,13 @@
 	backfacing = 0.0;
 }
 
-void node_tex_coord(vec3 I, vec3 N, mat4 toworld,
+void node_tex_coord(vec3 I, vec3 N, mat4 viewinvmat, mat4 obinvmat,
 	vec3 attr_orco, vec3 attr_uv,
-	out vec3 generated, out vec3 uv, out vec3 object,
+	out vec3 generated, out vec3 normal, out vec3 uv, out vec3 object,
 	out vec3 camera, out vec3 window, out vec3 reflection)
 {
 	generated = attr_orco;
+	normal = normalize((obinvmat*(viewinvmat*vec4(N, 0.0))).xyz);
 	uv = attr_uv;
 	object = I;
 	camera = I;

Modified: branches/soc-2011-tomato/source/blender/gpu/intern/gpu_shader_material.glsl.c
===================================================================
--- branches/soc-2011-tomato/source/blender/gpu/intern/gpu_shader_material.glsl.c	2012-04-18 15:23:13 UTC (rev 45753)
+++ branches/soc-2011-tomato/source/blender/gpu/intern/gpu_shader_material.glsl.c	2012-04-18 16:11:48 UTC (rev 45754)
@@ -1,1484 +1,1487 @@
 /* DataToC output of file <gpu_shader_material_glsl> */
 
-int datatoc_gpu_shader_material_glsl_size= 49395;
-char datatoc_gpu_shader_material_glsl[]= {
- 10,102,108,111, 97,116, 32,101,120,112, 95, 98,108,101,110,100,101,114, 40,
-102,108,111, 97,116, 32,102, 41, 10,123, 10,  9,114,101,116,117,114,110, 32,112,111,119, 40, 50, 46, 55, 49, 56, 50, 56, 49, 56,
- 50, 56, 52, 54, 44, 32,102, 41, 59, 10,125, 10, 10,118,111,105,100, 32,114,103, 98, 95,116,111, 95,104,115,118, 40,118,101, 99,
- 52, 32,114,103, 98, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 10,123, 10,  9,102,108,111, 97,116,
- 32, 99,109, 97,120, 44, 32, 99,109,105,110, 44, 32,104, 44, 32,115, 44, 32,118, 44, 32, 99,100,101,108,116, 97, 59, 10,  9,118,
-101, 99, 51, 32, 99, 59, 10, 10,  9, 99,109, 97,120, 32, 61, 32,109, 97,120, 40,114,103, 98, 91, 48, 93, 44, 32,109, 97,120, 40,
-114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 10,  9, 99,109,105,110, 32, 61, 32,109,105,110, 40,114,103,
- 98, 91, 48, 93, 44, 32,109,105,110, 40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 10,  9, 99,100,101,
-108,116, 97, 32, 61, 32, 99,109, 97,120, 45, 99,109,105,110, 59, 10, 10,  9,118, 32, 61, 32, 99,109, 97,120, 59, 10,  9,105,102,
- 32, 40, 99,109, 97,120, 33, 61, 48, 46, 48, 41, 10,  9,  9,115, 32, 61, 32, 99,100,101,108,116, 97, 47, 99,109, 97,120, 59, 10,
-  9,101,108,115,101, 32,123, 10,  9,  9,115, 32, 61, 32, 48, 46, 48, 59, 10,  9,  9,104, 32, 61, 32, 48, 46, 48, 59, 10,  9,125,
- 10, 10,  9,105,102, 32, 40,115, 32, 61, 61, 32, 48, 46, 48, 41, 32,123, 10,  9,  9,104, 32, 61, 32, 48, 46, 48, 59, 10,  9,125,
- 10,  9,101,108,115,101, 32,123, 10,  9,  9, 99, 32, 61, 32, 40,118,101, 99, 51, 40, 99,109, 97,120, 44, 32, 99,109, 97,120, 44,
- 32, 99,109, 97,120, 41, 32, 45, 32,114,103, 98, 46,120,121,122, 41, 47, 99,100,101,108,116, 97, 59, 10, 10,  9,  9,105,102, 32,
- 40,114,103, 98, 46,120, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 99, 91, 50, 93, 32, 45, 32, 99, 91, 49, 93, 59, 10,  9,
-  9,101,108,115,101, 32,105,102, 32, 40,114,103, 98, 46,121, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 50, 46, 48, 32, 43,
- 32, 99, 91, 48, 93, 32, 45, 32, 32, 99, 91, 50, 93, 59, 10,  9,  9,101,108,115,101, 32,104, 32, 61, 32, 52, 46, 48, 32, 43, 32,
- 99, 91, 49, 93, 32, 45, 32, 99, 91, 48, 93, 59, 10, 10,  9,  9,104, 32, 47, 61, 32, 54, 46, 48, 59, 10, 10,  9,  9,105,102, 32,
- 40,104, 60, 48, 46, 48, 41, 10,  9,  9,  9,104, 32, 43, 61, 32, 49, 46, 48, 59, 10,  9,125, 10, 10,  9,111,117,116, 99,111,108,
- 32, 61, 32,118,101, 99, 52, 40,104, 44, 32,115, 44, 32,118, 44, 32,114,103, 98, 46,119, 41, 59, 10,125, 10, 10,118,111,105,100,
- 32,104,115,118, 95,116,111, 95,114,103, 98, 40,118,101, 99, 52, 32,104,115,118, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,
-117,116, 99,111,108, 41, 10,123, 10,  9,102,108,111, 97,116, 32,105, 44, 32,102, 44, 32,112, 44, 32,113, 44, 32,116, 44, 32,104,
- 44, 32,115, 44, 32,118, 59, 10,  9,118,101, 99, 51, 32,114,103, 98, 59, 10, 10,  9,104, 32, 61, 32,104,115,118, 91, 48, 93, 59,
- 10,  9,115, 32, 61, 32,104,115,118, 91, 49, 93, 59, 10,  9,118, 32, 61, 32,104,115,118, 91, 50, 93, 59, 10, 10,  9,105,102, 40,
-115, 61, 61, 48, 46, 48, 41, 32,123, 10,  9,  9,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,118, 44, 32,118, 41, 59,
- 10,  9,125, 10,  9,101,108,115,101, 32,123, 10,  9,  9,105,102, 40,104, 61, 61, 49, 46, 48, 41, 10,  9,  9,  9,104, 32, 61, 32,
- 48, 46, 48, 59, 10,  9,  9, 10,  9,  9,104, 32, 42, 61, 32, 54, 46, 48, 59, 10,  9,  9,105, 32, 61, 32,102,108,111,111,114, 40,
-104, 41, 59, 10,  9,  9,102, 32, 61, 32,104, 32, 45, 32,105, 59, 10,  9,  9,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,102, 44,
- 32,102, 44, 32,102, 41, 59, 10,  9,  9,112, 32, 61, 32,118, 42, 40, 49, 46, 48, 45,115, 41, 59, 10,  9,  9,113, 32, 61, 32,118,
- 42, 40, 49, 46, 48, 45, 40,115, 42,102, 41, 41, 59, 10,  9,  9,116, 32, 61, 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42, 40, 49,
- 46, 48, 45,102, 41, 41, 41, 59, 10,  9,  9, 10,  9,  9,105,102, 32, 40,105, 32, 61, 61, 32, 48, 46, 48, 41, 32,114,103, 98, 32,
- 61, 32,118,101, 99, 51, 40,118, 44, 32,116, 44, 32,112, 41, 59, 10,  9,  9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61,
- 32, 49, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,113, 44, 32,118, 44, 32,112, 41, 59, 10,  9,  9,101,108,115,
-101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 50, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,118, 44,
- 32,116, 41, 59, 10,  9,  9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 51, 46, 48, 41, 32,114,103, 98, 32, 61, 32,
-118,101, 99, 51, 40,112, 44, 32,113, 44, 32,118, 41, 59, 10,  9,  9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 52,
- 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,116, 44, 32,112, 44, 32,118, 41, 59, 10,  9,  9,101,108,115,101, 32,
-114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,112, 44, 32,113, 41, 59, 10,  9,125, 10, 10,  9,111,117,116, 99,111,108,
- 32, 61, 32,118,101, 99, 52, 40,114,103, 98, 44, 32,104,115,118, 46,119, 41, 59, 10,125, 10, 10,102,108,111, 97,116, 32,115,114,
-103, 98, 95,116,111, 95,108,105,110,101, 97,114,114,103, 98, 40,102,108,111, 97,116, 32, 99, 41, 10,123, 10,  9,105,102, 40, 99,
- 32, 60, 32, 48, 46, 48, 52, 48, 52, 53, 41, 10,  9,  9,114,101,116,117,114,110, 32, 40, 99, 32, 60, 32, 48, 46, 48, 41, 63, 32,
- 48, 46, 48, 58, 32, 99, 32, 42, 32, 40, 49, 46, 48, 47, 49, 50, 46, 57, 50, 41, 59, 10,  9,101,108,115,101, 10,  9,  9,114,101,
-116,117,114,110, 32,112,111,119, 40, 40, 99, 32, 43, 32, 48, 46, 48, 53, 53, 41, 42, 40, 49, 46, 48, 47, 49, 46, 48, 53, 53, 41,
- 44, 32, 50, 46, 52, 41, 59, 10,125, 10, 10,102,108,111, 97,116, 32,108,105,110,101, 97,114,114,103, 98, 95,116,111, 95,115,114,
-103, 98, 40,102,108,111, 97,116, 32, 99, 41, 10,123, 10,  9,105,102, 40, 99, 32, 60, 32, 48, 46, 48, 48, 51, 49, 51, 48, 56, 41,
- 10,  9,  9,114,101,116,117,114,110, 32, 40, 99, 32, 60, 32, 48, 46, 48, 41, 63, 32, 48, 46, 48, 58, 32, 99, 32, 42, 32, 49, 50,

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list