|
@@ -4,7 +4,7 @@
|
|
|
* @author mrdoob / http://mrdoob.com/
|
|
|
*/
|
|
|
|
|
|
-var THREE = { REVISION: '77' };
|
|
|
+var THREE = { REVISION: '78dev' };
|
|
|
|
|
|
//
|
|
|
|
|
@@ -18422,71 +18422,23 @@ THREE.ImageLoader.prototype = {
|
|
|
|
|
|
load: function ( url, onLoad, onProgress, onError ) {
|
|
|
|
|
|
- if ( this.path !== undefined ) url = this.path + url;
|
|
|
-
|
|
|
- var scope = this;
|
|
|
-
|
|
|
- var cached = THREE.Cache.get( url );
|
|
|
-
|
|
|
- if ( cached !== undefined ) {
|
|
|
-
|
|
|
- scope.manager.itemStart( url );
|
|
|
-
|
|
|
- if ( onLoad ) {
|
|
|
-
|
|
|
- setTimeout( function () {
|
|
|
-
|
|
|
- onLoad( cached );
|
|
|
-
|
|
|
- scope.manager.itemEnd( url );
|
|
|
-
|
|
|
- }, 0 );
|
|
|
-
|
|
|
- } else {
|
|
|
-
|
|
|
- scope.manager.itemEnd( url );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- return cached;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
var image = document.createElement( 'img' );
|
|
|
|
|
|
- image.addEventListener( 'load', function ( event ) {
|
|
|
-
|
|
|
- THREE.Cache.add( url, this );
|
|
|
-
|
|
|
- if ( onLoad ) onLoad( this );
|
|
|
-
|
|
|
- scope.manager.itemEnd( url );
|
|
|
-
|
|
|
- }, false );
|
|
|
-
|
|
|
- if ( onProgress !== undefined ) {
|
|
|
-
|
|
|
- image.addEventListener( 'progress', function ( event ) {
|
|
|
-
|
|
|
- onProgress( event );
|
|
|
-
|
|
|
- }, false );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- image.addEventListener( 'error', function ( event ) {
|
|
|
+ var loader = new THREE.XHRLoader( this.manager );
|
|
|
+ loader.setPath( this.path );
|
|
|
+ loader.setResponseType( 'blob' );
|
|
|
+ loader.load( url, function ( blob ) {
|
|
|
|
|
|
- if ( onError ) onError( event );
|
|
|
+ image.onload = function () {
|
|
|
|
|
|
- scope.manager.itemError( url );
|
|
|
+ URL.revokeObjectURL( image.src );
|
|
|
+ if ( onLoad ) onLoad( image );
|
|
|
|
|
|
- }, false );
|
|
|
-
|
|
|
- if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;
|
|
|
+ };
|
|
|
|
|
|
- scope.manager.itemStart( url );
|
|
|
+ image.src = URL.createObjectURL( blob );
|
|
|
|
|
|
- image.src = url;
|
|
|
+ }, onProgress, onError );
|
|
|
|
|
|
return image;
|
|
|
|
|
@@ -22719,6 +22671,16 @@ THREE.Mesh.prototype = Object.assign( Object.create( THREE.Object3D.prototype ),
|
|
|
|
|
|
},
|
|
|
|
|
|
+ copy: function ( source ) {
|
|
|
+
|
|
|
+ THREE.Object3D.prototype.copy.call( this, source );
|
|
|
+
|
|
|
+ this.drawMode = source.drawMode;
|
|
|
+
|
|
|
+ return this;
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
updateMorphTargets: function () {
|
|
|
|
|
|
if ( this.geometry.morphTargets !== undefined && this.geometry.morphTargets.length > 0 ) {
|
|
@@ -24071,7 +24033,7 @@ THREE.ShaderChunk[ 'normalmap_pars_fragment' ] = "#ifdef USE_NORMALMAP\n uniform
|
|
|
|
|
|
// File:src/renderers/shaders/ShaderChunk/packing.glsl
|
|
|
|
|
|
-THREE.ShaderChunk[ 'packing' ] = "vec3 packNormalToRGB( const in vec3 normal ) {\n return normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n return 1.0 - 2.0 * rgb.xyz;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n vec4 r = vec4( fract( v * PackFactors ), v );\n r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n return dot( v, UnpackFactors );\n}\nfloat viewZToOrthoDepth( const in float viewZ, const in float near, const in float far ) {\n return ( viewZ + near ) / ( near - far );\n}\nfloat OrthoDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n return linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n return (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n return ( near * far ) / ( ( far - near ) * invClipZ - far );\n}\n";
|
|
|
+THREE.ShaderChunk[ 'packing' ] = "vec3 packNormalToRGB( const in vec3 normal ) {\n return normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n return 1.0 - 2.0 * rgb.xyz;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n vec4 r = vec4( fract( v * PackFactors ), v );\n r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n return dot( v, UnpackFactors );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n return ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n return linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n return (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n return ( near * far ) / ( ( far - near ) * invClipZ - far );\n}\n";
|
|
|
|
|
|
// File:src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl
|
|
|
|
|
@@ -25245,6 +25207,11 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
this.dispose = function() {
|
|
|
|
|
|
+ transparentObjects = [];
|
|
|
+ transparentObjectsLastIndex = -1;
|
|
|
+ opaqueObjects = [];
|
|
|
+ opaqueObjectsLastIndex = -1;
|
|
|
+
|
|
|
_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );
|
|
|
|
|
|
};
|