Tidy up fragment shader

This commit is contained in:
Tom Payne
2012-07-22 02:33:08 +02:00
parent ec2ab8265c
commit 511ca18b23
+30 -22
View File
@@ -41,49 +41,57 @@ ol.webgl.map.shader.Fragment = function() {
goog.base(this, [ goog.base(this, [
'precision mediump float;', 'precision mediump float;',
'', '',
'uniform mat4 uMatrix;',
'uniform float uBrightness;', 'uniform float uBrightness;',
'uniform float uContrast;', 'uniform float uContrast;',
'uniform float uHue;', 'uniform float uHue;',
'uniform float uOpacity;', 'uniform float uOpacity;',
'uniform mat4 uMatrix;',
'uniform float uSaturation;', 'uniform float uSaturation;',
'uniform sampler2D uTexture;', 'uniform sampler2D uTexture;',
'', '',
'varying vec2 vTexCoord;', 'varying vec2 vTexCoord;',
'', '',
'void main(void) {', 'void main(void) {',
'',
' vec4 texCoord = uMatrix * vec4(vTexCoord, 0., 1.);', ' vec4 texCoord = uMatrix * vec4(vTexCoord, 0., 1.);',
' vec4 color = texture2D(uTexture, texCoord.st);', ' vec4 color = texture2D(uTexture, texCoord.st);',
'', '',
' float angle = uHue * 3.14159265;', ' if (uHue != 0.) {',
' float s = sin(angle), c = cos(angle);', ' float angle = uHue * 3.14159265;',
' vec3 weights = (vec3(2.0 * c, -sqrt(3.0) * s - c, sqrt(3.0) * s - c)', ' float s = sin(angle), c = cos(angle);',
' + 1.0) / 3.0;', ' vec3 weights = (vec3(2. * c, -sqrt(3.) * s - c, sqrt(3.) * s - c)',
' float len = length(color.rgb);', ' + 1.) / 3.;',
' color.rgb = vec3(', ' color.rgb = vec3(',
' dot(color.rgb, weights.xyz),', ' dot(color.rgb, weights.xyz),',
' dot(color.rgb, weights.zxy),', ' dot(color.rgb, weights.zxy),',
' dot(color.rgb, weights.yzx)', ' dot(color.rgb, weights.yzx)',
' );', ' );',
' ', ' }',
' float average = (color.r + color.g + color.b) / 3.0;', '',
' if (uSaturation > 0.0) {', ' if (uSaturation != 0.) {',
' color.rgb += (average - color.rgb)', ' float average = (color.r + color.g + color.b) / 3.0;',
' * (1.0 - 1.0 / (1.001 - uSaturation));', ' if (uSaturation > 0.0) {',
' } else if (uSaturation < 0.0) {', ' color.rgb += (average - color.rgb)',
' color.rgb += (average - color.rgb) * (-uSaturation);', ' * (1. - 1. / (1. - uSaturation));',
' } else {',
' color.rgb += (average - color.rgb) * -uSaturation;',
' }',
' }', ' }',
'', '',
' color.rgb += uBrightness;', ' color.rgb += uBrightness;',
' if (uContrast > 0.0) {', '',
' color.rgb = (color.rgb - 0.5) / (1.0 - uContrast) + 0.5;', ' if (uContrast != 0.) {',
' } else {', ' if (uContrast > 0.0) {',
' color.rgb = (color.rgb - 0.5) * (1.0 + uContrast) + 0.5;', ' color.rgb = (color.rgb - 0.5) / (1. - uContrast) + 0.5;',
' } else {',
' color.rgb = (color.rgb - 0.5) * (1. + uContrast) + 0.5;',
' }',
' }', ' }',
'', '',
' color.a = color.a * uOpacity;', ' color.a = color.a * uOpacity;',
'', '',
' gl_FragColor = color;', ' gl_FragColor = color;',
'',
'}' '}'
].join('\n')); ].join('\n'));
}; };