From 07806c89b0933c4012d785588189dcdc14c2b435 Mon Sep 17 00:00:00 2001 From: alteredq Date: Thu, 13 Dec 2012 00:24:10 +0100 Subject: [PATCH] WebGLDeferredRenderer: trying to match better linear space lighting in WebGLRenderer. Still need to solve live material / lights parameters updates (only light position is dynamic for now). --- .../js/renderers/WebGLDeferredRenderer.js | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/examples/js/renderers/WebGLDeferredRenderer.js b/examples/js/renderers/WebGLDeferredRenderer.js index 98dd073d4c..1296c55e96 100644 --- a/examples/js/renderers/WebGLDeferredRenderer.js +++ b/examples/js/renderers/WebGLDeferredRenderer.js @@ -158,9 +158,9 @@ THREE.WebGLDeferredRenderer = function ( parameters ) { var wrapAround = originalMaterial.wrapAround !== undefined ? ( originalMaterial.wrapAround ? -1 : 1 ) : 1; var additiveSpecular = originalMaterial.metal !== undefined ? ( originalMaterial.metal ? 1 : -1 ) : -1; - uniforms.emissive.value.copy( emissive ); - uniforms.diffuse.value.copy( diffuse ); - uniforms.specular.value.copy( specular ); + uniforms.emissive.value.copyGammaToLinear( emissive ); + uniforms.diffuse.value.copyGammaToLinear( diffuse ); + uniforms.specular.value.copyGammaToLinear( specular ); uniforms.shininess.value = shininess; uniforms.wrapAround.value = wrapAround; uniforms.additiveSpecular.value = additiveSpecular; @@ -314,10 +314,14 @@ THREE.WebGLDeferredRenderer = function ( parameters ) { } + // linear space + + var intensity = light.intensity * light.intensity; + materialLight.uniforms[ "lightPos" ].value = light.position; materialLight.uniforms[ "lightRadius" ].value = distance; - materialLight.uniforms[ "lightIntensity" ].value = light.intensity; - materialLight.uniforms[ "lightColor" ].value = light.color; + materialLight.uniforms[ "lightIntensity" ].value = intensity; + materialLight.uniforms[ "lightColor" ].value.copyGammaToLinear( light.color ); materialLight.uniforms[ "viewWidth" ].value = scaledWidth; materialLight.uniforms[ "viewHeight" ].value = scaledHeight; @@ -361,9 +365,13 @@ THREE.WebGLDeferredRenderer = function ( parameters ) { } ); + // linear space + + var intensity = light.intensity * light.intensity; + materialLight.uniforms[ "lightDir" ].value = light.position; - materialLight.uniforms[ "lightIntensity" ].value = light.intensity; - materialLight.uniforms[ "lightColor" ].value = light.color; + materialLight.uniforms[ "lightIntensity" ].value = intensity; + materialLight.uniforms[ "lightColor" ].value.copyGammaToLinear( light.color ); materialLight.uniforms[ "viewWidth" ].value = scaledWidth; materialLight.uniforms[ "viewHeight" ].value = scaledHeight; -- GitLab