|
@@ -15971,7 +15971,7 @@ DataTexture3D.prototype.isDataTexture3D = true;
|
|
|
*
|
|
|
* Uniforms of a program.
|
|
|
* Those form a tree structure with a special top-level container for the root,
|
|
|
- * which you get by calling 'new WebGLUniforms( gl, program, renderer )'.
|
|
|
+ * which you get by calling 'new WebGLUniforms( gl, program )'.
|
|
|
*
|
|
|
*
|
|
|
* Properties of inner nodes including the top-level container:
|
|
@@ -15982,15 +15982,15 @@ DataTexture3D.prototype.isDataTexture3D = true;
|
|
|
*
|
|
|
* Methods of all nodes except the top-level container:
|
|
|
*
|
|
|
- * .setValue( gl, value, [renderer] )
|
|
|
+ * .setValue( gl, value, [textures] )
|
|
|
*
|
|
|
* uploads a uniform value(s)
|
|
|
- * the 'renderer' parameter is needed for sampler uniforms
|
|
|
+ * the 'textures' parameter is needed for sampler uniforms
|
|
|
*
|
|
|
*
|
|
|
- * Static methods of the top-level container (renderer factorizations):
|
|
|
+ * Static methods of the top-level container (textures factorizations):
|
|
|
*
|
|
|
- * .upload( gl, seq, values, renderer )
|
|
|
+ * .upload( gl, seq, values, textures )
|
|
|
*
|
|
|
* sets uniforms in 'seq' to 'values[id].value'
|
|
|
*
|
|
@@ -15999,16 +15999,12 @@ DataTexture3D.prototype.isDataTexture3D = true;
|
|
|
* filters 'seq' entries with corresponding entry in values
|
|
|
*
|
|
|
*
|
|
|
- * Methods of the top-level container (renderer factorizations):
|
|
|
+ * Methods of the top-level container (textures factorizations):
|
|
|
*
|
|
|
- * .setValue( gl, name, value )
|
|
|
+ * .setValue( gl, name, value, textures )
|
|
|
*
|
|
|
* sets uniform with name 'name' to 'value'
|
|
|
*
|
|
|
- * .set( gl, obj, prop )
|
|
|
- *
|
|
|
- * sets uniform from object and property with same name than uniform
|
|
|
- *
|
|
|
* .setOptional( gl, obj, prop )
|
|
|
*
|
|
|
* like .set for an optional property of the object
|
|
@@ -16020,15 +16016,6 @@ var emptyTexture2dArray = new DataTexture2DArray();
|
|
|
var emptyTexture3d = new DataTexture3D();
|
|
|
var emptyCubeTexture = new CubeTexture();
|
|
|
|
|
|
-// --- Base for inner nodes (including the root) ---
|
|
|
-
|
|
|
-function UniformContainer() {
|
|
|
-
|
|
|
- this.seq = [];
|
|
|
- this.map = {};
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
// --- Utilities ---
|
|
|
|
|
|
// Array Caches (provide typed arrays for temporary by size)
|
|
@@ -16105,7 +16092,7 @@ function copyArray( a, b ) {
|
|
|
|
|
|
// Texture unit allocation
|
|
|
|
|
|
-function allocTexUnits( renderer, n ) {
|
|
|
+function allocTexUnits( textures, n ) {
|
|
|
|
|
|
var r = arrayCacheI32[ n ];
|
|
|
|
|
@@ -16117,7 +16104,7 @@ function allocTexUnits( renderer, n ) {
|
|
|
}
|
|
|
|
|
|
for ( var i = 0; i !== n; ++ i )
|
|
|
- r[ i ] = renderer.allocTextureUnit();
|
|
|
+ r[ i ] = textures.allocateTextureUnit();
|
|
|
|
|
|
return r;
|
|
|
|
|
@@ -16337,10 +16324,10 @@ function setValue4fm( gl, v ) {
|
|
|
|
|
|
// Single texture (2D / Cube)
|
|
|
|
|
|
-function setValueT1( gl, v, renderer ) {
|
|
|
+function setValueT1( gl, v, textures ) {
|
|
|
|
|
|
var cache = this.cache;
|
|
|
- var unit = renderer.allocTextureUnit();
|
|
|
+ var unit = textures.allocateTextureUnit();
|
|
|
|
|
|
if ( cache[ 0 ] !== unit ) {
|
|
|
|
|
@@ -16349,14 +16336,14 @@ function setValueT1( gl, v, renderer ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- renderer.setTexture2D( v || emptyTexture, unit );
|
|
|
+ textures.safeSetTexture2D( v || emptyTexture, unit );
|
|
|
|
|
|
}
|
|
|
|
|
|
-function setValueT2DArray1( gl, v, renderer ) {
|
|
|
+function setValueT2DArray1( gl, v, textures ) {
|
|
|
|
|
|
var cache = this.cache;
|
|
|
- var unit = renderer.allocTextureUnit();
|
|
|
+ var unit = textures.allocateTextureUnit();
|
|
|
|
|
|
if ( cache[ 0 ] !== unit ) {
|
|
|
|
|
@@ -16365,14 +16352,14 @@ function setValueT2DArray1( gl, v, renderer ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- renderer.setTexture2DArray( v || emptyTexture2dArray, unit );
|
|
|
+ textures.setTexture2DArray( v || emptyTexture2dArray, unit );
|
|
|
|
|
|
}
|
|
|
|
|
|
-function setValueT3D1( gl, v, renderer ) {
|
|
|
+function setValueT3D1( gl, v, textures ) {
|
|
|
|
|
|
var cache = this.cache;
|
|
|
- var unit = renderer.allocTextureUnit();
|
|
|
+ var unit = textures.allocateTextureUnit();
|
|
|
|
|
|
if ( cache[ 0 ] !== unit ) {
|
|
|
|
|
@@ -16381,14 +16368,14 @@ function setValueT3D1( gl, v, renderer ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- renderer.setTexture3D( v || emptyTexture3d, unit );
|
|
|
+ textures.setTexture3D( v || emptyTexture3d, unit );
|
|
|
|
|
|
}
|
|
|
|
|
|
-function setValueT6( gl, v, renderer ) {
|
|
|
+function setValueT6( gl, v, textures ) {
|
|
|
|
|
|
var cache = this.cache;
|
|
|
- var unit = renderer.allocTextureUnit();
|
|
|
+ var unit = textures.allocateTextureUnit();
|
|
|
|
|
|
if ( cache[ 0 ] !== unit ) {
|
|
|
|
|
@@ -16397,7 +16384,7 @@ function setValueT6( gl, v, renderer ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- renderer.setTextureCube( v || emptyCubeTexture, unit );
|
|
|
+ textures.safeSetTextureCube( v || emptyCubeTexture, unit );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -16577,12 +16564,12 @@ function setValueM4a( gl, v ) {
|
|
|
|
|
|
// Array of textures (2D / Cube)
|
|
|
|
|
|
-function setValueT1a( gl, v, renderer ) {
|
|
|
+function setValueT1a( gl, v, textures ) {
|
|
|
|
|
|
var cache = this.cache;
|
|
|
var n = v.length;
|
|
|
|
|
|
- var units = allocTexUnits( renderer, n );
|
|
|
+ var units = allocTexUnits( textures, n );
|
|
|
|
|
|
if ( arraysEqual( cache, units ) === false ) {
|
|
|
|
|
@@ -16593,18 +16580,18 @@ function setValueT1a( gl, v, renderer ) {
|
|
|
|
|
|
for ( var i = 0; i !== n; ++ i ) {
|
|
|
|
|
|
- renderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] );
|
|
|
+ textures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
-function setValueT6a( gl, v, renderer ) {
|
|
|
+function setValueT6a( gl, v, textures ) {
|
|
|
|
|
|
var cache = this.cache;
|
|
|
var n = v.length;
|
|
|
|
|
|
- var units = allocTexUnits( renderer, n );
|
|
|
+ var units = allocTexUnits( textures, n );
|
|
|
|
|
|
if ( arraysEqual( cache, units ) === false ) {
|
|
|
|
|
@@ -16615,7 +16602,7 @@ function setValueT6a( gl, v, renderer ) {
|
|
|
|
|
|
for ( var i = 0; i !== n; ++ i ) {
|
|
|
|
|
|
- renderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );
|
|
|
+ textures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -16691,18 +16678,19 @@ function StructuredUniform( id ) {
|
|
|
|
|
|
this.id = id;
|
|
|
|
|
|
- UniformContainer.call( this ); // mix-in
|
|
|
+ this.seq = [];
|
|
|
+ this.map = {};
|
|
|
|
|
|
}
|
|
|
|
|
|
-StructuredUniform.prototype.setValue = function ( gl, value, renderer ) {
|
|
|
+StructuredUniform.prototype.setValue = function ( gl, value, textures ) {
|
|
|
|
|
|
var seq = this.seq;
|
|
|
|
|
|
for ( var i = 0, n = seq.length; i !== n; ++ i ) {
|
|
|
|
|
|
var u = seq[ i ];
|
|
|
- u.setValue( gl, value[ u.id ], renderer );
|
|
|
+ u.setValue( gl, value[ u.id ], textures );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -16782,11 +16770,10 @@ function parseUniform( activeInfo, addr, container ) {
|
|
|
|
|
|
// Root Container
|
|
|
|
|
|
-function WebGLUniforms( gl, program, renderer ) {
|
|
|
-
|
|
|
- UniformContainer.call( this );
|
|
|
+function WebGLUniforms( gl, program ) {
|
|
|
|
|
|
- this.renderer = renderer;
|
|
|
+ this.seq = [];
|
|
|
+ this.map = {};
|
|
|
|
|
|
var n = gl.getProgramParameter( program, 35718 );
|
|
|
|
|
@@ -16801,11 +16788,11 @@ function WebGLUniforms( gl, program, renderer ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
-WebGLUniforms.prototype.setValue = function ( gl, name, value ) {
|
|
|
+WebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {
|
|
|
|
|
|
var u = this.map[ name ];
|
|
|
|
|
|
- if ( u !== undefined ) u.setValue( gl, value, this.renderer );
|
|
|
+ if ( u !== undefined ) u.setValue( gl, value, textures );
|
|
|
|
|
|
};
|
|
|
|
|
@@ -16820,7 +16807,7 @@ WebGLUniforms.prototype.setOptional = function ( gl, object, name ) {
|
|
|
|
|
|
// Static interface
|
|
|
|
|
|
-WebGLUniforms.upload = function ( gl, seq, values, renderer ) {
|
|
|
+WebGLUniforms.upload = function ( gl, seq, values, textures ) {
|
|
|
|
|
|
for ( var i = 0, n = seq.length; i !== n; ++ i ) {
|
|
|
|
|
@@ -16830,7 +16817,7 @@ WebGLUniforms.upload = function ( gl, seq, values, renderer ) {
|
|
|
if ( v.needsUpdate !== false ) {
|
|
|
|
|
|
// note: always updating when .needsUpdate is undefined
|
|
|
- u.setValue( gl, v.value, renderer );
|
|
|
+ u.setValue( gl, v.value, textures );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -17100,7 +17087,7 @@ function unrollLoops( string ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
-function WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities ) {
|
|
|
+function WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities, textures ) {
|
|
|
|
|
|
var gl = renderer.context;
|
|
|
|
|
@@ -17564,7 +17551,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
|
|
|
|
|
|
if ( cachedUniforms === undefined ) {
|
|
|
|
|
|
- cachedUniforms = new WebGLUniforms( gl, program, renderer );
|
|
|
+ cachedUniforms = new WebGLUniforms( gl, program, textures );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -17640,7 +17627,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
|
|
|
* @author mrdoob / http://mrdoob.com/
|
|
|
*/
|
|
|
|
|
|
-function WebGLPrograms( renderer, extensions, capabilities ) {
|
|
|
+function WebGLPrograms( renderer, extensions, capabilities, textures ) {
|
|
|
|
|
|
var programs = [];
|
|
|
|
|
@@ -17914,7 +17901,7 @@ function WebGLPrograms( renderer, extensions, capabilities ) {
|
|
|
|
|
|
if ( program === undefined ) {
|
|
|
|
|
|
- program = new WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities );
|
|
|
+ program = new WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities, textures );
|
|
|
programs.push( program );
|
|
|
|
|
|
}
|
|
@@ -20468,7 +20455,31 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
|
|
|
//
|
|
|
|
|
|
+ var textureUnits = 0;
|
|
|
+
|
|
|
+ function resetTextureUnits() {
|
|
|
+
|
|
|
+ textureUnits = 0;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function allocateTextureUnit() {
|
|
|
+
|
|
|
+ var textureUnit = textureUnits;
|
|
|
+
|
|
|
+ if ( textureUnit >= capabilities.maxTextures ) {
|
|
|
+
|
|
|
+ console.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ textureUnits += 1;
|
|
|
+
|
|
|
+ return textureUnit;
|
|
|
|
|
|
+ }
|
|
|
+
|
|
|
+ //
|
|
|
|
|
|
function setTexture2D( texture, slot ) {
|
|
|
|
|
@@ -21280,6 +21291,69 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
|
|
|
}
|
|
|
|
|
|
+ // backwards compatibility
|
|
|
+
|
|
|
+ var warnedTexture2D = false;
|
|
|
+ var warnedTextureCube = false;
|
|
|
+
|
|
|
+ function safeSetTexture2D( texture, slot ) {
|
|
|
+
|
|
|
+ if ( texture && texture.isWebGLRenderTarget ) {
|
|
|
+
|
|
|
+ if ( warnedTexture2D === false ) {
|
|
|
+
|
|
|
+ console.warn( "THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead." );
|
|
|
+ warnedTexture2D = true;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ texture = texture.texture;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ setTexture2D( texture, slot );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function safeSetTextureCube( texture, slot ) {
|
|
|
+
|
|
|
+ if ( texture && texture.isWebGLRenderTargetCube ) {
|
|
|
+
|
|
|
+ if ( warnedTextureCube === false ) {
|
|
|
+
|
|
|
+ console.warn( "THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead." );
|
|
|
+ warnedTextureCube = true;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ texture = texture.texture;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture
|
|
|
+ // TODO: unify these code paths
|
|
|
+ if ( ( texture && texture.isCubeTexture ) ||
|
|
|
+ ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {
|
|
|
+
|
|
|
+ // CompressedTexture can have Array in image :/
|
|
|
+
|
|
|
+ // this function alone should take care of cube textures
|
|
|
+ setTextureCube( texture, slot );
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ // assumed: texture property of THREE.WebGLRenderTargetCube
|
|
|
+ setTextureCubeDynamic( texture, slot );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //
|
|
|
+
|
|
|
+ this.allocateTextureUnit = allocateTextureUnit;
|
|
|
+ this.resetTextureUnits = resetTextureUnits;
|
|
|
+
|
|
|
this.setTexture2D = setTexture2D;
|
|
|
this.setTexture2DArray = setTexture2DArray;
|
|
|
this.setTexture3D = setTexture3D;
|
|
@@ -21289,6 +21363,9 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
this.updateRenderTargetMipmap = updateRenderTargetMipmap;
|
|
|
this.updateMultisampleRenderTarget = updateMultisampleRenderTarget;
|
|
|
|
|
|
+ this.safeSetTexture2D = safeSetTexture2D;
|
|
|
+ this.safeSetTextureCube = safeSetTextureCube;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -22666,10 +22743,6 @@ function WebGLRenderer( parameters ) {
|
|
|
|
|
|
//
|
|
|
|
|
|
- _usedTextureUnits = 0,
|
|
|
-
|
|
|
- //
|
|
|
-
|
|
|
_width = _canvas.width,
|
|
|
_height = _canvas.height,
|
|
|
|
|
@@ -22798,7 +22871,7 @@ function WebGLRenderer( parameters ) {
|
|
|
geometries = new WebGLGeometries( _gl, attributes, info );
|
|
|
objects = new WebGLObjects( geometries, info );
|
|
|
morphtargets = new WebGLMorphtargets( _gl );
|
|
|
- programCache = new WebGLPrograms( _this, extensions, capabilities );
|
|
|
+ programCache = new WebGLPrograms( _this, extensions, capabilities, textures );
|
|
|
renderLists = new WebGLRenderLists();
|
|
|
renderStates = new WebGLRenderStates();
|
|
|
|
|
@@ -24156,7 +24229,7 @@ function WebGLRenderer( parameters ) {
|
|
|
|
|
|
function setProgram( camera, fog, material, object ) {
|
|
|
|
|
|
- _usedTextureUnits = 0;
|
|
|
+ textures.resetTextureUnits();
|
|
|
|
|
|
var materialProperties = properties.get( material );
|
|
|
var lights = currentRenderState.state.lights;
|
|
@@ -24343,7 +24416,7 @@ function WebGLRenderer( parameters ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture );
|
|
|
+ p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );
|
|
|
p_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );
|
|
|
|
|
|
} else {
|
|
@@ -24473,13 +24546,13 @@ function WebGLRenderer( parameters ) {
|
|
|
if ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;
|
|
|
if ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;
|
|
|
|
|
|
- WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, _this );
|
|
|
+ WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );
|
|
|
|
|
|
}
|
|
|
|
|
|
if ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {
|
|
|
|
|
|
- WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, _this );
|
|
|
+ WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );
|
|
|
material.uniformsNeedUpdate = false;
|
|
|
|
|
|
}
|
|
@@ -24942,126 +25015,6 @@ function WebGLRenderer( parameters ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- // Textures
|
|
|
-
|
|
|
- function allocTextureUnit() {
|
|
|
-
|
|
|
- var textureUnit = _usedTextureUnits;
|
|
|
-
|
|
|
- if ( textureUnit >= capabilities.maxTextures ) {
|
|
|
-
|
|
|
- console.warn( 'THREE.WebGLRenderer: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- _usedTextureUnits += 1;
|
|
|
-
|
|
|
- return textureUnit;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- this.allocTextureUnit = allocTextureUnit;
|
|
|
-
|
|
|
- // this.setTexture2D = setTexture2D;
|
|
|
- this.setTexture2D = ( function () {
|
|
|
-
|
|
|
- var warned = false;
|
|
|
-
|
|
|
- // backwards compatibility: peel texture.texture
|
|
|
- return function setTexture2D( texture, slot ) {
|
|
|
-
|
|
|
- if ( texture && texture.isWebGLRenderTarget ) {
|
|
|
-
|
|
|
- if ( ! warned ) {
|
|
|
-
|
|
|
- console.warn( "THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead." );
|
|
|
- warned = true;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- texture = texture.texture;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- textures.setTexture2D( texture, slot );
|
|
|
-
|
|
|
- };
|
|
|
-
|
|
|
- }() );
|
|
|
-
|
|
|
- this.setTexture2DArray = function ( texture, slot ) {
|
|
|
-
|
|
|
- textures.setTexture2DArray( texture, slot );
|
|
|
-
|
|
|
- };
|
|
|
-
|
|
|
- this.setTexture3D = function ( texture, slot ) {
|
|
|
-
|
|
|
- textures.setTexture3D( texture, slot );
|
|
|
-
|
|
|
- };
|
|
|
-
|
|
|
- this.setTexture = ( function () {
|
|
|
-
|
|
|
- var warned = false;
|
|
|
-
|
|
|
- return function setTexture( texture, slot ) {
|
|
|
-
|
|
|
- if ( ! warned ) {
|
|
|
-
|
|
|
- console.warn( "THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead." );
|
|
|
- warned = true;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- textures.setTexture2D( texture, slot );
|
|
|
-
|
|
|
- };
|
|
|
-
|
|
|
- }() );
|
|
|
-
|
|
|
- this.setTextureCube = ( function () {
|
|
|
-
|
|
|
- var warned = false;
|
|
|
-
|
|
|
- return function setTextureCube( texture, slot ) {
|
|
|
-
|
|
|
- // backwards compatibility: peel texture.texture
|
|
|
- if ( texture && texture.isWebGLRenderTargetCube ) {
|
|
|
-
|
|
|
- if ( ! warned ) {
|
|
|
-
|
|
|
- console.warn( "THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead." );
|
|
|
- warned = true;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- texture = texture.texture;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- // currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture
|
|
|
- // TODO: unify these code paths
|
|
|
- if ( ( texture && texture.isCubeTexture ) ||
|
|
|
- ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {
|
|
|
-
|
|
|
- // CompressedTexture can have Array in image :/
|
|
|
-
|
|
|
- // this function alone should take care of cube textures
|
|
|
- textures.setTextureCube( texture, slot );
|
|
|
-
|
|
|
- } else {
|
|
|
-
|
|
|
- // assumed: texture property of THREE.WebGLRenderTargetCube
|
|
|
-
|
|
|
- textures.setTextureCubeDynamic( texture, slot );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- };
|
|
|
-
|
|
|
- }() );
|
|
|
-
|
|
|
//
|
|
|
|
|
|
this.setFramebuffer = function ( value ) {
|
|
@@ -45275,6 +45228,9 @@ GridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), {
|
|
|
|
|
|
Object.assign( this.parameters, source.parameters );
|
|
|
|
|
|
+ this.geometry.copy( source.geometry );
|
|
|
+ this.material.copy( source.material );
|
|
|
+
|
|
|
return this;
|
|
|
|
|
|
},
|