|
|
@@ -69,7 +69,9 @@ const _axisDirections = [
|
|
|
/*@__PURE__*/ new Vector3( 1, 1, 1 )
|
|
|
];
|
|
|
|
|
|
-//
|
|
|
+// maps blur materials to their uniforms dictionary
|
|
|
+
|
|
|
+const _uniformsMap = new WeakMap();
|
|
|
|
|
|
// WebGPU Face indices
|
|
|
const _faceLib = [
|
|
|
@@ -77,8 +79,8 @@ const _faceLib = [
|
|
|
0, 4, 2
|
|
|
];
|
|
|
|
|
|
-const direction = getDirection( uv(), attribute( 'faceIndex' ) ).normalize();
|
|
|
-const outputDirection = vec3( direction.x, direction.y, direction.z );
|
|
|
+const _direction = /*@__PURE__*/ getDirection( uv(), attribute( 'faceIndex' ) ).normalize();
|
|
|
+const _outputDirection = /*@__PURE__*/ vec3( _direction.x, _direction.y, _direction.z );
|
|
|
|
|
|
/**
|
|
|
* This class generates a Prefiltered, Mipmapped Radiance Environment Map
|
|
|
@@ -667,7 +669,7 @@ class PMREMGenerator {
|
|
|
const blurMesh = this._lodMeshes[ lodOut ];
|
|
|
blurMesh.material = blurMaterial;
|
|
|
|
|
|
- const blurUniforms = blurMaterial.uniforms;
|
|
|
+ const blurUniforms = _uniformsMap.get( blurMaterial );
|
|
|
|
|
|
const pixels = this._sizeLods[ lodIn ] - 1;
|
|
|
const radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );
|
|
|
@@ -871,7 +873,7 @@ function _getBlurShader( lodMax, width, height ) {
|
|
|
latitudinal,
|
|
|
weights,
|
|
|
poleAxis,
|
|
|
- outputDirection,
|
|
|
+ outputDirection: _outputDirection,
|
|
|
dTheta,
|
|
|
samples,
|
|
|
envMap,
|
|
|
@@ -882,9 +884,10 @@ function _getBlurShader( lodMax, width, height ) {
|
|
|
};
|
|
|
|
|
|
const material = _getMaterial( 'blur' );
|
|
|
- material.uniforms = materialUniforms; // TODO: Move to outside of the material
|
|
|
material.fragmentNode = blur( { ...materialUniforms, latitudinal: latitudinal.equal( 1 ) } );
|
|
|
|
|
|
+ _uniformsMap.set( material, materialUniforms );
|
|
|
+
|
|
|
return material;
|
|
|
|
|
|
}
|
|
|
@@ -892,7 +895,7 @@ function _getBlurShader( lodMax, width, height ) {
|
|
|
function _getCubemapMaterial( envTexture ) {
|
|
|
|
|
|
const material = _getMaterial( 'cubemap' );
|
|
|
- material.fragmentNode = cubeTexture( envTexture, outputDirection );
|
|
|
+ material.fragmentNode = cubeTexture( envTexture, _outputDirection );
|
|
|
|
|
|
return material;
|
|
|
|
|
|
@@ -901,7 +904,7 @@ function _getCubemapMaterial( envTexture ) {
|
|
|
function _getEquirectMaterial( envTexture ) {
|
|
|
|
|
|
const material = _getMaterial( 'equirect' );
|
|
|
- material.fragmentNode = texture( envTexture, equirectUV( outputDirection ), 0 );
|
|
|
+ material.fragmentNode = texture( envTexture, equirectUV( _outputDirection ), 0 );
|
|
|
|
|
|
return material;
|
|
|
|