DepthRenderer: effect not cached

Background

Version: git master and 7.44.0
Browser: any
Engine: any
Playground: Babylon.js Playground

Desc

In DepthRenderer, effects are expected to be cached, not rebuilt every frame, to save performance.

Actual

As shown in this playground, createEffect(depth) is called every frame, means the effect cache does not work.

The effect.defines is always null after creation.

Expected

Effects are not rebuilt if defines not changed.

--- a/packages/dev/core/src/Rendering/depthRenderer.ts
+++ b/packages/dev/core/src/Rendering/depthRenderer.ts
@@ -544,7 +544,8 @@ export class DepthRenderer {
                         shaderLanguage: this._shaderLanguage,
                     },
                     engine
-                )
+                ),
+                join
             );
         }

2 Likes

Great finding!

Would you like to create a PR about it?

2 Likes

Sure, here it is:

PG targeting the PR:

2 Likes