diff --git a/examples/js/loaders/DDSLoader.js b/examples/js/loaders/DDSLoader.js index 583ec13005bc90f84603810221136e5c97e3497b..e4d15c6a0f0338e26c7464293d66677164e74c6f 100644 --- a/examples/js/loaders/DDSLoader.js +++ b/examples/js/loaders/DDSLoader.js @@ -102,6 +102,7 @@ THREE.DDSLoader.parse = function ( buffer, loadMipmaps ) { var FOURCC_DXT1 = fourCCToInt32( "DXT1" ); var FOURCC_DXT3 = fourCCToInt32( "DXT3" ); var FOURCC_DXT5 = fourCCToInt32( "DXT5" ); + var FOURCC_ETC1 = fourCCToInt32( "ETC1" ); var headerLengthInt = 31; // The header length in 32 bit ints @@ -173,6 +174,12 @@ THREE.DDSLoader.parse = function ( buffer, loadMipmaps ) { dds.format = THREE.RGBA_S3TC_DXT5_Format; break; + case FOURCC_ETC1: + + blockBytes = 8; + dds.format = THREE.RGB_ETC1_Format; + break; + default: if ( header[ off_RGBBitCount ] === 32 diff --git a/src/Three.js b/src/Three.js index ea62fc43d9447d26c228e7d40bae174e762a632f..c67274d6eb1df7a59e2c8b25fc0497fcf478c37d 100644 --- a/src/Three.js +++ b/src/Three.js @@ -352,6 +352,10 @@ THREE.RGB_PVRTC_2BPPV1_Format = 2101; THREE.RGBA_PVRTC_4BPPV1_Format = 2102; THREE.RGBA_PVRTC_2BPPV1_Format = 2103; +// ETC compressed texture formats + +THREE.RGB_ETC1_Format = 2151; + // Loop styles for AnimationAction THREE.LoopOnce = 2200; diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 8e0780a77ba04d549f5600c86ef0c6213e302be8..dcd00c74469d23579032c0ad87d5bcbc8edd03f3 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -3624,6 +3624,14 @@ THREE.WebGLRenderer = function ( parameters ) { } + extension = extensions.get( 'WEBGL_compressed_texture_etc1' ); + + if ( extension !== null ) { + + if ( p === THREE.RGB_ETC1_Format ) return extension.COMPRESSED_RGB_ETC1_WEBGL; + + } + extension = extensions.get( 'EXT_blend_minmax' ); if ( extension !== null ) { diff --git a/src/renderers/webgl/WebGLExtensions.js b/src/renderers/webgl/WebGLExtensions.js index 4dcf2a57d8d2218b0768302a2f136c9a91b3d5de..6c0bb8c6a92630111eaf876de997d94e7233a985 100644 --- a/src/renderers/webgl/WebGLExtensions.js +++ b/src/renderers/webgl/WebGLExtensions.js @@ -30,6 +30,10 @@ THREE.WebGLExtensions = function ( gl ) { extension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' ); break; + case 'WEBGL_compressed_texture_etc1': + extension = gl.getExtension( 'WEBGL_compressed_texture_etc1' ); + break; + default: extension = gl.getExtension( name ); diff --git a/src/renderers/webgl/WebGLState.js b/src/renderers/webgl/WebGLState.js index d398c2a977cbcfbdea0f2b3b8c66ec6cbbe1e1c1..343a4620a98cb624024b61c052b90b447a086104 100644 --- a/src/renderers/webgl/WebGLState.js +++ b/src/renderers/webgl/WebGLState.js @@ -167,7 +167,8 @@ THREE.WebGLState = function ( gl, extensions, paramThreeToGL ) { compressedTextureFormats = []; if ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) || - extensions.get( 'WEBGL_compressed_texture_s3tc' ) ) { + extensions.get( 'WEBGL_compressed_texture_s3tc' ) || + extensions.get( 'WEBGL_compressed_texture_etc1' )) { var formats = gl.getParameter( gl.COMPRESSED_TEXTURE_FORMATS );