That's good to know. I faked it with the graffiti in Decay using planes and alpha scissor textures, but that only worked since it was a static demo.

@Calinou said:

@TwistedTwigleg said: Godot 4.0 will have decals, but in Godot 3.X there is no built-in decal system. I'm not sure if the decal system in Godot 4.0 works with skinned meshes, as I think it's projection based.

Godot 4.0's decal system does not rely on mesh generation – it applies decals onto materials in real-time (with no visible offset between the decal and the underlying material). This makes it perform well even when decals are applied to complex, dynamic meshes.

Ah okay, I thought it was more projection based using a shader (not necessary geometry), similar to the decal shader I wrote for Godot 3.X and how decals are done for most deferred rendering. I didn’t realize it was projected onto the decals.

Good to know and makes me more excited to try decals in Godot 4.0 in the future :smile:

@TwistedTwigleg said:

@Calinou said:

@TwistedTwigleg said: Godot 4.0 will have decals, but in Godot 3.X there is no built-in decal system. I'm not sure if the decal system in Godot 4.0 works with skinned meshes, as I think it's projection based.

Godot 4.0's decal system does not rely on mesh generation – it applies decals onto materials in real-time (with no visible offset between the decal and the underlying material). This makes it perform well even when decals are applied to complex, dynamic meshes.

Ah okay, I thought it was more projection based using a shader (not necessary geometry), similar to the decal shader I wrote for Godot 3.X and how decals are done for most deferred rendering. I didn’t realize it was projected onto the decals.

Good to know and makes me more excited to try decals in Godot 4.0 in the future :smile:

so the decals in godot4 arent projection based?

Based on my understanding of what @Calinou said, they are shader based and not dependent on the mesh, but instead the material.

My guess is that it’s similar to deferred rendering and the separate passes, where you can draw/render directly on top of existing materials. It is kinda like it’s drawn in another layer in Photoshop or Gimp, it draws on top of the result from the render and then adds the decals after that.

This has a lot of advantages with visuals, as essentially it doesn’t have to know anything the mesh underneath and instead only the finished render, avoiding things like decal stretching and projection issues. I think it’s more complex to implement due to the lighting and normal passes, as well as making sure it looks correct at extreme angles, but it probably gets the required rendering information from Godot to avoid or minimize these issues.

That said, that is just my hunch on how it works. It will be interesting to use them, look at the code, and see how it works.


(Side note: In my prior post, I meant “projected onto the materials” not “projected onto the decals” :sweat_smile: )

from what ive seen of godot 4 , i thought it was projection based decals, so i assumed they wouldnt work with skinned meshes

@DJM said: from what ive seen of godot 4 , i thought it was projection based decals, so i assumed they wouldnt work with skinned meshes

That was my understanding as well, but if I understand what @Calinou said correctly (which to be fair, I may be misunderstanding), then it's more of a screen-space or material-based solution than a projection-based one.