Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
5ef17047
T
three.js
项目概览
Ablesons
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5ef17047
编写于
3月 26, 2019
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Updated builds.
上级
640f046f
变更
3
展开全部
隐藏空白更改
内联
并排
Showing
3 changed file
with
1001 addition
and
1090 deletion
+1001
-1090
build/three.js
build/three.js
+140
-184
build/three.min.js
build/three.min.js
+721
-722
build/three.module.js
build/three.module.js
+140
-184
未找到文件。
build/three.js
浏览文件 @
5ef17047
...
...
@@ -15977,7 +15977,7 @@
*
* 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:
...
...
@@ -15988,15 +15988,15 @@
*
* 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'
*
...
...
@@ -16005,16 +16005,12 @@
* 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
...
...
@@ -16026,15 +16022,6 @@
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)
...
...
@@ -16111,7 +16098,7 @@
// Texture unit allocation
function allocTexUnits(
renderer
, n ) {
function allocTexUnits(
textures
, n ) {
var r = arrayCacheI32[ n ];
...
...
@@ -16123,7 +16110,7 @@
}
for ( var i = 0; i !== n; ++ i )
r[ i ] =
renderer.alloc
TextureUnit();
r[ i ] =
textures.allocate
TextureUnit();
return r;
...
...
@@ -16343,10 +16330,10 @@
// Single texture (2D / Cube)
function setValueT1( gl, v,
renderer
) {
function setValueT1( gl, v,
textures
) {
var cache = this.cache;
var unit =
renderer.alloc
TextureUnit();
var unit =
textures.allocate
TextureUnit();
if ( cache[ 0 ] !== unit ) {
...
...
@@ -16355,14 +16342,14 @@
}
renderer.s
etTexture2D( v || emptyTexture, unit );
textures.safeS
etTexture2D( v || emptyTexture, unit );
}
function setValueT2DArray1( gl, v,
renderer
) {
function setValueT2DArray1( gl, v,
textures
) {
var cache = this.cache;
var unit =
renderer.alloc
TextureUnit();
var unit =
textures.allocate
TextureUnit();
if ( cache[ 0 ] !== unit ) {
...
...
@@ -16371,14 +16358,14 @@
}
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.alloc
TextureUnit();
var unit =
textures.allocate
TextureUnit();
if ( cache[ 0 ] !== unit ) {
...
...
@@ -16387,14 +16374,14 @@
}
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.alloc
TextureUnit();
var unit =
textures.allocate
TextureUnit();
if ( cache[ 0 ] !== unit ) {
...
...
@@ -16403,7 +16390,7 @@
}
renderer.s
etTextureCube( v || emptyCubeTexture, unit );
textures.safeS
etTextureCube( v || emptyCubeTexture, unit );
}
...
...
@@ -16583,12 +16570,12 @@
// 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 ) {
...
...
@@ -16599,18 +16586,18 @@
for ( var i = 0; i !== n; ++ i ) {
renderer.s
etTexture2D( v[ i ] || emptyTexture, units[ i ] );
textures.safeS
etTexture2D( 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 ) {
...
...
@@ -16621,7 +16608,7 @@
for ( var i = 0; i !== n; ++ i ) {
renderer.s
etTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );
textures.safeS
etTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );
}
...
...
@@ -16697,18 +16684,19 @@
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
);
}
...
...
@@ -16788,11 +16776,10 @@
// 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 );
...
...
@@ -16807,11 +16794,11 @@
}
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, t
his.renderer
);
if ( u !== undefined ) u.setValue( gl, value, t
extures
);
};
...
...
@@ -16826,7 +16813,7 @@
// 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 ) {
...
...
@@ -16836,7 +16823,7 @@
if ( v.needsUpdate !== false ) {
// note: always updating when .needsUpdate is undefined
u.setValue( gl, v.value,
renderer
);
u.setValue( gl, v.value,
textures
);
}
...
...
@@ -17106,7 +17093,7 @@
}
function WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities ) {
function WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities
, textures
) {
var gl = renderer.context;
...
...
@@ -17570,7 +17557,7 @@
if ( cachedUniforms === undefined ) {
cachedUniforms = new WebGLUniforms( gl, program,
renderer
);
cachedUniforms = new WebGLUniforms( gl, program,
textures
);
}
...
...
@@ -17646,7 +17633,7 @@
* @author mrdoob / http://mrdoob.com/
*/
function WebGLPrograms( renderer, extensions, capabilities ) {
function WebGLPrograms( renderer, extensions, capabilities
, textures
) {
var programs = [];
...
...
@@ -17920,7 +17907,7 @@
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 );
}
...
...
@@ -20474,7 +20461,31 @@
//
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 ) {
...
...
@@ -21286,6 +21297,69 @@
}
// 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;
...
...
@@ -21295,6 +21369,9 @@
this.updateRenderTargetMipmap = updateRenderTargetMipmap;
this.updateMultisampleRenderTarget = updateMultisampleRenderTarget;
this.safeSetTexture2D = safeSetTexture2D;
this.safeSetTextureCube = safeSetTextureCube;
}
/**
...
...
@@ -22672,10 +22749,6 @@
//
_usedTextureUnits = 0,
//
_width = _canvas.width,
_height = _canvas.height,
...
...
@@ -22804,7 +22877,7 @@
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();
...
...
@@ -24162,7 +24235,7 @@
function setProgram( camera, fog, material, object ) {
_usedTextureUnits = 0
;
textures.resetTextureUnits()
;
var materialProperties = properties.get( material );
var lights = currentRenderState.state.lights;
...
...
@@ -24349,7 +24422,7 @@
}
p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture );
p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture
, textures
);
p_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );
} else {
...
...
@@ -24479,13 +24552,13 @@
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,
_thi
s );
WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms,
texture
s );
}
if ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {
WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms,
_thi
s );
WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms,
texture
s );
material.uniformsNeedUpdate = false;
}
...
...
@@ -24948,126 +25021,6 @@
}
// 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 ) {
...
...
@@ -45281,6 +45234,9 @@
Object.assign( this.parameters, source.parameters );
this.geometry.copy( source.geometry );
this.material.copy( source.material );
return this;
},
build/three.min.js
浏览文件 @
5ef17047
此差异已折叠。
点击以展开。
build/three.module.js
浏览文件 @
5ef17047
...
...
@@ -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.alloc
TextureUnit();
r[ i ] =
textures.allocate
TextureUnit();
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.alloc
TextureUnit();
var unit =
textures.allocate
TextureUnit();
if ( cache[ 0 ] !== unit ) {
...
...
@@ -16349,14 +16336,14 @@ function setValueT1( gl, v, renderer ) {
}
renderer.s
etTexture2D( v || emptyTexture, unit );
textures.safeS
etTexture2D( v || emptyTexture, unit );
}
function setValueT2DArray1( gl, v,
renderer
) {
function setValueT2DArray1( gl, v,
textures
) {
var cache = this.cache;
var unit =
renderer.alloc
TextureUnit();
var unit =
textures.allocate
TextureUnit();
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.alloc
TextureUnit();
var unit =
textures.allocate
TextureUnit();
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.alloc
TextureUnit();
var unit =
textures.allocate
TextureUnit();
if ( cache[ 0 ] !== unit ) {
...
...
@@ -16397,7 +16384,7 @@ function setValueT6( gl, v, renderer ) {
}
renderer.s
etTextureCube( v || emptyCubeTexture, unit );
textures.safeS
etTextureCube( 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.s
etTexture2D( v[ i ] || emptyTexture, units[ i ] );
textures.safeS
etTexture2D( 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.s
etTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );
textures.safeS
etTextureCube( 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, t
his.renderer
);
if ( u !== undefined ) u.setValue( gl, value, t
extures
);
};
...
...
@@ -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,
_thi
s );
WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms,
texture
s );
}
if ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {
WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms,
_thi
s );
WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms,
texture
s );
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;
},
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录