Download node_modules/three/src/renderers/webgl/WebGLCubeUVMaps.js from SimWorld-AI/industrial-harbor-viewer: direct link, hf CLI and curl.
- Browser
- Download file 2.76 kB
-
https://huggingface.co/spaces/SimWorld-AI/industrial-harbor-viewer/resolve/main/node_modules/three/src/renderers/webgl/WebGLCubeUVMaps.js
- Command line
-
hf download hf://spaces/SimWorld-AI/industrial-harbor-viewer/node_modules/three/src/renderers/webgl/WebGLCubeUVMaps.js
-
curl -L -o WebGLCubeUVMaps.js https://huggingface.co/spaces/SimWorld-AI/industrial-harbor-viewer/resolve/main/node_modules/three/src/renderers/webgl/WebGLCubeUVMaps.js
2.76 kB
| import { CubeReflectionMapping, CubeRefractionMapping, EquirectangularReflectionMapping, EquirectangularRefractionMapping } from '../../constants.js'; | |
| import { PMREMGenerator } from '../../extras/PMREMGenerator.js'; | |
| function WebGLCubeUVMaps( renderer ) { | |
| let cubeUVmaps = new WeakMap(); | |
| let pmremGenerator = null; | |
| function get( texture ) { | |
| if ( texture && texture.isTexture ) { | |
| const mapping = texture.mapping; | |
| const isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ); | |
| const isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping ); | |
| // equirect/cube map to cubeUV conversion | |
| if ( isEquirectMap || isCubeMap ) { | |
| if ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) { | |
| texture.needsPMREMUpdate = false; | |
| let renderTarget = cubeUVmaps.get( texture ); | |
| if ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer ); | |
| renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget ); | |
| cubeUVmaps.set( texture, renderTarget ); | |
| return renderTarget.texture; | |
| } else { | |
| if ( cubeUVmaps.has( texture ) ) { | |
| return cubeUVmaps.get( texture ).texture; | |
| } else { | |
| const image = texture.image; | |
| if ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) { | |
| if ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer ); | |
| const renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture ); | |
| cubeUVmaps.set( texture, renderTarget ); | |
| texture.addEventListener( 'dispose', onTextureDispose ); | |
| return renderTarget.texture; | |
| } else { | |
| // image not yet ready. try the conversion next frame | |
| return null; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| return texture; | |
| } | |
| function isCubeTextureComplete( image ) { | |
| let count = 0; | |
| const length = 6; | |
| for ( let i = 0; i < length; i ++ ) { | |
| if ( image[ i ] !== undefined ) count ++; | |
| } | |
| return count === length; | |
| } | |
| function onTextureDispose( event ) { | |
| const texture = event.target; | |
| texture.removeEventListener( 'dispose', onTextureDispose ); | |
| const cubemapUV = cubeUVmaps.get( texture ); | |
| if ( cubemapUV !== undefined ) { | |
| cubeUVmaps.delete( texture ); | |
| cubemapUV.dispose(); | |
| } | |
| } | |
| function dispose() { | |
| cubeUVmaps = new WeakMap(); | |
| if ( pmremGenerator !== null ) { | |
| pmremGenerator.dispose(); | |
| pmremGenerator = null; | |
| } | |
| } | |
| return { | |
| get: get, | |
| dispose: dispose | |
| }; | |
| } | |
| export { WebGLCubeUVMaps }; | |