[Bf-blender-cvs] [0c7d2de] master: Blender Internal: Fix shader node "Camera Data" that doesn't consider orthographic view.

IRIE Shinsuke noreply at git.blender.org
Sun Nov 24 10:56:19 CET 2013


Commit: 0c7d2de38219641fc41d468eec675933e26a3602
Author: IRIE Shinsuke
Date:   Sun Nov 24 18:49:26 2013 +0900
http://developer.blender.org/rB0c7d2de38219641fc41d468eec675933e26a3602

Blender Internal: Fix shader node "Camera Data" that doesn't consider orthographic view.

Note that Cycles still needs to fix.

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

M	source/blender/gpu/shaders/gpu_shader_material.glsl
M	source/blender/nodes/shader/nodes/node_shader_camera.c

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

diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl
index f5881cd..934b81b 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -163,7 +163,7 @@ void camera(vec3 co, out vec3 outview, out float outdepth, out float outdist)
 {
 	outdepth = abs(co.z);
 	outdist = length(co);
-	outview = normalize(co);
+	outview = (gl_ProjectionMatrix[3][3] == 0.0)? normalize(co): vec3(0.0, 0.0, -1.0);
 }
 
 void math_add(float val1, float val2, out float outval)
diff --git a/source/blender/nodes/shader/nodes/node_shader_camera.c b/source/blender/nodes/shader/nodes/node_shader_camera.c
index d1ff30e..0f0f191 100644
--- a/source/blender/nodes/shader/nodes/node_shader_camera.c
+++ b/source/blender/nodes/shader/nodes/node_shader_camera.c
@@ -46,9 +46,9 @@ static void node_shader_exec_camera(void *data, int UNUSED(thread), bNode *UNUSE
 	if (data) {
 		ShadeInput *shi = ((ShaderCallData *)data)->shi;  /* Data we need for shading. */
 		
-		copy_v3_v3(out[0]->vec, shi->co);       /* get view vector */
+		copy_v3_v3(out[0]->vec, shi->view);     /* get view vector */
 		out[1]->vec[0] = fabs(shi->co[2]);      /* get view z-depth */
-		out[2]->vec[0] = normalize_v3(out[0]->vec); /* get view distance */
+		out[2]->vec[0] = len_v3(shi->co);       /* get view distance */
 	}
 }




More information about the Bf-blender-cvs mailing list