[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