|
@@ -58,16 +58,12 @@ THREE.SpritePlugin = function () {
|
|
|
|
|
|
_sprite.uniforms.rotation = _gl.getUniformLocation( _sprite.program, "rotation" );
|
|
_sprite.uniforms.rotation = _gl.getUniformLocation( _sprite.program, "rotation" );
|
|
_sprite.uniforms.scale = _gl.getUniformLocation( _sprite.program, "scale" );
|
|
_sprite.uniforms.scale = _gl.getUniformLocation( _sprite.program, "scale" );
|
|
- _sprite.uniforms.alignment = _gl.getUniformLocation( _sprite.program, "alignment" );
|
|
|
|
_sprite.uniforms.halfViewport = _gl.getUniformLocation( _sprite.program, "halfViewport" );
|
|
_sprite.uniforms.halfViewport = _gl.getUniformLocation( _sprite.program, "halfViewport" );
|
|
|
|
|
|
_sprite.uniforms.color = _gl.getUniformLocation( _sprite.program, "color" );
|
|
_sprite.uniforms.color = _gl.getUniformLocation( _sprite.program, "color" );
|
|
_sprite.uniforms.map = _gl.getUniformLocation( _sprite.program, "map" );
|
|
_sprite.uniforms.map = _gl.getUniformLocation( _sprite.program, "map" );
|
|
_sprite.uniforms.opacity = _gl.getUniformLocation( _sprite.program, "opacity" );
|
|
_sprite.uniforms.opacity = _gl.getUniformLocation( _sprite.program, "opacity" );
|
|
|
|
|
|
- _sprite.uniforms.useScreenCoordinates = _gl.getUniformLocation( _sprite.program, "useScreenCoordinates" );
|
|
|
|
- _sprite.uniforms.sizeAttenuation = _gl.getUniformLocation( _sprite.program, "sizeAttenuation" );
|
|
|
|
- _sprite.uniforms.screenPosition = _gl.getUniformLocation( _sprite.program, "screenPosition" );
|
|
|
|
_sprite.uniforms.modelViewMatrix = _gl.getUniformLocation( _sprite.program, "modelViewMatrix" );
|
|
_sprite.uniforms.modelViewMatrix = _gl.getUniformLocation( _sprite.program, "modelViewMatrix" );
|
|
_sprite.uniforms.projectionMatrix = _gl.getUniformLocation( _sprite.program, "projectionMatrix" );
|
|
_sprite.uniforms.projectionMatrix = _gl.getUniformLocation( _sprite.program, "projectionMatrix" );
|
|
|
|
|
|
@@ -153,7 +149,7 @@ THREE.SpritePlugin = function () {
|
|
|
|
|
|
// update positions and sort
|
|
// update positions and sort
|
|
|
|
|
|
- var i, sprite, material, screenPosition, fogType, scale = [];
|
|
|
|
|
|
+ var i, sprite, material, fogType, scale = [];
|
|
|
|
|
|
for( i = 0; i < nSprites; i ++ ) {
|
|
for( i = 0; i < nSprites; i ++ ) {
|
|
|
|
|
|
@@ -162,16 +158,8 @@ THREE.SpritePlugin = function () {
|
|
|
|
|
|
if ( ! sprite.visible || material.opacity === 0 ) continue;
|
|
if ( ! sprite.visible || material.opacity === 0 ) continue;
|
|
|
|
|
|
- if ( ! material.useScreenCoordinates ) {
|
|
|
|
-
|
|
|
|
- sprite._modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, sprite.matrixWorld );
|
|
|
|
- sprite.z = - sprite._modelViewMatrix.elements[ 14 ];
|
|
|
|
-
|
|
|
|
- } else {
|
|
|
|
-
|
|
|
|
- sprite.z = - sprite.position.z;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
|
|
+ sprite._modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, sprite.matrixWorld );
|
|
|
|
+ sprite.z = - sprite._modelViewMatrix.elements[ 14 ];
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -189,30 +177,10 @@ THREE.SpritePlugin = function () {
|
|
if ( material.map && material.map.image && material.map.image.width ) {
|
|
if ( material.map && material.map.image && material.map.image.width ) {
|
|
|
|
|
|
_gl.uniform1f( uniforms.alphaTest, material.alphaTest );
|
|
_gl.uniform1f( uniforms.alphaTest, material.alphaTest );
|
|
|
|
+ _gl.uniformMatrix4fv( uniforms.modelViewMatrix, false, sprite._modelViewMatrix.elements );
|
|
|
|
|
|
- if ( material.useScreenCoordinates === true ) {
|
|
|
|
-
|
|
|
|
- _gl.uniform1i( uniforms.useScreenCoordinates, 1 );
|
|
|
|
- _gl.uniform3f(
|
|
|
|
- uniforms.screenPosition,
|
|
|
|
- ( ( sprite.position.x * _renderer.devicePixelRatio ) - halfViewportWidth ) / halfViewportWidth,
|
|
|
|
- ( halfViewportHeight - ( sprite.position.y * _renderer.devicePixelRatio ) ) / halfViewportHeight,
|
|
|
|
- Math.max( 0, Math.min( 1, sprite.position.z ) )
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- scale[ 0 ] = _renderer.devicePixelRatio * sprite.scale.x;
|
|
|
|
- scale[ 1 ] = _renderer.devicePixelRatio * sprite.scale.y;
|
|
|
|
-
|
|
|
|
- } else {
|
|
|
|
-
|
|
|
|
- _gl.uniform1i( uniforms.useScreenCoordinates, 0 );
|
|
|
|
- _gl.uniform1i( uniforms.sizeAttenuation, material.sizeAttenuation ? 1 : 0 );
|
|
|
|
- _gl.uniformMatrix4fv( uniforms.modelViewMatrix, false, sprite._modelViewMatrix.elements );
|
|
|
|
-
|
|
|
|
- scale[ 0 ] = sprite.scale.x;
|
|
|
|
- scale[ 1 ] = sprite.scale.y;
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
|
|
+ scale[ 0 ] = sprite.scale.x;
|
|
|
|
+ scale[ 1 ] = sprite.scale.y;
|
|
|
|
|
|
if ( scene.fog && material.fog ) {
|
|
if ( scene.fog && material.fog ) {
|
|
|
|
|
|
@@ -233,7 +201,6 @@ THREE.SpritePlugin = function () {
|
|
|
|
|
|
_gl.uniform2f( uniforms.uvScale, material.uvScale.x, material.uvScale.y );
|
|
_gl.uniform2f( uniforms.uvScale, material.uvScale.x, material.uvScale.y );
|
|
_gl.uniform2f( uniforms.uvOffset, material.uvOffset.x, material.uvOffset.y );
|
|
_gl.uniform2f( uniforms.uvOffset, material.uvOffset.x, material.uvOffset.y );
|
|
- _gl.uniform2f( uniforms.alignment, material.alignment.x, material.alignment.y );
|
|
|
|
|
|
|
|
_gl.uniform1f( uniforms.opacity, material.opacity );
|
|
_gl.uniform1f( uniforms.opacity, material.opacity );
|
|
_gl.uniform3f( uniforms.color, material.color.r, material.color.g, material.color.b );
|
|
_gl.uniform3f( uniforms.color, material.color.r, material.color.g, material.color.b );
|