最新代码
This commit is contained in:
65
public/sdk/three/jsm/renderers/common/CubeRenderTarget.js
Normal file
65
public/sdk/three/jsm/renderers/common/CubeRenderTarget.js
Normal file
@ -0,0 +1,65 @@
|
||||
import { WebGLCubeRenderTarget, Scene, CubeCamera, BoxGeometry, Mesh, BackSide, NoBlending, LinearFilter, LinearMipmapLinearFilter } from 'three';
|
||||
import { equirectUV } from '../../nodes/utils/EquirectUVNode.js';
|
||||
import { texture as TSL_Texture } from '../../nodes/accessors/TextureNode.js';
|
||||
import { positionWorldDirection } from '../../nodes/accessors/PositionNode.js';
|
||||
import { createNodeMaterialFromType } from '../../nodes/materials/NodeMaterial.js';
|
||||
|
||||
// @TODO: Consider rename WebGLCubeRenderTarget to just CubeRenderTarget
|
||||
|
||||
class CubeRenderTarget extends WebGLCubeRenderTarget {
|
||||
|
||||
constructor( size = 1, options = {} ) {
|
||||
|
||||
super( size, options );
|
||||
|
||||
this.isCubeRenderTarget = true;
|
||||
|
||||
}
|
||||
|
||||
fromEquirectangularTexture( renderer, texture ) {
|
||||
|
||||
const currentMinFilter = texture.minFilter;
|
||||
const currentGenerateMipmaps = texture.generateMipmaps;
|
||||
|
||||
texture.generateMipmaps = true;
|
||||
|
||||
this.texture.type = texture.type;
|
||||
this.texture.colorSpace = texture.colorSpace;
|
||||
|
||||
this.texture.generateMipmaps = texture.generateMipmaps;
|
||||
this.texture.minFilter = texture.minFilter;
|
||||
this.texture.magFilter = texture.magFilter;
|
||||
|
||||
const geometry = new BoxGeometry( 5, 5, 5 );
|
||||
|
||||
const uvNode = equirectUV( positionWorldDirection );
|
||||
|
||||
const material = createNodeMaterialFromType( 'MeshBasicNodeMaterial' );
|
||||
material.colorNode = TSL_Texture( texture, uvNode, 0 );
|
||||
material.side = BackSide;
|
||||
material.blending = NoBlending;
|
||||
|
||||
const mesh = new Mesh( geometry, material );
|
||||
|
||||
const scene = new Scene();
|
||||
scene.add( mesh );
|
||||
|
||||
// Avoid blurred poles
|
||||
if ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;
|
||||
|
||||
const camera = new CubeCamera( 1, 10, this );
|
||||
camera.update( renderer, scene );
|
||||
|
||||
texture.minFilter = currentMinFilter;
|
||||
texture.currentGenerateMipmaps = currentGenerateMipmaps;
|
||||
|
||||
mesh.geometry.dispose();
|
||||
mesh.material.dispose();
|
||||
|
||||
return this;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default CubeRenderTarget;
|
Reference in New Issue
Block a user