提交 1db78b84 编写于 作者: M Mr.doob

PMREMGenerator: More clean up.

上级 8b38389e
......@@ -86,8 +86,8 @@ class PMREMGenerator {
this._sigmas = [];
this._blurMaterial = null;
this._equirectShader = null;
this._cubemapShader = null;
this._cubemapMaterial = null;
this._equirectMaterial = null;
this._compileMaterial( this._blurMaterial );
......@@ -105,10 +105,12 @@ class PMREMGenerator {
_oldTarget = this._renderer.getRenderTarget();
this._setSize( 256 );
const cubeUVRenderTarget = this._allocateTargets();
cubeUVRenderTarget.depthBuffer = true;
this._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );
if ( sigma > 0 ) {
this._blur( cubeUVRenderTarget, 0, 0, sigma );
......@@ -150,10 +152,10 @@ class PMREMGenerator {
*/
compileCubemapShader() {
if ( this._cubemapShader === null ) {
if ( this._cubemapMaterial === null ) {
this._cubemapShader = _getCubemapShader();
this._compileMaterial( this._cubemapShader );
this._cubemapMaterial = _getCubemapMaterial();
this._compileMaterial( this._cubemapMaterial );
}
......@@ -165,10 +167,10 @@ class PMREMGenerator {
*/
compileEquirectangularShader() {
if ( this._equirectShader === null ) {
if ( this._equirectMaterial === null ) {
this._equirectShader = _getEquirectMaterial();
this._compileMaterial( this._equirectShader );
this._equirectMaterial = _getEquirectMaterial();
this._compileMaterial( this._equirectMaterial );
}
......@@ -183,8 +185,8 @@ class PMREMGenerator {
this._dispose();
if ( this._cubemapShader !== null ) this._cubemapShader.dispose();
if ( this._equirectShader !== null ) this._equirectShader.dispose();
if ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();
if ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();
}
......@@ -232,6 +234,7 @@ class PMREMGenerator {
}
_oldTarget = this._renderer.getRenderTarget();
const cubeUVRenderTarget = renderTarget || this._allocateTargets();
this._textureToCubeUV( texture, cubeUVRenderTarget );
this._applyPMREM( cubeUVRenderTarget );
......@@ -334,6 +337,7 @@ class PMREMGenerator {
for ( let i = 0; i < 6; i ++ ) {
const col = i % 3;
if ( col === 0 ) {
cubeCamera.up.set( 0, upSign[ i ], 0 );
......@@ -352,7 +356,9 @@ class PMREMGenerator {
}
const size = this._cubeSize;
_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );
renderer.setRenderTarget( cubeUVRenderTarget );
if ( useSolidColor ) {
......@@ -382,25 +388,25 @@ class PMREMGenerator {
if ( isCubeTexture ) {
if ( this._cubemapShader === null ) {
if ( this._cubemapMaterial === null ) {
this._cubemapShader = _getCubemapShader();
this._cubemapMaterial = _getCubemapMaterial();
}
this._cubemapShader.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;
this._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;
} else {
if ( this._equirectShader === null ) {
if ( this._equirectMaterial === null ) {
this._equirectShader = _getEquirectMaterial();
this._equirectMaterial = _getEquirectMaterial();
}
}
const material = isCubeTexture ? this._cubemapShader : this._equirectShader;
const material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;
const mesh = new Mesh( this._lodPlanes[ 0 ], material );
const uniforms = material.uniforms;
......@@ -408,6 +414,7 @@ class PMREMGenerator {
uniforms[ 'envMap' ].value = texture;
const size = this._cubeSize;
_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );
renderer.setRenderTarget( cubeUVRenderTarget );
......@@ -751,7 +758,7 @@ function _getBlurShader( lodMax, width, height ) {
function _getEquirectMaterial() {
const shaderMaterial = new ShaderMaterial( {
return new ShaderMaterial( {
name: 'EquirectangularToCubeUV',
......@@ -788,13 +795,11 @@ function _getEquirectMaterial() {
} );
return shaderMaterial;
}
function _getCubemapShader() {
function _getCubemapMaterial() {
const shaderMaterial = new ShaderMaterial( {
return new ShaderMaterial( {
name: 'CubemapToCubeUV',
......@@ -829,8 +834,6 @@ function _getCubemapShader() {
} );
return shaderMaterial;
}
function _getCommonVertexShader() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册