TSL: Pre-pass using global context#32276
Conversation
📦 Bundle sizeFull ESM build, minified and gzipped.
🌳 Bundle size after tree-shakingMinimal build including a renderer, camera, empty scene, and dependencies.
|
|
Very exciting stuff! |
|
It's interesting that the temporal filtering isn't really needed when the AO is used properly. |
|
Will be nice to see how will |
|
I guess the reason the GTAONode has a boolean for it is because it makes the pass slower? But seeing how subtle it is when the AO is used directly in the PBR shader makes me think it's not worth it. |
|
On that note, after this lands... Maybe we could consider implementing something like this: scene.aoNode = new GTAONode(); |
It's because not every app wants to use TAA. TAA is a requirement though for temporal filtering/accumulation. |
|
Even if you use TAA it's good to have a toggle for temporal filtering. Depending on the effect (e.g. SSGI) ghosting can be amplified and apps might want to use a denoiser instead. However, you loose quality that way so it really depends on the app which options works best. I've seen that similar effects in Unity also provides such toggles to accommodate the user requirements. But I agree the bedroom scene is not ideal. Hopefully, we can replace it at some point with a better asset. |
Are nodes aware of other nodes in the graph? Would be nice if the GTAO node was able to detect if the TAA node is going to be applied later and then run this code. |
I'm not sure if this fits in scene, because the pre-pass shares the same scene. We could have it in scenePass.aoNode = aoPassOutput.sample( screenUV ).r; |


Related issue: #28863,
Pre-Pass
I made some refinements to the API to support Pre-Pass with MRT; this is usually necessary and its need becomes particularly evident when using
velocity.AO Pre-Pass - there is bug when resize the window yet
AO No Pre-Pass
The benefits are quite evident, as a demonstration shows.
Pre-pass
Current
Process