Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Color Mangler
- Author: hunterk
- License: Public domain
- */
- #pragma parameter display_gamma "Display Gamma" 2.2 0.0 10.0 0.1
- #pragma parameter target_gamma "Target Gamma" 2.2 0.0 10.0 0.1
- #pragma parameter sat "Saturation" 1.0 0.0 3.0 0.01
- #pragma parameter lum "Luminance" 1.0 0.0 5.0 0.01
- #pragma parameter cntrst "Contrast" 1.0 0.0 2.0 0.01
- #pragma parameter vignette "Vignette Toggle" 1.0 0.0 1.0 1.0
- #pragma parameter hotspot "Hotspot" 0.0 0.0 1.0 0.1
- #pragma parameter inner "Inner Ring" 0.35 0.0 1.0 0.01
- #pragma parameter outer "Outer Ring" 0.7 0.0 1.0 0.01
- #pragma parameter r "Red" 1.0 0.0 2.0 0.01
- #pragma parameter g "Green" 1.0 0.0 2.0 0.01
- #pragma parameter b "Blue" 1.0 0.0 2.0 0.01
- #pragma parameter rg "Red-Green Tint" 0.0 0.0 1.0 0.005
- #pragma parameter rb "Red-Blue Tint" 0.0 0.0 1.0 0.005
- #pragma parameter gr "Green-Red Tint" 0.0 0.0 1.0 0.005
- #pragma parameter gb "Green-Blue Tint" 0.0 0.0 1.0 0.005
- #pragma parameter br "Blue-Red Tint" 0.0 0.0 1.0 0.005
- #pragma parameter bg "Blue-Green Tint" 0.0 0.0 1.0 0.005
- #pragma parameter blr "Black-Red Tint" 0.0 0.0 1.0 0.005
- #pragma parameter blg "Black-Green Tint" 0.0 0.0 1.0 0.005
- #pragma parameter blb "Black-Blue Tint" 0.0 0.0 1.0 0.005
- #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;
- 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;
- // compatibility #defines
- #define vTexCoord TEX0.xy
- #define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize
- #define OutSize vec4(OutputSize, 1.0 / OutputSize)
- void main()
- {
- gl_Position = MVPMatrix * VertexCoord;
- TEX0.xy = TexCoord.xy;
- }
- #elif defined(FRAGMENT)
- #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
- #if __VERSION__ >= 130
- #define COMPAT_VARYING in
- #define COMPAT_TEXTURE texture
- out COMPAT_PRECISION vec4 FragColor;
- #else
- #define COMPAT_VARYING varying
- #define FragColor gl_FragColor
- #define COMPAT_TEXTURE texture2D
- #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 OutSize vec4(OutputSize, 1.0 / OutputSize)
- #ifdef PARAMETER_UNIFORM
- uniform COMPAT_PRECISION float display_gamma;
- uniform COMPAT_PRECISION float target_gamma;
- uniform COMPAT_PRECISION float sat;
- uniform COMPAT_PRECISION float lum;
- uniform COMPAT_PRECISION float cntrst;
- uniform COMPAT_PRECISION float blr;
- uniform COMPAT_PRECISION float blg;
- uniform COMPAT_PRECISION float blb;
- uniform COMPAT_PRECISION float r;
- uniform COMPAT_PRECISION float g;
- uniform COMPAT_PRECISION float b;
- uniform COMPAT_PRECISION float rg;
- uniform COMPAT_PRECISION float rb;
- uniform COMPAT_PRECISION float gr;
- uniform COMPAT_PRECISION float gb;
- uniform COMPAT_PRECISION float br;
- uniform COMPAT_PRECISION float bg;
- uniform COMPAT_PRECISION float hotspot;
- uniform COMPAT_PRECISION float vignette;
- uniform COMPAT_PRECISION float inner;
- uniform COMPAT_PRECISION float outer;
- #else
- #define display_gamma 2.2
- #define target_gamma 2.2
- #define sat 1.0
- #define lum 1.0
- #define cntrst 1.0
- #define blr 0.0
- #define blg 0.0
- #define blb 0.0
- #define r 1.0
- #define g 1.0
- #define b 1.0
- #define rg 0.0
- #define rb 0.0
- #define gr 0.0
- #define gb 0.0
- #define br 0.0
- #define bg 0.0
- #define inner 0.0
- #define outer 1.0
- #define hotspot 1.0
- #define vignette 1.0
- #endif
- void main()
- {
- vec3 vcolor = COMPAT_TEXTURE(Source, TEX0.xy).rgb;
- // a simple calculation for the vignette/hotspot effects
- vec2 mid = vec2(0.49999, 0.49999) * InputSize / TextureSize;
- vec2 middle = TEX0.xy - mid;
- float len = length(middle);
- float vig = smoothstep(inner, outer, len);
- vcolor *= (vignette > 0.5) ? (1.0 - vig) : 1.0; // Vignette
- vcolor += ((1.0 - vig) * 0.2) * hotspot; // Hotspot
- vec4 vignetted = vec4(vcolor,1.0);
- vec4 screen = pow(vignetted, vec4(target_gamma)).rgba;
- vec4 avglum = vec4(0.5);
- screen = mix(screen, avglum, (1.0 - cntrst));
- // r g b alpha ; alpha does nothing for our purposes
- mat4 color = mat4( r, rg, rb, 0.0, //red tint
- gr, g, gb, 0.0, //green tint
- br, bg, b, 0.0, //blue tint
- blr, blg, blb, 0.0); //black tint
- mat4 adjust = mat4((1.0 - sat_r) * 0.2126 + sat_r, (1.0 - sat_r) * 0.2126, (1.0 - sat_r) * 0.2126, 1.0,
- (1.0 - sat_g) * 0.7152, (1.0 - sat_g) * 0.7152 + sat_g, (1.0 - sat_g) * 0.7152, 1.0,
- (1.0 - sat_b) * 0.0722, (1.0 - sat_b) * 0.0722, (1.0 - sat_b) * 0.0722 + sat_b, 1.0,
- 0.0, 0.0, 0.0, 1.0);
- color *= adjust;
- screen = clamp(screen * lum, 0.0, 1.0);
- screen = color * screen;
- FragColor = pow(screen, vec4(1.0 / display_gamma));
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement