Browse Source

Renderer: Don't use MSAA for fullscreen-passes. (#33936)

Michael Herzog 2 weeks ago
parent
commit
72288c8c1b
2 changed files with 12 additions and 3 deletions
  1. 8 0
      src/renderers/common/RenderContext.js
  2. 4 3
      src/renderers/common/Renderer.js

+ 8 - 0
src/renderers/common/RenderContext.js

@@ -230,6 +230,14 @@ class RenderContext {
 		 */
 		this.camera = null;
 
+		/**
+		 * Whether a fullscreen pass is rendered or not.
+		 *
+		 * @type {boolean}
+		 * @default false
+		 */
+		this.fullscreenPass = false;
+
 		/**
 		 * This flag can be used for type testing.
 		 *

+ 4 - 3
src/renderers/common/Renderer.js

@@ -1733,6 +1733,7 @@ class Renderer {
 		renderContext.activeCubeFace = activeCubeFace;
 		renderContext.activeMipmapLevel = activeMipmapLevel;
 		renderContext.occlusionQueryCount = renderList.occlusionQueryCount;
+		renderContext.fullscreenPass = scene.isQuadMesh === true;
 
 		//
 
@@ -2503,8 +2504,8 @@ class Renderer {
 	 * The current number of samples used for multi-sample anti-aliasing (MSAA).
 	 *
 	 * When rendering to a custom render target, the number of samples of that render target is used.
-	 * If the renderer needs an internal framebuffer target for tone mapping or color space conversion,
-	 * the number of samples is set to 0.
+	 * The number of samples is set to 0 when the renderer needs an internal framebuffer target for
+	 * tone mapping or color space conversion, or when rendering a fullscreen quad to screen.
 	 *
 	 * @type {number}
 	 */
@@ -2516,7 +2517,7 @@ class Renderer {
 
 			samples = this._renderTarget.samples;
 
-		} else if ( this.needsFrameBufferTarget ) {
+		} else if ( this.needsFrameBufferTarget || this._currentRenderContext?.fullscreenPass === true ) {
 
 			samples = 0;
 

粤ICP备19079148号