Skip to content

Commit 541455a

Browse files
authored
WebGLRenderer: Fix binding __webglFramebuffer when mipmaps are used. (#30746)
* Fix binding __webglFramebuffer when mipmaps are used Closes #30745 * Handle crash when msaa sample used * Correct formatting * Consistency
1 parent 05e77b0 commit 541455a

File tree

1 file changed

+34
-3
lines changed

1 file changed

+34
-3
lines changed

src/renderers/webgl/WebGLTextures.js

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1629,7 +1629,17 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
16291629

16301630
if ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );
16311631

1632-
setupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );
1632+
const mipmaps = renderTarget.texture.mipmaps;
1633+
1634+
if ( mipmaps && mipmaps.length > 0 ) {
1635+
1636+
setupDepthTexture( renderTargetProperties.__webglFramebuffer[ 0 ], renderTarget );
1637+
1638+
} else {
1639+
1640+
setupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );
1641+
1642+
}
16331643

16341644
} else {
16351645

@@ -1660,7 +1670,17 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
16601670

16611671
} else {
16621672

1663-
state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
1673+
const mipmaps = renderTarget.texture.mipmaps;
1674+
1675+
if ( mipmaps && mipmaps.length > 0 ) {
1676+
1677+
state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ 0 ] );
1678+
1679+
} else {
1680+
1681+
state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
1682+
1683+
}
16641684

16651685
if ( renderTargetProperties.__webglDepthbuffer === undefined ) {
16661686

@@ -1990,7 +2010,18 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
19902010
}
19912011

19922012
state.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );
1993-
state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
2013+
2014+
const mipmaps = renderTarget.texture.mipmaps;
2015+
2016+
if ( mipmaps && mipmaps.length > 0 ) {
2017+
2018+
state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ 0 ] );
2019+
2020+
} else {
2021+
2022+
state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );
2023+
2024+
}
19942025

19952026
for ( let i = 0; i < textures.length; i ++ ) {
19962027

0 commit comments

Comments
 (0)