aboutsummaryrefslogtreecommitdiff
path: root/packages/noncvs/windows/extra/Gem/examples/10.glsl/GLSL_mix.frag
diff options
context:
space:
mode:
Diffstat (limited to 'packages/noncvs/windows/extra/Gem/examples/10.glsl/GLSL_mix.frag')
-rw-r--r--packages/noncvs/windows/extra/Gem/examples/10.glsl/GLSL_mix.frag35
1 files changed, 35 insertions, 0 deletions
diff --git a/packages/noncvs/windows/extra/Gem/examples/10.glsl/GLSL_mix.frag b/packages/noncvs/windows/extra/Gem/examples/10.glsl/GLSL_mix.frag
new file mode 100644
index 00000000..ce47bf88
--- /dev/null
+++ b/packages/noncvs/windows/extra/Gem/examples/10.glsl/GLSL_mix.frag
@@ -0,0 +1,35 @@
+//jack/RYBN 2010
+#extension GL_EXT_gpu_shader4 : enable
+#extension GL_ARB_texture_rectangle : enable
+uniform sampler2DRect Ttex1;
+uniform sampler2DRect Ttex2;
+uniform sampler2DRect tex0;
+uniform float style;
+uniform float mix_factor;
+varying vec2 texcoord0;
+ivec2 size1 = textureSize2DRect(Ttex1, 0);
+ivec2 size2 = textureSize2DRect(Ttex2, 0);
+ivec2 size0 = textureSize2DRect(tex0, 0);
+
+void main (void)
+{
+ float sizeF1X = float(size1.x)/float(size0.x);
+ float sizeF1Y = float(size1.y)/float(size0.y);
+ float sizeF2X = float(size2.x)/float(size0.x);
+ float sizeF2Y = float(size2.y)/float(size0.y);
+ vec4 color1 = texture2DRect(Ttex1, vec2(texcoord0.s*sizeF1X,texcoord0.t*sizeF1Y));
+ vec4 color2 = texture2DRect(Ttex2, vec2(texcoord0.s*sizeF2X,texcoord0.t*sizeF2Y));
+ if (style == 0.) {
+ gl_FragColor = (color1 + color2);
+ } else if (style == 1.) {
+ gl_FragColor = (color1 - color2);
+ } else if (style == 2.) {
+ gl_FragColor = abs(color1 - color2);
+ } else if (style == 3.) {
+ gl_FragColor = (color1 * color2);
+ } else if (style == 4.) {
+ gl_FragColor = mix(color1,color2,mix_factor);
+ }
+
+}
+