From 22e6fb7056dcc888e9ccf768fefb6c073077a3b5 Mon Sep 17 00:00:00 2001 From: Kahrl Date: Mon, 19 Mar 2012 02:59:12 +0100 Subject: ShaderSource and silly example shaders --- .../the_darkness_of_light/opengl_fragment.asm | 17 ++++++++++ .../the_darkness_of_light/opengl_fragment.glsl | 9 +++++ .../the_darkness_of_light/opengl_vertex.asm | 38 ++++++++++++++++++++++ .../the_darkness_of_light/opengl_vertex.glsl | 16 +++++++++ 4 files changed, 80 insertions(+) create mode 100644 client/shaders/the_darkness_of_light/opengl_fragment.asm create mode 100644 client/shaders/the_darkness_of_light/opengl_fragment.glsl create mode 100644 client/shaders/the_darkness_of_light/opengl_vertex.asm create mode 100644 client/shaders/the_darkness_of_light/opengl_vertex.glsl (limited to 'client/shaders') diff --git a/client/shaders/the_darkness_of_light/opengl_fragment.asm b/client/shaders/the_darkness_of_light/opengl_fragment.asm new file mode 100644 index 000000000..8297f8ec7 --- /dev/null +++ b/client/shaders/the_darkness_of_light/opengl_fragment.asm @@ -0,0 +1,17 @@ +!!ARBfp1.0 + +#Input +ATTRIB inTexCoord = fragment.texcoord; # texture coordinates +ATTRIB inColor = fragment.color.primary; # interpolated diffuse color + +#Output +OUTPUT outColor = result.color; + +TEMP texelColor; +TXP texelColor, inTexCoord, texture, 2D; +MUL texelColor, texelColor, inColor; # multiply with color +SUB outColor, {1.0,1.0,1.0,1.0}, texelColor; +MOV outColor.w, 1.0; + +END + diff --git a/client/shaders/the_darkness_of_light/opengl_fragment.glsl b/client/shaders/the_darkness_of_light/opengl_fragment.glsl new file mode 100644 index 000000000..e447918ee --- /dev/null +++ b/client/shaders/the_darkness_of_light/opengl_fragment.glsl @@ -0,0 +1,9 @@ + +uniform sampler2D myTexture; + +void main (void) +{ + vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0])); + col *= gl_Color; + gl_FragColor = vec4(1.0-col.r, 1.0-col.g, 1.0-col.b, 1.0); +} diff --git a/client/shaders/the_darkness_of_light/opengl_vertex.asm b/client/shaders/the_darkness_of_light/opengl_vertex.asm new file mode 100644 index 000000000..adfee130e --- /dev/null +++ b/client/shaders/the_darkness_of_light/opengl_vertex.asm @@ -0,0 +1,38 @@ +!!ARBvp1.0 + +#input +ATTRIB InPos = vertex.position; +ATTRIB InColor = vertex.color; +ATTRIB InNormal = vertex.normal; +ATTRIB InTexCoord = vertex.texcoord; + +#output +OUTPUT OutPos = result.position; +OUTPUT OutColor = result.color; +OUTPUT OutTexCoord = result.texcoord; + +PARAM MVP[4] = { state.matrix.mvp }; # modelViewProjection matrix. +TEMP Temp; +TEMP TempColor; +TEMP TempCompare; + +#transform position to clip space +DP4 Temp.x, MVP[0], InPos; +DP4 Temp.y, MVP[1], InPos; +DP4 Temp.z, MVP[2], InPos; +DP4 Temp.w, MVP[3], InPos; + +# check if normal.y > 0.5 +SLT TempCompare, InNormal, {0.5,0.5,0.5,0.5}; +MUL TempCompare.z, TempCompare.y, 0.5; +SUB TempCompare.x, 1.0, TempCompare.z; +MOV TempCompare.y, TempCompare.x; +MOV TempCompare.z, TempCompare.x; + +# calculate light color +MUL OutColor, InColor, TempCompare; +MOV OutColor.w, 1.0; # we want alpha to be always 1 +MOV OutTexCoord, InTexCoord; # store texture coordinate +MOV OutPos, Temp; + +END diff --git a/client/shaders/the_darkness_of_light/opengl_vertex.glsl b/client/shaders/the_darkness_of_light/opengl_vertex.glsl new file mode 100644 index 000000000..0182c859d --- /dev/null +++ b/client/shaders/the_darkness_of_light/opengl_vertex.glsl @@ -0,0 +1,16 @@ + +uniform mat4 mWorldViewProj; +uniform mat4 mInvWorld; +uniform mat4 mTransWorld; + +void main(void) +{ + gl_Position = mWorldViewProj * gl_Vertex; + + if(gl_Normal.y > 0.5) + gl_FrontColor = gl_BackColor = gl_Color; + else + gl_FrontColor = gl_BackColor = gl_Color * 0.5; + + gl_TexCoord[0] = gl_MultiTexCoord0; +} -- cgit v1.2.3