summaryrefslogtreecommitdiff
path: root/shaders/tesseract/369.shader_test
diff options
context:
space:
mode:
Diffstat (limited to 'shaders/tesseract/369.shader_test')
-rw-r--r--shaders/tesseract/369.shader_test179
1 files changed, 179 insertions, 0 deletions
diff --git a/shaders/tesseract/369.shader_test b/shaders/tesseract/369.shader_test
new file mode 100644
index 0000000..6a50ebd
--- /dev/null
+++ b/shaders/tesseract/369.shader_test
@@ -0,0 +1,179 @@
+[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;
+ uniform mat4 lightmatrix;
+ void main(void)
+ {
+ gl_Position = lightmatrix * vvertex;
+ }
+
+[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 fragcolor gl_FragData[0]
+uniform sampler2DRect tex0, tex1, tex3 ;
+
+
+
+ uniform vec4 lightpos[2];
+ uniform vec3 lightcolor[2];
+
+
+
+
+ uniform vec3 splitcenter[3];
+ uniform vec3 splitbounds[3];
+ uniform vec3 splitscale[3];
+ uniform vec3 splitoffset[3];
+
+
+ uniform vec3 camera;
+ uniform mat4 worldmatrix;
+ uniform vec4 fogdir;
+ uniform vec3 fogcolor;
+ uniform vec2 fogdensity;
+ uniform vec4 radialfogscale;
+ uniform vec2 shadowatlasscale;
+ uniform vec4 lightscale;
+
+
+ uniform vec3 gdepthscale;
+ uniform vec3 gdepthunpackparams;
+
+ fragdata(0, fragcolor, vec4)
+
+
+
+
+
+
+
+ void main(void)
+ {
+
+ #define gfetch(sampler, coords) texture2DRect(sampler, coords)
+
+ #define accumlight(light) fragcolor.rgb = light
+ #define accumalpha(alpha) fragcolor.a = alpha
+
+
+
+ vec4 normal = gfetch(tex1, gl_FragCoord.xy);
+
+
+
+ #define alpha 1.0
+
+
+ normal.xyz = normal.xyz*2.0 - 1.0;
+
+ #define glowscale normal.a
+
+
+ vec4 diffuse = gfetch(tex0, gl_FragCoord.xy);
+
+ diffuse.rgb *= glowscale;
+
+
+
+
+
+ #define depthvals gfetch(tex3, gl_FragCoord.xy)
+
+
+ float depth = depthvals.r;
+
+ vec4 pos = worldmatrix * vec4(gl_FragCoord.xy, depth, 1.0);
+ pos.xyz /= pos.w;
+
+
+
+ float fogcoord = length(camera - pos.xyz);
+
+
+
+ vec3 camdir = normalize(camera - pos.xyz);
+ float facing = 2.0*dot(normal.xyz, camdir);
+
+
+
+
+
+ vec3 light = vec3(0.0);
+
+
+
+
+
+ vec3 light0dir = pos.xyz * lightpos[0].w - lightpos[0].xyz;
+ float light0dist2 = dot(light0dir, light0dir);
+ if(light0dist2 < 1.0)
+ {
+
+ float light0facing = dot(light0dir, normal.xyz);
+ if(light0facing < 0.0)
+ {
+ float light0invdist = inversesqrt(light0dist2);
+
+ float light0atten = light0facing * (1.0 - light0invdist);
+
+
+
+
+
+
+ float light0spec = pow(clamp(light0invdist*(dot(camdir, light0dir) - light0facing*facing), 0.0, 1.0), 16.0) * diffuse.a;
+ light += (diffuse.rgb + light0spec) * lightcolor[0] * light0atten;
+
+
+
+ }
+ }
+
+ vec3 light1dir = pos.xyz * lightpos[1].w - lightpos[1].xyz;
+ float light1dist2 = dot(light1dir, light1dir);
+ if(light1dist2 < 1.0)
+ {
+
+ float light1facing = dot(light1dir, normal.xyz);
+ if(light1facing < 0.0)
+ {
+ float light1invdist = inversesqrt(light1dist2);
+
+ float light1atten = light1facing * (1.0 - light1invdist);
+
+
+
+
+
+
+ float light1spec = pow(clamp(light1invdist*(dot(camdir, light1dir) - light1facing*facing), 0.0, 1.0), 16.0) * diffuse.a;
+ light += (diffuse.rgb + light1spec) * lightcolor[1] * light1atten;
+
+
+
+ }
+ }
+
+
+ float foglerp = clamp(exp2(fogcoord*fogdensity.x)*fogdensity.y, 0.0, 1.0);
+
+ accumlight(light*foglerp);
+ accumalpha(0.0);
+
+
+
+
+ }
+