// Parameter lines go here: #pragma parameter SCANTHICK "Scanline Thickness" 2.0 2.0 4.0 2.0 #pragma parameter INTENSITY "Scanline Intensity" 0.15 0.0 1.0 0.01 #pragma parameter BRIGHTBOOST "Luminance Boost" 0.15 0.0 1.0 0.01 #if defined(VERTEX) #if __VERSION__ >= 130 #define COMPAT_VARYING out #define COMPAT_ATTRIBUTE in #define COMPAT_TEXTURE texture #else #define COMPAT_VARYING varying #define COMPAT_ATTRIBUTE attribute #define COMPAT_TEXTURE texture2D #endif #ifdef GL_ES #define COMPAT_PRECISION mediump #else #define COMPAT_PRECISION #endif COMPAT_ATTRIBUTE vec4 VertexCoord; COMPAT_ATTRIBUTE vec4 COLOR; COMPAT_ATTRIBUTE vec4 TexCoord; COMPAT_VARYING vec4 COL0; COMPAT_VARYING vec4 TEX0; vec4 _oPosition1; uniform mat4 MVPMatrix; uniform COMPAT_PRECISION int FrameDirection; uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; void main() { gl_Position = MVPMatrix * VertexCoord; COL0 = COLOR; TEX0.xy = TexCoord.xy * 1.00001; } #elif defined(FRAGMENT) #if __VERSION__ >= 130 #define COMPAT_VARYING in #define COMPAT_TEXTURE texture out vec4 FragColor; #else #define COMPAT_VARYING varying #define FragColor gl_FragColor #define COMPAT_TEXTURE texture2D #endif #ifdef GL_ES #ifdef GL_FRAGMENT_PRECISION_HIGH precision highp float; #else precision mediump float; #endif #define COMPAT_PRECISION mediump #else #define COMPAT_PRECISION #endif uniform COMPAT_PRECISION int FrameDirection; uniform COMPAT_PRECISION int FrameCount; uniform COMPAT_PRECISION vec2 OutputSize; uniform COMPAT_PRECISION vec2 TextureSize; uniform COMPAT_PRECISION vec2 InputSize; uniform sampler2D Texture; COMPAT_VARYING vec4 TEX0; // compatibility #defines #define Source Texture #define vTexCoord TEX0.xy #define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize #define OutputSize vec4(OutputSize, 1.0 / OutputSize) #ifdef PARAMETER_UNIFORM // All parameter floats need to have COMPAT_PRECISION in front of them uniform COMPAT_PRECISION float SCANTHICK; uniform COMPAT_PRECISION float INTENSITY; uniform COMPAT_PRECISION float BRIGHTBOOST; #else #define SCANTHICK 2.0 #define INTENSITY 0.15 #define BRIGHTBOOST 0.15 #endif void main() { vec3 texel = COMPAT_TEXTURE(Texture, TEX0.xy).rgb; vec3 pixelHigh = ((1.0 + BRIGHTBOOST) - (0.2 * texel)) * texel; vec3 pixelLow = ((1.0 - INTENSITY) + (0.1 * texel)) * texel; float selectY = mod(TEX0.y * SCANTHICK * TextureSize.y, 2.0); float selectHigh = step(1.0, selectY); float selectLow = 1.0 - selectHigh; vec3 pixelColor = (selectLow * pixelLow) + (selectHigh * pixelHigh); FragColor = vec4(pixelColor, 1.0); } #endif