Просмотр исходного кода

PMREMGenerator: Cleanup (#23558)

* PMREMGenerator: Cleanup.

* PMREMGenerator: Added GL_EXT_shader_texture_lod to _getBlurShader() raw shader.
mrdoob 3 лет назад
Родитель
Сommit
5b75dcbe46

+ 3 - 13
src/extras/PMREMGenerator.js

@@ -4,7 +4,6 @@ import {
 	CubeUVReflectionMapping,
 	LinearEncoding,
 	LinearFilter,
-	NearestFilter,
 	NoToneMapping,
 	NoBlending,
 	RGBAFormat,
@@ -17,7 +16,6 @@ import { Mesh } from '../objects/Mesh.js';
 import { OrthographicCamera } from '../cameras/OrthographicCamera.js';
 import { PerspectiveCamera } from '../cameras/PerspectiveCamera.js';
 import { RawShaderMaterial } from '../materials/RawShaderMaterial.js';
-import { Vector2 } from '../math/Vector2.js';
 import { Vector3 } from '../math/Vector3.js';
 import { Color } from '../math/Color.js';
 import { WebGLRenderTarget } from '../renderers/WebGLRenderTarget.js';
@@ -448,9 +446,6 @@ class PMREMGenerator {
 
 		const pingPongRenderTarget = this._pingPongRenderTarget;
 
-		cubeUVRenderTarget.texture.minFilter = NearestFilter;
-		pingPongRenderTarget.texture.minFilter = NearestFilter;
-
 		this._halfBlur(
 			cubeUVRenderTarget,
 			pingPongRenderTarget,
@@ -469,9 +464,6 @@ class PMREMGenerator {
 			'longitudinal',
 			poleAxis );
 
-		cubeUVRenderTarget.texture.minFilter = LinearFilter;
-		pingPongRenderTarget.texture.minFilter = LinearFilter;
-
 	}
 
 	_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {
@@ -666,10 +658,6 @@ function _getBlurShader( lodMax, width, height ) {
 
 		name: 'SphericalGaussianBlur',
 
-		extensions: {
-			shaderTextureLOD: true
-		},
-
 		defines: {
 			'n': MAX_SAMPLES,
 			'CUBEUV_TEXEL_WIDTH': 1.0 / width,
@@ -691,6 +679,8 @@ function _getBlurShader( lodMax, width, height ) {
 
 		fragmentShader: /* glsl */`
 
+			#extension GL_EXT_shader_texture_lod : enable
+
 			precision mediump float;
 			precision mediump int;
 
@@ -790,7 +780,7 @@ function _getEquirectShader() {
 				vec2 uv = equirectUv( outputDirection );
 
 				gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );
-				
+
 			}
 		`,
 

+ 1 - 1
src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js

@@ -104,7 +104,7 @@ export default /* glsl */`
 		uv.x *= CUBEUV_TEXEL_WIDTH;
 		uv.y *= CUBEUV_TEXEL_HEIGHT;
 
-		#ifdef TEXTURE_LOD_EXT
+		#ifdef texture2DGradEXT
 
 			return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; // disable anisotropic filtering
 

+ 1 - 1
src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js

@@ -57,7 +57,7 @@ export default /* glsl */`
 
 		float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
 
-		#ifdef TEXTURE_LOD_EXT
+		#ifdef texture2DLodEXT
 
 			return texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );
 

+ 2 - 5
src/renderers/webgl/WebGLProgram.js

@@ -423,8 +423,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
 		prefixFragment = [
 
 			customExtensions,
-			customDefines,
-			parameters.rendererExtensionShaderTextureLod ? '#define TEXTURE_LOD_EXT' : ''
+			customDefines
 
 		].filter( filterEmptyLine ).join( '\n' );
 
@@ -666,8 +665,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
 			parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
 			( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',
 
-			( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',
-
 			'uniform mat4 viewMatrix;',
 			'uniform vec3 cameraPosition;',
 			'uniform bool isOrthographic;',
@@ -701,7 +698,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
 	vertexShader = unrollLoops( vertexShader );
 	fragmentShader = unrollLoops( fragmentShader );
 
-	if ( parameters.isWebGL2 ) {
+	if ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {
 
 		// GLSL 3.0 conversion for built-in materials and ShaderMaterial