This is the testing Godot forums! All forum posts unique to this forum will be deleted! Please use the main forums here for any posts you want to keep. All forum rules still apply.
Postprocessing with depth pass and transparent objects
Hey
I'm trying to create a custom post process on top of everything (including transparent objects) that requires the depth pass. I've tried using the screen-reading technique (https://docs.godotengine.org/en/3.1/tutorials/shading/advanced_postprocessing.html) but SCREEN_TEXTURE grabs the screen before transparent objects are being drawn What would be the best way of doing this without rendering twice the scene ?
Thank you in advance !
Comments
Make sure the transparent objects are using depth draw alpha pre-pass:
https://docs.godotengine.org/en/stable/tutorials/3d/spatial_material.html#depth-draw-mode
edit: or maybe it should be always, one of those I think.
Hum thanks it's half-resolving my issue as I now see my object, however the Albedo does not show anymore at some point when I'm rotating my camera, this is quite strange. Here is my transparent shader header, and I simply write to the ALPHA and ALBEDO in the frag.
Might some of your models normals be inverted? Might have to adjust the cull mode.
My normals and cull are fine...
This is simply a limitation of
SCREEN_TEXTURE
. It will only have opaque objects rendered in it. The reason why it shows as black might be because the depth was generated in a pre-pass, but no color information because transparent objects don't get rendered in it.Ok, sorry to bother you with my question. Assuming the fact that I want to use Viewports and no "hacky quad post process technique"; how could I setup a 2 pass shader using depth. Let me explain in details:
I need to blur an object in the scene, but only one large object and this specific object intersects with others. So in the end I need depth information and two post process shaders. How can I do that properly in godot ? Thanks in advance !
Have you solved this? I'm having the same problem.
You could do it with a 2D shader, but I don't think the depth buffer can be accessed then.
@SIsilicon28 was/is working on giving access to buffers via viewport texture.