Seems like roblox is having a hard time rendering particles over decals over other decals and fog?
The video posted gives me an error message when I try to view it.
EDIT: Silly me, I can view it on youtube.
Can you attach the place file to make this easier to reproduce?
It seems like this âkindâ of bug happens with decals when you try and overlap them with transparency (or fog?)
Notice how the green decal is dominant over the blue in this gif, despite it being behind. What this gif doesnât show is every now and then the âtopâ decal will swap depending on the cameraâs position, which I believe is also happening for you.
Other then making the horizon into a none-transparent part (which will ruin the overall look), is there any way to âfixâ this rendering bug?
@ROBLOX Rendering team/anyone who can answer.
Why does the furthest away decal render over the nearest decal, instead of nearest rendering over furthest? And will you ever change the way their currently rendered to fix this issues?
This bug also happen with surface GUIsâŚ
It is a bug with transparency of anything + particles
Mind posting a repro for this? Iâm not sure if itâs the same issue as the one in the original post or not.
This issue has multiple causes:
-
We donât do a 100% correct sort of particles wrt other transparent geometry. No other game does. We do per-object sorting of emitters and other transparent parts/decals. Youâre inside a giant transparent object so youâre witnessing the effects of sorting object positions which does not make sense here.
-
Our current CSG decal implementation is including all triangles in the decal mesh instead of just the ones that need the texture from the relevant side projected. This has some other issues so weâre planning to fix it.
You can observe 2 by enabling bounding box visualization (ShowBoundingBoxes in Studio Rendering settings), creating a CSG part with 1 decal and making the part Transparency=1. Note how the bounding box envelops the entire part instead of just the decal faces. -
We have a special-case optimization for trees that merges decal geometry on the same part in a single object. This is important since if you have a transparency=1 block with 6 decals you donât want to use 6 draw calls to render that - and this was a semi-common case when the rendering system was developed (all those Minecraft games :-/)
-
Your Sky object has decals only on one face, but a mesh that covers the entire area, making decisions about rendering order complicated - even changing 2/3 above would not fix it.
So, we plan to fix 2 - but fixing it alone is not enough. Hereâs my recommendation (I have not tried it):
- Segment Sky geometry into at least 5 pieces - top/left/right/bottom/front. Make it so the top has its bottom point way above the character height.
- Segment Sand geometry into 5 pieces - top/left/right/bottom/front. Top can have just the cap.
This should in theory be enough to fix this. The second part would not be necessary if not for 2/3 above - weâll fix 2 but 3 is harder to fix since itâs required for performance on some levels.
In general transparency in real-time graphics does not have good solutions that are both reasonably performant and visually consistent. We usually try to fix issues if they are fixable within the object-sorting framework (e.g. @asimo3089 reported a transparency sorting issue some time ago that was actually a bug / precision issue in our code and we since fixed that), but we canât really have a 100% correct solution
There is one reasonably cost-efficient approach that Iâve been meaning to try but even that probably wonât work on all hardware and it has confusing behavior if the objects are really close - if the transparent layers are far enough it results in believable rendering but in cases like @Rindir has posted it would result in the loss of depth perception on these layers and itâs not clear that this can work in ROBLOX.
This also happens when you overlap transparent parts.