Browse Source

Added brightness and saturation adjustment shader "extra".

Tapio Vierros 13 years ago
parent
commit
47435c77a4
1 changed files with 58 additions and 0 deletions
  1. 58 0
      examples/js/ShaderExtras.js

+ 58 - 0
examples/js/ShaderExtras.js

@@ -23,6 +23,7 @@
  *  fxaa
  *  fxaa
  *  luminosity
  *  luminosity
  *  colorCorrection
  *  colorCorrection
+ *  brightnessContrast
  *  hueSaturation
  *  hueSaturation
  *  normalmap
  *  normalmap
  *  ssao
  *  ssao
@@ -1337,6 +1338,63 @@ THREE.ShaderExtras = {
 
 
 	},
 	},
 
 
+	/* -------------------------------------------------------------------------
+	//	Brightness and contrast adjustment
+	//	https://github.com/evanw/glfx.js
+	//	brightness: -1 to 1 (-1 is solid black, 0 is no change, and 1 is solid white)
+	//	contrast: -1 to 1 (-1 is solid gray, 0 is no change, and 1 is maximum contrast)
+	 ------------------------------------------------------------------------- */
+
+	'brightnessContrast': {
+
+		uniforms: {
+
+			"tDiffuse"   : { type: "t", value: null },
+			"brightness" : { type: "f", value: 0 },
+			"contrast"   : { type: "f", value: 0 }
+
+		},
+
+		vertexShader: [
+
+			"varying vec2 vUv;",
+
+			"void main() {",
+
+				"vUv = uv;",
+
+				"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
+
+			"}"
+
+		].join("\n"),
+
+		fragmentShader: [
+
+			"uniform sampler2D tDiffuse;",
+			"uniform float brightness;",
+			"uniform float contrast;",
+
+			"varying vec2 vUv;",
+
+			"void main() {",
+
+				"gl_FragColor = texture2D( tDiffuse, vUv );",
+
+				"gl_FragColor.rgb += brightness;",
+
+				"if (contrast > 0.0) {",
+					"gl_FragColor.rgb = (gl_FragColor.rgb - 0.5) / (1.0 - contrast) + 0.5;",
+				"} else {",
+					"gl_FragColor.rgb = (gl_FragColor.rgb - 0.5) * (1.0 + contrast) + 0.5;",
+				"}",
+
+			"}"
+
+		].join("\n")
+
+	},
+
 	/* -------------------------------------------------------------------------
 	/* -------------------------------------------------------------------------
 	//	Hue and saturation adjustment
 	//	Hue and saturation adjustment
 	//	https://github.com/evanw/glfx.js
 	//	https://github.com/evanw/glfx.js