提交 1b4a538b 编写于 作者: A artur.trzesiok

Texture3d support - style fix

上级 80dcd17a
...@@ -2353,13 +2353,15 @@ function WebGLRenderer( parameters ) { ...@@ -2353,13 +2353,15 @@ function WebGLRenderer( parameters ) {
}() ); }() );
this.setTexture3D = ( function () { this.setTexture3D = ( function () {
// backwards compatibility: peel texture.texture
return function setTexture3D( texture, slot ) {
textures.setTexture3D( texture, slot );
}; // backwards compatibility: peel texture.texture
}() ); return function setTexture3D( texture, slot ) {
textures.setTexture3D( texture, slot );
};
}() );
this.setTexture = ( function () { this.setTexture = ( function () {
......
...@@ -844,19 +844,20 @@ function WebGLState( gl, extensions, utils ) { ...@@ -844,19 +844,20 @@ function WebGLState( gl, extensions, utils ) {
} }
function texImage3D() { function texImage3D() {
try { try {
gl.texImage3D.apply( gl, arguments );
gl.texImage3D.apply( gl, arguments ); } catch ( error ) {
} catch ( error ) { console.error( 'THREE.WebGLState:', error );
console.error( 'THREE.WebGLState:', error ); }
} }
}
// //
function scissor( scissor ) { function scissor( scissor ) {
...@@ -949,7 +950,7 @@ function WebGLState( gl, extensions, utils ) { ...@@ -949,7 +950,7 @@ function WebGLState( gl, extensions, utils ) {
bindTexture: bindTexture, bindTexture: bindTexture,
compressedTexImage2D: compressedTexImage2D, compressedTexImage2D: compressedTexImage2D,
texImage2D: texImage2D, texImage2D: texImage2D,
texImage3D: texImage3D, texImage3D: texImage3D,
scissor: scissor, scissor: scissor,
viewport: viewport, viewport: viewport,
......
...@@ -104,13 +104,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, ...@@ -104,13 +104,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
if ( ! _gl.isWebGL2 ) return glFormat; if ( ! _gl.isWebGL2 ) return glFormat;
if ( glFormat === _gl.RED ) { if ( glFormat === _gl.RED ) {
if ( glType === _gl.FLOAT ) return _gl.R32F; if ( glType === _gl.FLOAT ) return _gl.R32F;
if ( glType === _gl.HALF_FLOAT ) return _gl.R16F; if ( glType === _gl.HALF_FLOAT ) return _gl.R16F;
if ( glType === _gl.UNSIGNED_BYTE ) return _gl.R8; if ( glType === _gl.UNSIGNED_BYTE ) return _gl.R8;
} }
if ( glFormat === _gl.RGB ) { if ( glFormat === _gl.RGB ) {
...@@ -281,21 +281,24 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, ...@@ -281,21 +281,24 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
} }
function setTexture3D( texture, slot ) { function setTexture3D( texture, slot ) {
var textureProperties = properties.get( texture ); var textureProperties = properties.get( texture );
if ( texture.version > 0 && textureProperties.__version !== texture.version ) {
if ( texture.version > 0 && textureProperties.__version !== texture.version ) {
uploadTexture( textureProperties, texture, slot ); uploadTexture( textureProperties, texture, slot );
return; return;
}
state.activeTexture( _gl.TEXTURE0 + slot ); }
state.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture );
} state.activeTexture( _gl.TEXTURE0 + slot );
state.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture );
}
function setTextureCube( texture, slot ) { function setTextureCube( texture, slot ) {
var textureProperties = properties.get( texture ); var textureProperties = properties.get( texture );
...@@ -483,12 +486,17 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, ...@@ -483,12 +486,17 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
} }
function uploadTexture( textureProperties, texture, slot ) { function uploadTexture( textureProperties, texture, slot ) {
var textureType; var textureType;
if(texture.isTexture3D) { if ( texture.isTexture3D ) {
textureType = _gl.TEXTURE_3D;
} else { textureType = _gl.TEXTURE_3D;
textureType = _gl.TEXTURE_2D;
} else {
textureType = _gl.TEXTURE_2D;
} }
...@@ -640,9 +648,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, ...@@ -640,9 +648,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
textureProperties.__maxMipLevel = mipmaps.length - 1; textureProperties.__maxMipLevel = mipmaps.length - 1;
} else if ( texture.isTexture3D) { } else if ( texture.isTexture3D ) {
state.texImage3D( _gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.length, 0, glFormat, glType, image.data );
textureProperties.__maxMipLevel = 0; state.texImage3D( _gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.length, 0, glFormat, glType, image.data );
textureProperties.__maxMipLevel = 0;
} else { } else {
// regular Texture (image, video, canvas) // regular Texture (image, video, canvas)
...@@ -926,7 +936,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, ...@@ -926,7 +936,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
} }
this.setTexture2D = setTexture2D; this.setTexture2D = setTexture2D;
this.setTexture3D = setTexture3D; this.setTexture3D = setTexture3D;
this.setTextureCube = setTextureCube; this.setTextureCube = setTextureCube;
this.setTextureCubeDynamic = setTextureCubeDynamic; this.setTextureCubeDynamic = setTextureCubeDynamic;
this.setupRenderTarget = setupRenderTarget; this.setupRenderTarget = setupRenderTarget;
......
...@@ -389,18 +389,20 @@ function setValueT1( gl, v, renderer ) { ...@@ -389,18 +389,20 @@ function setValueT1( gl, v, renderer ) {
} }
function setValueT3D1(gl, v, renderer) { function setValueT3D1( gl, v, renderer ) {
var cache = this.cache;
var unit = renderer.allocTextureUnit();
if ( cache[ 0 ] !== unit ) { var cache = this.cache;
var unit = renderer.allocTextureUnit();
if ( cache[ 0 ] !== unit ) {
gl.uniform1i( this.addr, unit ); gl.uniform1i( this.addr, unit );
cache[ 0 ] = unit; cache[ 0 ] = unit;
}
} renderer.setTexture3D( v || emptyTexture3d, unit );
renderer.setTexture3D( v || emptyTexture3d, unit );
} }
function setValueT6( gl, v, renderer ) { function setValueT6( gl, v, renderer ) {
...@@ -473,7 +475,7 @@ function getSingularSetter( type ) { ...@@ -473,7 +475,7 @@ function getSingularSetter( type ) {
case 0x8b5c: return setValue4fm; // _MAT4 case 0x8b5c: return setValue4fm; // _MAT4
case 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES case 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES
case 0x8B5F: return setValueT3D1; // SAMPLER_3D case 0x8B5F: return setValueT3D1; // SAMPLER_3D
case 0x8b60: return setValueT6; // SAMPLER_CUBE case 0x8b60: return setValueT6; // SAMPLER_CUBE
case 0x1404: case 0x8b56: return setValue1i; // INT, BOOL case 0x1404: case 0x8b56: return setValue1i; // INT, BOOL
......
...@@ -51,7 +51,7 @@ function WebGLUtils( gl, extensions ) { ...@@ -51,7 +51,7 @@ function WebGLUtils( gl, extensions ) {
if ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA; if ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;
if ( p === DepthFormat ) return gl.DEPTH_COMPONENT; if ( p === DepthFormat ) return gl.DEPTH_COMPONENT;
if ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL; if ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;
if ( p === RedFormat ) return gl.RED; if ( p === RedFormat ) return gl.RED;
if ( p === AddEquation ) return gl.FUNC_ADD; if ( p === AddEquation ) return gl.FUNC_ADD;
if ( p === SubtractEquation ) return gl.FUNC_SUBTRACT; if ( p === SubtractEquation ) return gl.FUNC_SUBTRACT;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册