You can’t manually do what the transmission extension does because it’s currently not possible to access the transmission helper class from a user code, see these posts for context:
There is a bounty for obtaining a texture of the opaque objects in the scene:
opened 08:58PM - 26 Nov 22 UTC
Unclaimed
You will have to create a helper function to copy the current framebuffer into a… texture (this will have to work in WebGPU too!).
In addition, a new class simplifying the copying of opaque objects should be designed. It will have to register on the `RenderingGroup.onBeforeTransparentRendering` observable to copy the current framebuffer into a texture that will be available to the user.
This class will probably need to be configured with some image processing post processes, as requested by the user (details will be discussed at implementation time).
To facilitate the use of this texture as a refraction texture for standard / PBR materials, you will add a global scene.refractionTexture property (in the same way we have scene.environmentTexture for the case of reflection) which will be used by default by the materials if no specific refraction texture has been defined at the material level.
A visualization test and according doc should be added to the framework.
Once this texture has been obtained, simply use it as a refraction texture to simulate transmission.
Someone tried to make a PR out of it, but it didn’t work out:
BabylonJS:master
← grimdeathr:framebuffer-reuse
opened 05:38AM - 01 Feb 23 UTC
https://github.com/BitReelCo/BJS-PR-Bounty-Pool/issues/4