瀏覽代碼

second batch of review

Benjamin Guignabert 4 年之前
父節點
當前提交
50e1a9f671
共有 2 個文件被更改,包括 14 次插入7 次删除
  1. 11 7
      src/Rendering/prePassRenderer.ts
  2. 3 0
      src/Rendering/prePassRendererSceneComponent.ts

+ 11 - 7
src/Rendering/prePassRenderer.ts

@@ -440,11 +440,11 @@ export class PrePassRenderer {
         }
     }
 
-    private _setState(enabled: boolean) {
+    private _setEnabled(enabled: boolean) {
         this._enabled = enabled;
     }
 
-    private _setRenderTargetState(prePassRenderTarget: PrePassRenderTarget, enabled: boolean) {
+    private _setRenderTargetEnabled(prePassRenderTarget: PrePassRenderTarget, enabled: boolean) {
         prePassRenderTarget.enabled = enabled;
     }
 
@@ -500,15 +500,15 @@ export class PrePassRenderer {
         }
 
         this._reinitializeAttachments();
-        this._setState(true);
+        this._setEnabled(true);
         this._updateGeometryBufferLayout();
     }
 
     private _disable() {
-        this._setState(false);
+        this._setEnabled(false);
 
         for (let i = 0; i < this.renderTargets.length; i++) {
-            this._setRenderTargetState(this.renderTargets[i], false);
+            this._setRenderTargetEnabled(this.renderTargets[i], false);
         }
 
         this._resetLayout();
@@ -608,6 +608,7 @@ export class PrePassRenderer {
             for (let i = 0; i < postProcesses.length; i++) {
                 if (postProcesses[i]?.getClassName() === "ImageProcessingPostProcess") {
                     isIPPAlreadyPresent = true;
+                    break;
                 }
             }
         }
@@ -661,9 +662,12 @@ export class PrePassRenderer {
             if (this._scene.materials[i].setPrePassRenderer(this)) {
                 enablePrePass = true;
 
-                this._setRenderTargetState(this.defaultRT, true);
             }
         }
+        
+        if (enablePrePass) {
+            this._setRenderTargetEnabled(this.defaultRT, true);
+        }
 
         let postProcesses;
 
@@ -688,7 +692,7 @@ export class PrePassRenderer {
             if (postProcesses) {
                 for (let j = 0; j < postProcesses.length; j++) {
                     if (postProcesses[j].setPrePassRenderer(this)) {
-                        this._setRenderTargetState(this.renderTargets[i], true);
+                        this._setRenderTargetEnabled(this.renderTargets[i], true);
                         enablePrePass = true;
                     }
                 }

+ 3 - 0
src/Rendering/prePassRendererSceneComponent.ts

@@ -187,7 +187,10 @@ export class PrePassRendererSceneComponent implements ISceneComponent {
      * context lost for instance.
      */
     public rebuild(): void {
+        // Release textures first
         this.scene.disablePrePassRenderer();
+
+        // Re-enable
         this.scene.enablePrePassRenderer();
     }