[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60441] trunk/blender/source/blender: Fix #36882: cycles gamma node not working with glsl materials.

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Sep 30 14:11:28 CEST 2013


Revision: 60441
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60441
Author:   blendix
Date:     2013-09-30 12:11:27 +0000 (Mon, 30 Sep 2013)
Log Message:
-----------
Fix #36882: cycles gamma node not working with glsl materials.

Modified Paths:
--------------
    trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_gamma.c

Modified: trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl
===================================================================
--- trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl	2013-09-30 12:11:25 UTC (rev 60440)
+++ trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl	2013-09-30 12:11:27 UTC (rev 60441)
@@ -2134,6 +2134,20 @@
 	result = fresnel_dielectric(I, N, (gl_FrontFacing)? eta: 1.0/eta);
 }
 
+/* gamma */
+
+void node_gamma(vec4 col, float gamma, out vec4 outcol)
+{
+	outcol = col;
+
+	if(col.r > 0.0)
+		outcol.r = compatible_pow(col.r, gamma);
+	if(col.g > 0.0)
+		outcol.g = compatible_pow(col.g, gamma);
+	if(col.b > 0.0)
+		outcol.b = compatible_pow(col.b, gamma);
+}
+
 /* geometry */
 
 void node_attribute(vec3 attr_uv, out vec4 outcol, out vec3 outvec, out float outf)

Modified: trunk/blender/source/blender/nodes/shader/nodes/node_shader_gamma.c
===================================================================
--- trunk/blender/source/blender/nodes/shader/nodes/node_shader_gamma.c	2013-09-30 12:11:25 UTC (rev 60440)
+++ trunk/blender/source/blender/nodes/shader/nodes/node_shader_gamma.c	2013-09-30 12:11:27 UTC (rev 60441)
@@ -41,6 +41,11 @@
 	{	-1, 0, ""	}
 };
 
+static int node_shader_gpu_gamma(GPUMaterial *mat, bNode *UNUSED(node), bNodeExecData *UNUSED(execdata), GPUNodeStack *in, GPUNodeStack *out)
+{
+	return GPU_stack_link(mat, "node_gamma", in, out);
+}
+
 void register_node_type_sh_gamma(void)
 {
 	static bNodeType ntype;
@@ -50,6 +55,7 @@
 	node_type_socket_templates(&ntype, sh_node_gamma_in, sh_node_gamma_out);
 	node_type_init(&ntype, NULL);
 	node_type_storage(&ntype, "", NULL, NULL);
+	node_type_gpu(&ntype, node_shader_gpu_gamma);
 	
 	nodeRegisterType(&ntype);
 }




More information about the Bf-blender-cvs mailing list