浏览代码

Deferred shading: merged color correction pass into composite one.

alteredq 12 年之前
父节点
当前提交
f067f784f2

+ 6 - 13
examples/js/DeferredHelper.js

@@ -7,10 +7,12 @@ THREE.DeferredHelper = function ( parameters ) {
 
 	var width = parameters.width;
 	var height = parameters.height;
+	var scale = parameters.scale;
 
 	var renderer = parameters.renderer;
 
 	var additiveSpecular = parameters.additiveSpecular;
+	var multiply = parameters.multiply;
 
 	//
 
@@ -407,7 +409,7 @@ THREE.DeferredHelper = function ( parameters ) {
 
 		compositePass.uniforms[ 'samplerLight' ].value = compLight.renderTarget2;
 
-		effectFXAA.uniforms[ 'resolution' ].value.set( 1 / width, 1 / height );
+		effectFXAA.uniforms[ 'resolution' ].value.set( scale / width, scale / height );
 
 	};
 
@@ -529,29 +531,20 @@ THREE.DeferredHelper = function ( parameters ) {
 		// composite
 
 		compositePass = new THREE.ShaderPass( compositeShader );
-		compositePass.needsSwap = true;
-
 		compositePass.uniforms[ 'samplerLight' ].value = compLight.renderTarget2;
+		compositePass.uniforms[ 'multiply' ].value = multiply;
 
 		// FXAA
 
 		effectFXAA = new THREE.ShaderPass( THREE.FXAAShader );
-		effectFXAA.uniforms[ 'resolution' ].value.set( 1 / width, 1 / height );
-
-		// color correction
-
-		var effectColor = new THREE.ShaderPass( THREE.ColorCorrectionShader );
-		effectColor.renderToScreen = true;
-
-		effectColor.uniforms[ 'powRGB' ].value.set( 1, 1, 1 );
-		effectColor.uniforms[ 'mulRGB' ].value.set( 2, 2, 2 );
+		effectFXAA.uniforms[ 'resolution' ].value.set( scale / width, scale / height );
+		effectFXAA.renderToScreen = true;
 
 		//
 
 		compFinal = new THREE.EffectComposer( renderer, rtFinal );
 		compFinal.addPass( compositePass );
 		compFinal.addPass( effectFXAA );
-		compFinal.addPass( effectColor );
 
 	};
 

+ 4 - 2
examples/js/ShaderDeferred.js

@@ -315,7 +315,8 @@ THREE.ShaderDeferred = {
 
 		uniforms: {
 
-			samplerLight: 	{ type: "t", value: null }
+			samplerLight: 	{ type: "t", value: null },
+			multiply:		{ type: "f", value: 1 }
 
 		},
 
@@ -323,11 +324,12 @@ THREE.ShaderDeferred = {
 
 			"varying vec2 texCoord;",
 			"uniform sampler2D samplerLight;",
+			"uniform float multiply;",
 
 			"void main() {",
 
 				"vec3 color = texture2D( samplerLight, texCoord ).xyz;",
-				"gl_FragColor = vec4( sqrt( color ), 1.0 );",
+				"gl_FragColor = vec4( multiply * sqrt( color ), 1.0 );",
 
 			"}"
 

+ 1 - 2
examples/webgl_lights_deferred_morphs.html

@@ -56,7 +56,6 @@
 
 		<script src="js/shaders/CopyShader.js"></script>
 		<script src="js/shaders/FXAAShader.js"></script>
-		<script src="js/shaders/ColorCorrectionShader.js"></script>
 
 		<script src="js/postprocessing/EffectComposer.js"></script>
 		<script src="js/postprocessing/RenderPass.js"></script>
@@ -152,7 +151,7 @@
 
 				// deferred helper
 
-				deferredHelper = new THREE.DeferredHelper( { renderer: renderer, width: SCALED_WIDTH, height: SCALED_HEIGHT, additiveSpecular: true } );
+				deferredHelper = new THREE.DeferredHelper( { renderer: renderer, width: SCALED_WIDTH, height: SCALED_HEIGHT, scale: SCALE, multiply: 2, additiveSpecular: true } );
 
 				// add lights
 

+ 1 - 2
examples/webgl_lights_deferred_pointlights.html

@@ -55,7 +55,6 @@
 
 		<script src="js/shaders/CopyShader.js"></script>
 		<script src="js/shaders/FXAAShader.js"></script>
-		<script src="js/shaders/ColorCorrectionShader.js"></script>
 
 		<script src="js/postprocessing/EffectComposer.js"></script>
 		<script src="js/postprocessing/RenderPass.js"></script>
@@ -152,7 +151,7 @@
 
 				// deferred helper
 
-				deferredHelper = new THREE.DeferredHelper( { renderer: renderer, width: SCALED_WIDTH, height: SCALED_HEIGHT, additiveSpecular: false } );
+				deferredHelper = new THREE.DeferredHelper( { renderer: renderer, width: SCALED_WIDTH, height: SCALED_HEIGHT, scale: SCALE, additiveSpecular: false, multiply: 2 } );
 
 				// add lights
 

+ 1 - 1
src/renderers/WebGLRenderer.js

@@ -6928,7 +6928,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 			}
 
 			_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );
-			_gl.bindFramebuffer( _gl.FRAMEBUFFER, null);
+			_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );
 
 		}