提交 07806c89 编写于 作者: A alteredq

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).
上级 8c5f2d32
...@@ -158,9 +158,9 @@ THREE.WebGLDeferredRenderer = function ( parameters ) { ...@@ -158,9 +158,9 @@ THREE.WebGLDeferredRenderer = function ( parameters ) {
var wrapAround = originalMaterial.wrapAround !== undefined ? ( originalMaterial.wrapAround ? -1 : 1 ) : 1; var wrapAround = originalMaterial.wrapAround !== undefined ? ( originalMaterial.wrapAround ? -1 : 1 ) : 1;
var additiveSpecular = originalMaterial.metal !== undefined ? ( originalMaterial.metal ? 1 : -1 ) : -1; var additiveSpecular = originalMaterial.metal !== undefined ? ( originalMaterial.metal ? 1 : -1 ) : -1;
uniforms.emissive.value.copy( emissive ); uniforms.emissive.value.copyGammaToLinear( emissive );
uniforms.diffuse.value.copy( diffuse ); uniforms.diffuse.value.copyGammaToLinear( diffuse );
uniforms.specular.value.copy( specular ); uniforms.specular.value.copyGammaToLinear( specular );
uniforms.shininess.value = shininess; uniforms.shininess.value = shininess;
uniforms.wrapAround.value = wrapAround; uniforms.wrapAround.value = wrapAround;
uniforms.additiveSpecular.value = additiveSpecular; uniforms.additiveSpecular.value = additiveSpecular;
...@@ -314,10 +314,14 @@ THREE.WebGLDeferredRenderer = function ( parameters ) { ...@@ -314,10 +314,14 @@ THREE.WebGLDeferredRenderer = function ( parameters ) {
} }
// linear space
var intensity = light.intensity * light.intensity;
materialLight.uniforms[ "lightPos" ].value = light.position; materialLight.uniforms[ "lightPos" ].value = light.position;
materialLight.uniforms[ "lightRadius" ].value = distance; materialLight.uniforms[ "lightRadius" ].value = distance;
materialLight.uniforms[ "lightIntensity" ].value = light.intensity; materialLight.uniforms[ "lightIntensity" ].value = intensity;
materialLight.uniforms[ "lightColor" ].value = light.color; materialLight.uniforms[ "lightColor" ].value.copyGammaToLinear( light.color );
materialLight.uniforms[ "viewWidth" ].value = scaledWidth; materialLight.uniforms[ "viewWidth" ].value = scaledWidth;
materialLight.uniforms[ "viewHeight" ].value = scaledHeight; materialLight.uniforms[ "viewHeight" ].value = scaledHeight;
...@@ -361,9 +365,13 @@ THREE.WebGLDeferredRenderer = function ( parameters ) { ...@@ -361,9 +365,13 @@ THREE.WebGLDeferredRenderer = function ( parameters ) {
} ); } );
// linear space
var intensity = light.intensity * light.intensity;
materialLight.uniforms[ "lightDir" ].value = light.position; materialLight.uniforms[ "lightDir" ].value = light.position;
materialLight.uniforms[ "lightIntensity" ].value = light.intensity; materialLight.uniforms[ "lightIntensity" ].value = intensity;
materialLight.uniforms[ "lightColor" ].value = light.color; materialLight.uniforms[ "lightColor" ].value.copyGammaToLinear( light.color );
materialLight.uniforms[ "viewWidth" ].value = scaledWidth; materialLight.uniforms[ "viewWidth" ].value = scaledWidth;
materialLight.uniforms[ "viewHeight" ].value = scaledHeight; materialLight.uniforms[ "viewHeight" ].value = scaledHeight;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册