diff options
Diffstat (limited to 'shaders/tesseract/292.shader_test')
-rw-r--r-- | shaders/tesseract/292.shader_test | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/shaders/tesseract/292.shader_test b/shaders/tesseract/292.shader_test new file mode 100644 index 0000000..e41e28c --- /dev/null +++ b/shaders/tesseract/292.shader_test @@ -0,0 +1,123 @@ +[require] +GLSL >= 1.10 + +[vertex shader] +#version 120 +#extension GL_ARB_texture_rectangle : enable +#define flat +#define texture2DRectOffset(sampler, coords, offset) texture2DRect(sampler, coords + vec2(offset)) +#define shadow2DRectOffset(sampler, coords, offset) shadow2DRect(sampler, coords + vec2(offset)) +attribute vec4 vvertex, vtangent; + attribute vec2 vtexcoord0; + + uniform mat4 modelmatrix; + uniform mat3 modelworld; + uniform vec3 modelcamera; + uniform vec2 texscroll; + + varying vec3 nvec; + + + + varying vec2 texcoord0; + + void main(void) + { + + #define mpos vvertex + #define mquat vtangent + + vec3 mnormal = cross(mquat.xyz, vec3(mquat.y, -mquat.x, mquat.w))*2.0 + vec3(0.0, 0.0, 1.0); + + + + gl_Position = modelmatrix * mpos; + + texcoord0 = vtexcoord0 + texscroll; + + + + + + + nvec = modelworld * mnormal; + + } + +[fragment shader] +#version 120 +#extension GL_ARB_texture_rectangle : enable +#define flat +#define texture2DRectOffset(sampler, coords, offset) texture2DRect(sampler, coords + vec2(offset)) +#define shadow2DRectOffset(sampler, coords, offset) shadow2DRect(sampler, coords + vec2(offset)) +#define fragdata(loc, name, type) +#define gcolor gl_FragData[0] +#define gnormal gl_FragData[1] +#define gglow gl_FragData[2] +varying vec3 nvec; + + + uniform vec4 colorscale; + uniform vec2 fullbright; + uniform vec2 maskscale; + + uniform sampler2D tex0; + + + + + + fragdata(0, gcolor, vec4) + fragdata(1, gnormal, vec4) + fragdata(2, gglow, vec4) + + + + varying vec2 texcoord0; + uniform float aamask; + + void main(void) + { + vec4 diffuse = texture2D(tex0, texcoord0); + + + + gcolor.rgb = diffuse.rgb*colorscale.rgb; + + + + + vec3 normal = normalize(nvec); + + + + float spec = maskscale.x; + + gcolor.a = 0.5*spec; + + + float glowk = fullbright.y, colork = fullbright.x-fullbright.y; + + + + + glowk /= glowk + colork + 1.0e-3; + gcolor.rgb = gcolor.rgb * (1.0 - 2.0*glowk*(glowk - 1.0)); + #define packnorm 1.0-glowk + + + + gnormal.rgb = normal*0.5 + 0.5; + #ifdef packnorm + gnormal.a = (packnorm); + #else + gnormal.a = 1.0; + #endif + + + + + + + } + |