Browse Source

WebGLRenderer: Transmission code fix for Safari.

Mr.doob 4 years ago
parent
commit
90abd4f813

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

@@ -46,7 +46,7 @@ export default /* glsl */`
 
 	vec3 getTransmissionSample(vec2 fragCoord, float roughness, float ior) {
 		float framebufferLod = log2(transmissionSamplerSize.x) * applyIorToRoughness(roughness, ior);
-		return textureLod(transmissionSamplerMap, fragCoord.xy, framebufferLod).rgb;
+		return texture2DLodEXT(transmissionSamplerMap, fragCoord.xy, framebufferLod).rgb;
 	}
 
 	vec3 applyVolumeAttenuation(vec3 radiance, float transmissionDistance, vec3 attenuationColor, float attenuationDistance) {

+ 1 - 1
src/renderers/webgl/WebGLProgram.js

@@ -119,7 +119,7 @@ function generateExtensions( parameters ) {
 		( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',
 		( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',
 		( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',
-		( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''
+		( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission > 0.0 ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''
 	];
 
 	return chunks.filter( filterEmptyLine ).join( '\n' );