kestrelm/Creature_Godot

Shader Incompatibility

LemonadeFlashbang opened this issue · 0 comments

In order to make a sprite flash white in Godot, you need to apply a shader. This is a common use case for when you want a player or enemy to flash white upon, say, taking damage.

However, applying a shader to a Creature node inside of Godot causes any transparency specified in your animation set to vanish. For example:

image
In this image, we see the player character's hose isn't spraying any goop- and the enemy character has no blood droplets present.

image
The image above shows what happens when we apply any shader material to our Creature sprite- every element present in the initial mesh reappears.

This effectively causes all Creature animated objects to be incompatible with shaders entirely- which can be a substantial issue.

My guess is that different portions of the mesh are being hidden by the Creature node via a shader behind the scenes. I'm also guessing that fixing this issue might be relatively complicated.

However, if that's the case I was wondering if it would be possible to expose that shader's code, so we could then extend it via new functionality in our own projects. Ex: Copy the shader present, but then add the white-out variable and functionality to all non-transparent elements.