Преглед на файлове

WebGLDeferredRenderer: added setScale method.

This is the simplest way how to increase framerate in runtime (of course for the price of decreased visual quality).
alteredq преди 13 години
родител
ревизия
ded319658c
променени са 1 файла, в които са добавени 23 реда и са изтрити 12 реда
  1. 23 12
      examples/js/renderers/WebGLDeferredRenderer.js

+ 23 - 12
examples/js/renderers/WebGLDeferredRenderer.js

@@ -7,12 +7,12 @@ THREE.WebGLDeferredRenderer = function ( parameters ) {
 
 
 	var _this = this;
 	var _this = this;
 
 
-	var width = parameters.width !== undefined ? parameters.width : 800;
-	var height = parameters.height !== undefined ? parameters.height : 600;
-	var scale = parameters.scale !== undefined ? parameters.scale : 1;
+	var fullWidth = parameters.width !== undefined ? parameters.width : 800;
+	var fullHeight = parameters.height !== undefined ? parameters.height : 600;
+	var currentScale = parameters.scale !== undefined ? parameters.scale : 1;
 
 
-	var scaledWidth = Math.floor( scale * width );
-	var scaledHeight = Math.floor( scale * height );
+	var scaledWidth = Math.floor( currentScale * fullWidth );
+	var scaledHeight = Math.floor( currentScale * fullHeight );
 
 
 	var brightness = parameters.brightness !== undefined ? parameters.brightness : 1;
 	var brightness = parameters.brightness !== undefined ? parameters.brightness : 1;
 	var antialias = parameters.antialias !== undefined ? parameters.antialias : false;
 	var antialias = parameters.antialias !== undefined ? parameters.antialias : false;
@@ -22,7 +22,7 @@ THREE.WebGLDeferredRenderer = function ( parameters ) {
 	if ( this.renderer === undefined ) {
 	if ( this.renderer === undefined ) {
 
 
 		this.renderer = new THREE.WebGLRenderer( { alpha: false, antialias: false } );
 		this.renderer = new THREE.WebGLRenderer( { alpha: false, antialias: false } );
-		this.renderer.setSize( width, height );
+		this.renderer.setSize( fullWidth, fullHeight );
 		this.renderer.setClearColorHex( 0x000000, 0 );
 		this.renderer.setClearColorHex( 0x000000, 0 );
 
 
 		this.renderer.autoClear = false;
 		this.renderer.autoClear = false;
@@ -553,12 +553,12 @@ THREE.WebGLDeferredRenderer = function ( parameters ) {
 
 
 	};
 	};
 
 
-	this.setSize = function ( width, height ) {
+	this.setScale = function ( scale ) {
 
 
-		this.renderer.setSize( width, height );
+		currentScale = scale;
 
 
-		scaledWidth = Math.floor( scale * width );
-		scaledHeight = Math.floor( scale * height );
+		scaledWidth = Math.floor( currentScale * fullWidth );
+		scaledHeight = Math.floor( currentScale * fullHeight );
 
 
 		compNormalDepth.setSize( scaledWidth, scaledHeight );
 		compNormalDepth.setSize( scaledWidth, scaledHeight );
 		compColor.setSize( scaledWidth, scaledHeight );
 		compColor.setSize( scaledWidth, scaledHeight );
@@ -582,7 +582,18 @@ THREE.WebGLDeferredRenderer = function ( parameters ) {
 
 
 		compositePass.uniforms[ 'samplerLight' ].value = compLight.renderTarget2;
 		compositePass.uniforms[ 'samplerLight' ].value = compLight.renderTarget2;
 
 
-		effectFXAA.uniforms[ 'resolution' ].value.set( 1 / width, 1 / height );
+		effectFXAA.uniforms[ 'resolution' ].value.set( 1 / fullWidth, 1 / fullHeight );
+
+	};
+
+	this.setSize = function ( width, height ) {
+
+		fullWidth = width;
+		fullHeight = height;
+
+		this.renderer.setSize( fullWidth, fullHeight );
+
+		this.setScale( currentScale );
 
 
 	};
 	};
 
 
@@ -814,7 +825,7 @@ THREE.WebGLDeferredRenderer = function ( parameters ) {
 		// FXAA
 		// FXAA
 
 
 		effectFXAA = new THREE.ShaderPass( THREE.FXAAShader );
 		effectFXAA = new THREE.ShaderPass( THREE.FXAAShader );
-		effectFXAA.uniforms[ 'resolution' ].value.set( 1 / width, 1 / height );
+		effectFXAA.uniforms[ 'resolution' ].value.set( 1 / fullWidth, 1 / fullHeight );
 		effectFXAA.renderToScreen = true;
 		effectFXAA.renderToScreen = true;
 
 
 		//
 		//

粤ICP备19079148号