diff options
author | Hamed Zaghaghi <hamed.zaghaghi@gmail.com> | 2007-10-23 00:24:26 +0400 |
---|---|---|
committer | Hamed Zaghaghi <hamed.zaghaghi@gmail.com> | 2007-10-23 00:24:26 +0400 |
commit | 21eb3e11e0d4d42d23de6c27a5cdf83d36ac0774 (patch) | |
tree | df6641f49358a6f2cb401b095a185a7e149edcc5 /source/gameengine/Rasterizer/RAS_OpenGLFilters | |
parent | e979e6ee4d509665a3746959cbff95f47b0463db (diff) |
2d-Filters feature and actuators.
Diffstat (limited to 'source/gameengine/Rasterizer/RAS_OpenGLFilters')
10 files changed, 227 insertions, 0 deletions
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Blur2DFilter.h b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Blur2DFilter.h new file mode 100644 index 00000000000..ae7f56174e6 --- /dev/null +++ b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Blur2DFilter.h @@ -0,0 +1,24 @@ +#ifndef __RAS_BLUR2DFILTER +#define __RAS_BLUR2DFILTER + +char * BlurFragmentShader=STRINGIFY( +uniform sampler2D sampler0; +uniform vec2 tc_offset[9]; + +void main(void) +{ + vec4 sample[9]; + + for (int i = 0; i < 9; i++) + { + sample[i] = texture2D(sampler0, + gl_TexCoord[0].st + tc_offset[i]); + } + + gl_FragColor = (sample[0] + (2.0*sample[1]) + sample[2] + + (2.0*sample[3]) + sample[4] + (2.0*sample[5]) + + sample[6] + (2.0*sample[7]) + sample[8]) / 13.0; +} +); +#endif + diff --git a/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Dilation2DFilter.h b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Dilation2DFilter.h new file mode 100644 index 00000000000..6fd7f867d10 --- /dev/null +++ b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Dilation2DFilter.h @@ -0,0 +1,24 @@ +#ifndef __RAS_DILATION2DFILTER +#define __RAS_DILATION2DFILTER + +char * DilationFragmentShader=STRINGIFY( +uniform sampler2D sampler0; +uniform vec2 tc_offset[9]; + +void main(void) +{ + vec4 sample[9]; + vec4 maxValue = vec4(0.0); + + for (int i = 0; i < 9; i++) + { + sample[i] = texture2D(sampler0, + gl_TexCoord[0].st + tc_offset[i]); + maxValue = max(sample[i], maxValue); + } + + gl_FragColor = maxValue; +} +); +#endif + diff --git a/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Erosion2DFilter.h b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Erosion2DFilter.h new file mode 100644 index 00000000000..a0fc7486447 --- /dev/null +++ b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Erosion2DFilter.h @@ -0,0 +1,23 @@ +#ifndef __RAS_EROSION2DFILTER +#define __RAS_EROSION2DFILTER + +char * ErosionFragmentShader=STRINGIFY( +uniform sampler2D sampler0; +uniform vec2 tc_offset[9]; + +void main(void) +{ + vec4 sample[9]; + vec4 minValue = vec4(1.0); + + for (int i = 0; i < 9; i++) + { + sample[i] = texture2D(sampler0, + gl_TexCoord[0].st + tc_offset[i]); + minValue = min(sample[i], minValue); + } + + gl_FragColor = minValue; +} +); +#endif diff --git a/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_GrayScale2DFilter.h b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_GrayScale2DFilter.h new file mode 100644 index 00000000000..c6fc4a0214d --- /dev/null +++ b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_GrayScale2DFilter.h @@ -0,0 +1,14 @@ +#ifndef __RAS_GRAYSCALE2DFILTER +#define __RAS_GRAYSCALE2DFILTER + +char * GrayScaleFragmentShader=STRINGIFY( +uniform sampler2D sampler0; + +void main(void) +{ + vec4 texcolor = texture2D(sampler0, gl_TexCoord[0].st); + float gray = dot(texcolor.rgb, vec3(0.299, 0.587, 0.114)); + gl_FragColor = vec4(gray, gray, gray, texcolor.a); +} +); +#endif diff --git a/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Invert2DFilter.h b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Invert2DFilter.h new file mode 100644 index 00000000000..34e6fe29cd3 --- /dev/null +++ b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Invert2DFilter.h @@ -0,0 +1,15 @@ +#ifndef __RAS_INVERT2DFILTER +#define __RAS_INVERT2DFILTER + +char * InvertFragmentShader=STRINGIFY( +uniform sampler2D sampler0; +uniform vec2 offset[9]; + +void main(void) +{ + vec4 texcolor = texture2D(sampler0, gl_TexCoord[0].st); + gl_FragColor.rgb = 1.0 - texcolor.rgb; + gl_FragColor.a = texcolor.a; +} +); +#endif diff --git a/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Laplacian2DFilter.h b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Laplacian2DFilter.h new file mode 100644 index 00000000000..f5b44a69c13 --- /dev/null +++ b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Laplacian2DFilter.h @@ -0,0 +1,26 @@ +#ifndef __RAS_LAPLACION2DFILTER +#define __RAS_LAPLACION2DFILTER + +char * LaplacionFragmentShader=STRINGIFY( +uniform sampler2D sampler0; +uniform vec2 tc_offset[9]; + +void main(void) +{ + vec4 sample[9]; + + for (int i = 0; i < 9; i++) + { + sample[i] = texture2D(sampler0, + gl_TexCoord[0].st + tc_offset[i]); + } + + gl_FragColor = (sample[4] * 8.0) - + (sample[0] + sample[1] + sample[2] + + sample[3] + sample[5] + + sample[6] + sample[7] + sample[8]); + gl_FragColor = vec4(gl_FragColor.rgb, 1.0); +} +); +#endif + diff --git a/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Prewitt2DFilter.h b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Prewitt2DFilter.h new file mode 100644 index 00000000000..a6897bd33d4 --- /dev/null +++ b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Prewitt2DFilter.h @@ -0,0 +1,31 @@ +#ifndef __RAS_PREWITT2DFILTER +#define __RAS_PREWITT2DFILTER + +char * PrewittFragmentShader=STRINGIFY( +uniform sampler2D sampler0; +uniform vec2 tc_offset[9]; + +void main(void) +{ + vec4 sample[9]; + + for (int i = 0; i < 9; i++) + { + sample[i] = texture2D(sampler0, + gl_TexCoord[0].st + tc_offset[i]); + } + + vec4 horizEdge = sample[2] + sample[5] + sample[8] - + (sample[0] + sample[3] + sample[6]); + + vec4 vertEdge = sample[0] + sample[1] + sample[2] - + (sample[6] + sample[7] + sample[8]); + + gl_FragColor.rgb = sqrt((horizEdge.rgb * horizEdge.rgb) + + (vertEdge.rgb * vertEdge.rgb)); + gl_FragColor.a = 1.0; +} + +); +#endif + diff --git a/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Sepia2DFilter.h b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Sepia2DFilter.h new file mode 100644 index 00000000000..cfff00e1287 --- /dev/null +++ b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Sepia2DFilter.h @@ -0,0 +1,15 @@ +#ifndef __RAS_SEPIA2DFILTER +#define __RAS_SEPIA2DFILTER + +char * SepiaFragmentShader=STRINGIFY( +uniform sampler2D sampler0; +uniform vec2 offset[9]; + +void main(void) +{ + vec4 texcolor = texture2D(sampler0, gl_TexCoord[0].st); + float gray = dot(texcolor.rgb, vec3(0.299, 0.587, 0.114)); + gl_FragColor = vec4(gray * vec3(1.2, 1.0, 0.8), texcolor.a); +} +); +#endif diff --git a/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Sharpen2DFilter.h b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Sharpen2DFilter.h new file mode 100644 index 00000000000..640983482a9 --- /dev/null +++ b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Sharpen2DFilter.h @@ -0,0 +1,25 @@ +#ifndef __RAS_SHARPEN2DFILTER +#define __RAS_SHARPEN2DFILTER + +char * SharpenFragmentShader=STRINGIFY( +uniform sampler2D sampler0; +uniform vec2 tc_offset[9]; + +void main(void) +{ + vec4 sample[9]; + + for (int i = 0; i < 9; i++) + { + sample[i] = texture2D(sampler0, + gl_TexCoord[0].st + tc_offset[i]); + } + + gl_FragColor = (sample[4] * 9.0) - + (sample[0] + sample[1] + sample[2] + + sample[3] + sample[5] + + sample[6] + sample[7] + sample[8]); +} +); +#endif + diff --git a/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Sobel2DFilter.h b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Sobel2DFilter.h new file mode 100644 index 00000000000..da1d34713c9 --- /dev/null +++ b/source/gameengine/Rasterizer/RAS_OpenGLFilters/RAS_Sobel2DFilter.h @@ -0,0 +1,30 @@ +#ifndef __RAS_SOBEL2DFILTER +#define __RAS_SOBEL2DFILTER + +char * SobelFragmentShader=STRINGIFY( +uniform sampler2D sampler0; +uniform vec2 tc_offset[9]; + +void main(void) +{ + vec4 sample[9]; + + for (int i = 0; i < 9; i++) + { + sample[i] = texture2D(sampler0, + gl_TexCoord[0].st + tc_offset[i]); + } + + vec4 horizEdge = sample[2] + (2.0*sample[5]) + sample[8] - + (sample[0] + (2.0*sample[3]) + sample[6]); + + vec4 vertEdge = sample[0] + (2.0*sample[1]) + sample[2] - + (sample[6] + (2.0*sample[7]) + sample[8]); + + gl_FragColor.rgb = sqrt((horizEdge.rgb * horizEdge.rgb) + + (vertEdge.rgb * vertEdge.rgb)); + gl_FragColor.a = 1.0; +} +); +#endif + |