[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54644] branches/ge_harmony/source: Making the prepass fragment shader more consistent with the light shader by moving material properties into a struct and using the bgl naming convention .

Daniel Stokes kupomail at gmail.com
Tue Feb 19 01:06:49 CET 2013


Revision: 54644
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54644
Author:   kupoman
Date:     2013-02-19 00:06:46 +0000 (Tue, 19 Feb 2013)
Log Message:
-----------
Making the prepass fragment shader more consistent with the light shader by moving material properties into a struct and using the bgl naming convention.

Modified Paths:
--------------
    branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_prepass_frag.glsl
    branches/ge_harmony/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp

Modified: branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_prepass_frag.glsl
===================================================================
--- branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_prepass_frag.glsl	2013-02-18 23:52:19 UTC (rev 54643)
+++ branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_prepass_frag.glsl	2013-02-19 00:06:46 UTC (rev 54644)
@@ -4,55 +4,50 @@
 	bool enabled;
 };
 
+struct Material {
+	float id;
+	float diffuseParam1;
+	float diffuseParam2;
+	float hardness;
+	float specularity;
+};
 
+
 varying vec3 varnormal;
 varying vec3 varposition;
 varying vec4 varuv[8];
 varying vec4 vartangent;
-// varying vec2 vardepth;
 
 
-uniform float mat_id;
+uniform Material bgl_Material;
+uniform Texture bgl_Textures[MAX_TEX];
 
-uniform float diff_param1;
-uniform float diff_param2;
 
-uniform float hardness;
-uniform float spec_param;
-
-uniform Texture textures[MAX_TEX];
-
-
 void main()
 {
-	// vec3 n = normalize(varnormal + vec3(0.0, 0.0, 1.0));
-	// n = 0.5 * n + vec3(0.5, 0.5, 0.5);
-	// gl_FragData[0].rg = n.xy;
-	// gl_FragData[0].b = vardepth.x / vardepth.y;
-	
 	int i = 0;
 	vec3 normal = varnormal;
 	vec3 data, B;
 	for (; i < MAX_TEX; i++) {
-		if (textures[i].enabled) {
-			data = texture2D(textures[i].data, varuv[i].xy).rgb;
+		if (bgl_Textures[i].enabled) {
+			data = texture2D(bgl_Textures[i].data, varuv[i].xy).rgb;
 			data = 2.0*(data - vec3(0.5, 0.5, 0.5));
-			
+
 			B = vartangent.w * cross(varnormal, vartangent.xyz);
 			data = data.x*vartangent.xyz + data.y*B + data.z*varnormal;
 			data = normalize(data);
-			
+
 			normal = data;
 			normal = mix(normal, data, 1.0);
 			normal = normalize(normal);
 		}
 	}
-	
+
 	gl_FragData[0].rgb = normal * 0.5 + vec3(0.5, 0.5, 0.5);
-	gl_FragData[0].a = mat_id;
-	
-	gl_FragData[1].r = diff_param1;
-	gl_FragData[1].g = diff_param2;
-	gl_FragData[1].b = hardness;
-	gl_FragData[1].a = spec_param;
+	gl_FragData[0].a = bgl_Material.id;
+
+	gl_FragData[1].r = bgl_Material.diffuseParam1;
+	gl_FragData[1].g = bgl_Material.diffuseParam2;
+	gl_FragData[1].b = bgl_Material.hardness;
+	gl_FragData[1].a = bgl_Material.specularity;
 }
\ No newline at end of file

Modified: branches/ge_harmony/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
===================================================================
--- branches/ge_harmony/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp	2013-02-18 23:52:19 UTC (rev 54643)
+++ branches/ge_harmony/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp	2013-02-19 00:06:46 UTC (rev 54644)
@@ -1609,7 +1609,7 @@
 	int bind;
 	GPUShader *shader = m_prepass_shader;
 
-	bind = GPU_shader_get_uniform(shader, "mat_id");
+	bind = GPU_shader_get_uniform(shader, "bgl_Material.id");
 	int id = (mat->diff_shader << 4) + mat->spec_shader;
 	float fid = id/65335.0;
 	GPU_shader_uniform_vector(shader, bind, 1, 1, &fid);
@@ -1625,13 +1625,13 @@
 	else if (mat->diff_shader == MA_DIFF_MINNAERT)
 		dparam1 = mat->darkness / 10.0;
 
-	bind = GPU_shader_get_uniform(shader, "diff_param1");
+	bind = GPU_shader_get_uniform(shader, "bgl_Material.diffuseParam1");
 	GPU_shader_uniform_vector(shader, bind, 1, 1, &dparam1);
 
-	bind = GPU_shader_get_uniform(shader, "diff_param2");
+	bind = GPU_shader_get_uniform(shader, "bgl_Material.diffuseParam2");
 	GPU_shader_uniform_vector(shader, bind, 1, 1, &dparam2);
 
-	bind = GPU_shader_get_uniform(shader, "hardness");
+	bind = GPU_shader_get_uniform(shader, "bgl_Material.hardness");
 	float hardness;
 	if (mat->spec_shader != MA_SPEC_TOON)
 		hardness = log(bmat->hard) / log(511.0);
@@ -1639,7 +1639,7 @@
 		hardness = mat->param[2] / 10.0;
 	GPU_shader_uniform_vector(shader, bind, 1, 1, &hardness);
 
-	bind = GPU_shader_get_uniform(shader, "spec_param");
+	bind = GPU_shader_get_uniform(shader, "bgl_Material.specularity");
 	float spec_param = 0.0;
 	if (mat->spec_shader == MA_SPEC_BLINN)
 		spec_param = mat->refrac / 10.0;
@@ -1660,7 +1660,7 @@
 		if (!tex) continue;
 
 		if (mtex->mapto & MAP_NORM && tex->type == TEX_IMAGE) {
-			sprintf(name, "textures[%d].data", slot);
+			sprintf(name, "bgl_Textures[%d].data", slot);
 			bind = GPU_shader_get_uniform(shader, name);
 			gpu_tex = GPU_texture_from_blender(tex->ima, &tex->iuser, TRUE, this->GetTime(), 1);
 			GPU_texture_bind(gpu_tex, slot);
@@ -1669,7 +1669,7 @@
 		else
 			continue;
 
-		sprintf(name, "textures[%d].enabled", slot);
+		sprintf(name, "bgl_Textures[%d].enabled", slot);
 		bind = GPU_shader_get_uniform(shader, name);
 		GPU_shader_uniform_ivector(shader, bind, 1, 1, &t);
 




More information about the Bf-blender-cvs mailing list