提交 354c02b8 编写于 作者: M Mr.doob

Updated builds.

上级 40a09205
......@@ -9166,6 +9166,10 @@
}
var shadowCamera = shadow.camera;
var shadowMatrix = shadow.matrix;
_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );
shadowCamera.position.copy( _lightPositionWorld );
_shadowMapSize.copy( shadow.mapSize );
_shadowMapSize.min( _maxShadowMapSize );
......@@ -9207,11 +9211,34 @@
_shadowMapSize.x *= 4.0;
_shadowMapSize.y *= 2.0;
// for point lights we set the shadow matrix to be a translation-only matrix
// equal to inverse of the light's position
shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );
} else {
faceCount = 1;
isPointLight = false;
_lookTarget.setFromMatrixPosition( light.target.matrixWorld );
shadowCamera.lookAt( _lookTarget );
shadowCamera.updateMatrixWorld();
shadowCamera.matrixWorldInverse.getInverse( shadowCamera.matrixWorld );
// compute shadow matrix
shadowMatrix.set(
0.5, 0.0, 0.0, 0.5,
0.0, 0.5, 0.0, 0.5,
0.0, 0.0, 0.5, 0.5,
0.0, 0.0, 0.0, 1.0
);
shadowMatrix.multiply( shadowCamera.projectionMatrix );
shadowMatrix.multiply( shadowCamera.matrixWorldInverse );
}
if ( shadow.map === null ) {
......@@ -9232,10 +9259,6 @@
}
var shadowMap = shadow.map;
var shadowMatrix = shadow.matrix;
_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );
shadowCamera.position.copy( _lightPositionWorld );
_renderer.setRenderTarget( shadowMap );
_renderer.clear();
......@@ -9251,32 +9274,14 @@
_lookTarget.add( cubeDirections[ face ] );
shadowCamera.up.copy( cubeUps[ face ] );
shadowCamera.lookAt( _lookTarget );
shadowCamera.updateMatrixWorld();
shadowCamera.matrixWorldInverse.getInverse( shadowCamera.matrixWorld );
var vpDimensions = cube2DViewPorts[ face ];
_state.viewport( vpDimensions );
} else {
_lookTarget.setFromMatrixPosition( light.target.matrixWorld );
shadowCamera.lookAt( _lookTarget );
}
shadowCamera.updateMatrixWorld();
shadowCamera.matrixWorldInverse.getInverse( shadowCamera.matrixWorld );
// compute shadow matrix
shadowMatrix.set(
0.5, 0.0, 0.0, 0.5,
0.0, 0.5, 0.0, 0.5,
0.0, 0.0, 0.5, 0.5,
0.0, 0.0, 0.0, 1.0
);
shadowMatrix.multiply( shadowCamera.projectionMatrix );
shadowMatrix.multiply( shadowCamera.matrixWorldInverse );
// update camera matrices and frustum
_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );
......@@ -21129,73 +21134,79 @@
if ( ! object.visible ) return;
if ( object.isLight ) {
var visible = object.layers.test( camera.layers );
lights.push( object );
if ( visible ) {
} else if ( object.isSprite ) {
if ( object.isLight ) {
if ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {
lights.push( object );
sprites.push( object );
} else if ( object.isSprite ) {
}
if ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {
} else if ( object.isLensFlare ) {
sprites.push( object );
lensFlares.push( object );
}
} else if ( object.isImmediateRenderObject ) {
} else if ( object.isLensFlare ) {
if ( sortObjects ) {
lensFlares.push( object );
_vector3.setFromMatrixPosition( object.matrixWorld )
.applyMatrix4( _projScreenMatrix );
} else if ( object.isImmediateRenderObject ) {
}
if ( sortObjects ) {
currentRenderList.push( object, null, object.material, _vector3.z, null );
_vector3.setFromMatrixPosition( object.matrixWorld )
.applyMatrix4( _projScreenMatrix );
} else if ( object.isMesh || object.isLine || object.isPoints ) {
}
if ( object.isSkinnedMesh ) {
currentRenderList.push( object, null, object.material, _vector3.z, null );
object.skeleton.update();
} else if ( object.isMesh || object.isLine || object.isPoints ) {
}
if ( object.isSkinnedMesh ) {
if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {
object.skeleton.update();
if ( sortObjects ) {
}
_vector3.setFromMatrixPosition( object.matrixWorld )
.applyMatrix4( _projScreenMatrix );
if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {
}
if ( sortObjects ) {
var geometry = objects.update( object );
var material = object.material;
_vector3.setFromMatrixPosition( object.matrixWorld )
.applyMatrix4( _projScreenMatrix );
if ( Array.isArray( material ) ) {
}
var groups = geometry.groups;
var geometry = objects.update( object );
var material = object.material;
for ( var i = 0, l = groups.length; i < l; i ++ ) {
if ( Array.isArray( material ) ) {
var group = groups[ i ];
var groupMaterial = material[ group.materialIndex ];
var groups = geometry.groups;
if ( groupMaterial && groupMaterial.visible ) {
for ( var i = 0, l = groups.length; i < l; i ++ ) {
var group = groups[ i ];
var groupMaterial = material[ group.materialIndex ];
currentRenderList.push( object, geometry, groupMaterial, _vector3.z, group );
if ( groupMaterial && groupMaterial.visible ) {
currentRenderList.push( object, geometry, groupMaterial, _vector3.z, group );
}
}
}
} else if ( material.visible ) {
} else if ( material.visible ) {
currentRenderList.push( object, geometry, material, _vector3.z, null );
currentRenderList.push( object, geometry, material, _vector3.z, null );
}
}
......@@ -21263,8 +21274,6 @@
function renderObject( object, scene, camera, geometry, material, group ) {
if ( object.layers.test( camera.layers ) === false ) return;
object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
object.normalMatrix.getNormalMatrix( object.modelViewMatrix );
......@@ -22241,18 +22250,7 @@
}
_lights.pointShadowMap[ pointLength ] = shadowMap;
if ( _lights.pointShadowMatrix[ pointLength ] === undefined ) {
_lights.pointShadowMatrix[ pointLength ] = new Matrix4();
}
// for point lights we set the shadow matrix to be a translation-only matrix
// equal to inverse of the light's position
_vector3.setFromMatrixPosition( light.matrixWorld ).negate();
_lights.pointShadowMatrix[ pointLength ].identity().setPosition( _vector3 );
_lights.pointShadowMatrix[ pointLength ] = light.shadow.matrix;
_lights.point[ pointLength ] = uniforms;
pointLength ++;
......
此差异已折叠。
......@@ -9160,6 +9160,10 @@ function WebGLShadowMap( _renderer, _lights, _objects, capabilities ) {
}
var shadowCamera = shadow.camera;
var shadowMatrix = shadow.matrix;
_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );
shadowCamera.position.copy( _lightPositionWorld );
_shadowMapSize.copy( shadow.mapSize );
_shadowMapSize.min( _maxShadowMapSize );
......@@ -9201,11 +9205,34 @@ function WebGLShadowMap( _renderer, _lights, _objects, capabilities ) {
_shadowMapSize.x *= 4.0;
_shadowMapSize.y *= 2.0;
// for point lights we set the shadow matrix to be a translation-only matrix
// equal to inverse of the light's position
shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );
} else {
faceCount = 1;
isPointLight = false;
_lookTarget.setFromMatrixPosition( light.target.matrixWorld );
shadowCamera.lookAt( _lookTarget );
shadowCamera.updateMatrixWorld();
shadowCamera.matrixWorldInverse.getInverse( shadowCamera.matrixWorld );
// compute shadow matrix
shadowMatrix.set(
0.5, 0.0, 0.0, 0.5,
0.0, 0.5, 0.0, 0.5,
0.0, 0.0, 0.5, 0.5,
0.0, 0.0, 0.0, 1.0
);
shadowMatrix.multiply( shadowCamera.projectionMatrix );
shadowMatrix.multiply( shadowCamera.matrixWorldInverse );
}
if ( shadow.map === null ) {
......@@ -9226,10 +9253,6 @@ function WebGLShadowMap( _renderer, _lights, _objects, capabilities ) {
}
var shadowMap = shadow.map;
var shadowMatrix = shadow.matrix;
_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );
shadowCamera.position.copy( _lightPositionWorld );
_renderer.setRenderTarget( shadowMap );
_renderer.clear();
......@@ -9245,32 +9268,14 @@ function WebGLShadowMap( _renderer, _lights, _objects, capabilities ) {
_lookTarget.add( cubeDirections[ face ] );
shadowCamera.up.copy( cubeUps[ face ] );
shadowCamera.lookAt( _lookTarget );
shadowCamera.updateMatrixWorld();
shadowCamera.matrixWorldInverse.getInverse( shadowCamera.matrixWorld );
var vpDimensions = cube2DViewPorts[ face ];
_state.viewport( vpDimensions );
} else {
_lookTarget.setFromMatrixPosition( light.target.matrixWorld );
shadowCamera.lookAt( _lookTarget );
}
shadowCamera.updateMatrixWorld();
shadowCamera.matrixWorldInverse.getInverse( shadowCamera.matrixWorld );
// compute shadow matrix
shadowMatrix.set(
0.5, 0.0, 0.0, 0.5,
0.0, 0.5, 0.0, 0.5,
0.0, 0.0, 0.5, 0.5,
0.0, 0.0, 0.0, 1.0
);
shadowMatrix.multiply( shadowCamera.projectionMatrix );
shadowMatrix.multiply( shadowCamera.matrixWorldInverse );
// update camera matrices and frustum
_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );
......@@ -21123,73 +21128,79 @@ function WebGLRenderer( parameters ) {
if ( ! object.visible ) return;
if ( object.isLight ) {
var visible = object.layers.test( camera.layers );
lights.push( object );
if ( visible ) {
} else if ( object.isSprite ) {
if ( object.isLight ) {
if ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {
lights.push( object );
sprites.push( object );
} else if ( object.isSprite ) {
}
if ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {
} else if ( object.isLensFlare ) {
sprites.push( object );
lensFlares.push( object );
}
} else if ( object.isImmediateRenderObject ) {
} else if ( object.isLensFlare ) {
if ( sortObjects ) {
lensFlares.push( object );
_vector3.setFromMatrixPosition( object.matrixWorld )
.applyMatrix4( _projScreenMatrix );
} else if ( object.isImmediateRenderObject ) {
}
if ( sortObjects ) {
currentRenderList.push( object, null, object.material, _vector3.z, null );
_vector3.setFromMatrixPosition( object.matrixWorld )
.applyMatrix4( _projScreenMatrix );
} else if ( object.isMesh || object.isLine || object.isPoints ) {
}
if ( object.isSkinnedMesh ) {
currentRenderList.push( object, null, object.material, _vector3.z, null );
object.skeleton.update();
} else if ( object.isMesh || object.isLine || object.isPoints ) {
}
if ( object.isSkinnedMesh ) {
if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {
object.skeleton.update();
if ( sortObjects ) {
}
_vector3.setFromMatrixPosition( object.matrixWorld )
.applyMatrix4( _projScreenMatrix );
if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {
}
if ( sortObjects ) {
var geometry = objects.update( object );
var material = object.material;
_vector3.setFromMatrixPosition( object.matrixWorld )
.applyMatrix4( _projScreenMatrix );
if ( Array.isArray( material ) ) {
}
var groups = geometry.groups;
var geometry = objects.update( object );
var material = object.material;
for ( var i = 0, l = groups.length; i < l; i ++ ) {
if ( Array.isArray( material ) ) {
var group = groups[ i ];
var groupMaterial = material[ group.materialIndex ];
var groups = geometry.groups;
if ( groupMaterial && groupMaterial.visible ) {
for ( var i = 0, l = groups.length; i < l; i ++ ) {
var group = groups[ i ];
var groupMaterial = material[ group.materialIndex ];
currentRenderList.push( object, geometry, groupMaterial, _vector3.z, group );
if ( groupMaterial && groupMaterial.visible ) {
currentRenderList.push( object, geometry, groupMaterial, _vector3.z, group );
}
}
}
} else if ( material.visible ) {
} else if ( material.visible ) {
currentRenderList.push( object, geometry, material, _vector3.z, null );
currentRenderList.push( object, geometry, material, _vector3.z, null );
}
}
......@@ -21257,8 +21268,6 @@ function WebGLRenderer( parameters ) {
function renderObject( object, scene, camera, geometry, material, group ) {
if ( object.layers.test( camera.layers ) === false ) return;
object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
object.normalMatrix.getNormalMatrix( object.modelViewMatrix );
......@@ -22235,18 +22244,7 @@ function WebGLRenderer( parameters ) {
}
_lights.pointShadowMap[ pointLength ] = shadowMap;
if ( _lights.pointShadowMatrix[ pointLength ] === undefined ) {
_lights.pointShadowMatrix[ pointLength ] = new Matrix4();
}
// for point lights we set the shadow matrix to be a translation-only matrix
// equal to inverse of the light's position
_vector3.setFromMatrixPosition( light.matrixWorld ).negate();
_lights.pointShadowMatrix[ pointLength ].identity().setPosition( _vector3 );
_lights.pointShadowMatrix[ pointLength ] = light.shadow.matrix;
_lights.point[ pointLength ] = uniforms;
pointLength ++;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册