未验证 提交 a1382c66 编写于 作者: E Emmett Lalish 提交者: GitHub

disable anisotropy with textureGrad (#23556)

上级 99b13fe3
......@@ -409,12 +409,6 @@ class PMREMGenerator {
uniforms[ 'envMap' ].value = texture;
if ( ! isCubeTexture ) {
uniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );
}
const size = this._cubeSize;
_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );
......@@ -672,6 +666,10 @@ function _getBlurShader( lodMax, width, height ) {
name: 'SphericalGaussianBlur',
extensions: {
shaderTextureLOD: true
},
defines: {
'n': MAX_SAMPLES,
'CUBEUV_TEXEL_WIDTH': 1.0 / width,
......@@ -765,14 +763,12 @@ function _getBlurShader( lodMax, width, height ) {
function _getEquirectShader() {
const texelSize = new Vector2( 1, 1 );
const shaderMaterial = new RawShaderMaterial( {
name: 'EquirectangularToCubeUV',
uniforms: {
'envMap': { value: null },
'texelSize': { value: texelSize }
'envMap': { value: null }
},
vertexShader: _getCommonVertexShader(),
......@@ -785,31 +781,16 @@ function _getEquirectShader() {
varying vec3 vOutputDirection;
uniform sampler2D envMap;
uniform vec2 texelSize;
#include <common>
void main() {
gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );
vec3 outputDirection = normalize( vOutputDirection );
vec2 uv = equirectUv( outputDirection );
vec2 f = fract( uv / texelSize - 0.5 );
uv -= f * texelSize;
vec3 tl = texture2D ( envMap, uv ).rgb;
uv.x += texelSize.x;
vec3 tr = texture2D ( envMap, uv ).rgb;
uv.y += texelSize.y;
vec3 br = texture2D ( envMap, uv ).rgb;
uv.x -= texelSize.x;
vec3 bl = texture2D ( envMap, uv ).rgb;
vec3 tm = mix( tl, tr, f.x );
vec3 bm = mix( bl, br, f.x );
gl_FragColor.rgb = mix( tm, bm, f.y );
gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );
}
`,
......
......@@ -104,7 +104,15 @@ export default /* glsl */`
uv.x *= CUBEUV_TEXEL_WIDTH;
uv.y *= CUBEUV_TEXEL_HEIGHT;
return texture2D( envMap, uv ).rgb;
#ifdef TEXTURE_LOD_EXT
return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; // disable anisotropic filtering
#else
return texture2D( envMap, uv ).rgb;
#endif
}
......
......@@ -423,7 +423,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
prefixFragment = [
customExtensions,
customDefines
customDefines,
parameters.rendererExtensionShaderTextureLod ? '#define TEXTURE_LOD_EXT' : ''
].filter( filterEmptyLine ).join( '\n' );
......@@ -700,7 +701,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
vertexShader = unrollLoops( vertexShader );
fragmentShader = unrollLoops( fragmentShader );
if ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {
if ( parameters.isWebGL2 ) {
// GLSL 3.0 conversion for built-in materials and ShaderMaterial
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册