|
@@ -199,9 +199,11 @@ THREE.Projector = function () {
|
|
|
_vertex.positionWorld.copy( vertices[ v ] ).applyMatrix4( _modelMatrix );
|
|
|
_vertex.positionScreen.copy( _vertex.positionWorld ).applyMatrix4( _viewProjectionMatrix );
|
|
|
|
|
|
- _vertex.positionScreen.x /= _vertex.positionScreen.w;
|
|
|
- _vertex.positionScreen.y /= _vertex.positionScreen.w;
|
|
|
- _vertex.positionScreen.z /= _vertex.positionScreen.w;
|
|
|
+ var invW = 1 / _vertex.positionScreen.w;
|
|
|
+
|
|
|
+ _vertex.positionScreen.x *= invW;
|
|
|
+ _vertex.positionScreen.y *= invW;
|
|
|
+ _vertex.positionScreen.z *= invW;
|
|
|
|
|
|
_vertex.visible = ! ( _vertex.positionScreen.x < -1 || _vertex.positionScreen.x > 1 ||
|
|
|
_vertex.positionScreen.y < -1 || _vertex.positionScreen.y > 1 ||
|
|
@@ -432,14 +434,16 @@ THREE.Projector = function () {
|
|
|
_vector4.set( _modelMatrix.elements[12], _modelMatrix.elements[13], _modelMatrix.elements[14], 1 );
|
|
|
_vector4.applyMatrix4( _viewProjectionMatrix );
|
|
|
|
|
|
- _vector4.z /= _vector4.w;
|
|
|
+ var invW = 1 / _vector4.w;
|
|
|
+
|
|
|
+ _vector4.z *= invW;
|
|
|
|
|
|
if ( _vector4.z > 0 && _vector4.z < 1 ) {
|
|
|
|
|
|
_particle = getNextParticleInPool();
|
|
|
_particle.id = object.id;
|
|
|
- _particle.x = _vector4.x / _vector4.w;
|
|
|
- _particle.y = _vector4.y / _vector4.w;
|
|
|
+ _particle.x = _vector4.x * invW;
|
|
|
+ _particle.y = _vector4.y * invW;
|
|
|
_particle.z = _vector4.z;
|
|
|
_particle.object = object;
|
|
|
|