diff options
Diffstat (limited to 'shaders/tesseract/497.shader_test')
-rw-r--r-- | shaders/tesseract/497.shader_test | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/shaders/tesseract/497.shader_test b/shaders/tesseract/497.shader_test new file mode 100644 index 0000000..43269af --- /dev/null +++ b/shaders/tesseract/497.shader_test @@ -0,0 +1,47 @@ +[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; + attribute vec3 vtexcoord0; + varying vec3 texcoord0; + void main(void) + { + gl_Position = vvertex; + texcoord0 = vtexcoord0; + } + +[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 rhr gl_FragData[0] +#define rhg gl_FragData[1] +#define rhb gl_FragData[2] +#define rha gl_FragData[3] +uniform sampler3D tex3, tex4, tex5, tex6; + uniform vec3 bordercenter, borderrange, borderscale; + varying vec3 texcoord0; + fragdata(0, rhr, vec4) + fragdata(1, rhg, vec4) + fragdata(2, rhb, vec4) + fragdata(3, rha, vec4) + + void main(void) + { + float outside = clamp(borderscale.z*(abs(texcoord0.z - bordercenter.z) - borderrange.z), 0.0, 1.0); + vec3 tc = vec3(texcoord0.xy, clamp(texcoord0.z, bordercenter.z - borderrange.z, bordercenter.z + borderrange.z)); + rhr = mix(texture3D(tex3, tc), vec4(0.5, 0.5, 0.5, 0.0), outside); + rhg = mix(texture3D(tex4, tc), vec4(0.5, 0.5, 0.5, 0.0), outside); + rhb = mix(texture3D(tex5, tc), vec4(0.5, 0.5, 0.5, 0.0), outside); + rha = mix(texture3D(tex6, tc), vec4(0.5, 0.5, 0.5, 0.0), outside); + } + |