WebGPURenderer: Transmission - Backdrop 3/3#27880
Conversation
|
Looking good! Do you mind adding stats.js? |
|
Another thing I noticed is that the transmission seems to be one frame behind? (top-left sphere show the issue clearly) Screen.Recording.2024-03-14.at.2.37.11.PM.mov |
|
Let me know when this is ready to be reviewed again. The links in the first post no longer work. |
Yes! I think we can review it again. |
|
New links... I removed the old examples but I can recovery if necessary these are the new |
|
I've noticed a minor thing in |
Yes please 🙏 |
|
@Mugen87 I think that this is the same problem mentioned here #27880 (comment) referring to I think it's better to do this in another PR, this one is already very large, and makes very significant changes to the engine. Explaining better this #27880 (comment) comment, to continue the agonotic renderer, the Renderer needs to have all the necessary resources so that we do not execute this process in core, for example in |
|
@mrdoob The same code was used, just this change based from url parameter:
|
|
@mrdoob I think performance will no longer be a problem, I just did some tests on the M1 in Chrome with the frame-rate-limit disabled and got an average of Only the points mentioned above that I must resolve in other PRs. |
|
Looks good! |

Related issue: #25903, #26196, #27850
Introduction
material.backdropNodeallowed the manipulation of rendered objects as layers, similar to what we can do in Photoshop, for example, to add a node tooverlayor any other filter with objects from the back, simply addmaterial.backdropNode = viewportSharedTexture().overlay( someNode ).Here some exampels - https://threejs.org/examples/?q=backdrop
This PR introduces the last part of the
backdropimplementation. This required some significant changes to the architecture, more details in the schematic below.Schema
WebGPURenderer - New
WebGLRenderer - Current
Now all rendering is done on
linear-colorspace, and only if color space conversion or tone mapping is needed, a simple post-processing layer is applied to the final rendering. This approach honors the settings defined in rendering regardless of whether the material is set tomaterial.toneMapped=falseormaterial.colorSpaced=false.Refraction over Refraction
One of the big benefits is that we can have refraction over refraction, as we don't need RenderPass to
backdropwork.WebGPURenderer-> webgpu_loader_gltf_transmission_webgpuWebGLRenderer-> webgl_loader_gltf_transmission_webglwebgpu_loader_transmission
material.toneMapped=falseandmaterial.colorSpaced=falseare no longer supported, these settings must be defined in therenderer.