瀏覽代碼

WebGLDeferredRenderer: made pointlights work with hierarchies.

alteredq 12 年之前
父節點
當前提交
91edef68e2
共有 1 個文件被更改,包括 8 次插入2 次删除
  1. 8 2
      examples/js/renderers/WebGLDeferredRenderer.js

+ 8 - 2
examples/js/renderers/WebGLDeferredRenderer.js

@@ -343,8 +343,9 @@ THREE.WebGLDeferredRenderer = function ( parameters ) {
 		// linear space
 
 		var intensity = light.intensity * light.intensity;
+		var position = light.matrixWorld.getPosition();
 
-		materialLight.uniforms[ "lightPos" ].value = light.position;
+		materialLight.uniforms[ "lightPos" ].value.copy( position );
 		materialLight.uniforms[ "lightRadius" ].value = distance;
 		materialLight.uniforms[ "lightIntensity" ].value = intensity;
 		materialLight.uniforms[ "lightColor" ].value.copyGammaToLinear( light.color );
@@ -361,7 +362,7 @@ THREE.WebGLDeferredRenderer = function ( parameters ) {
 
 		if ( light.distance > 0 ) {
 
-			meshLight.position = light.position;
+			meshLight.position.copy( position );
 			meshLight.scale.multiplyScalar( distance );
 
 		}
@@ -616,6 +617,11 @@ THREE.WebGLDeferredRenderer = function ( parameters ) {
 					lightProxy.scale.set( 1, 1, 1 ).multiplyScalar( distance );
 					if ( uniforms[ "lightRadius" ] ) uniforms[ "lightRadius" ].value = distance;
 
+					var position = originalLight.matrixWorld.getPosition();
+					uniforms[ "lightPos" ].value.copy( position );
+
+					lightProxy.position.copy( position );
+
 				}
 
 			}