Topic was automatically imported from the old Question2Answer platform.
Asked By
User1011
In Godot 3.0.6 (Ubuntu & Win7), I try to recreate the light effect from Darkwood, but with CanvasItemMaterial → Light Mode → Light Only, the shown part becomes transparent.
I tried to use a custom shader, but it doesn’t make any diffrence…
shader_type canvas_item;
void fragment() {
if(AT_LIGHT_PASS) {
// For all fragments in the light
COLOR = vec4(texture(TEXTURE, UV).rgb, 1.0);
}
else {
// For all other fragments
COLOR = vec4(texture(TEXTURE, UV).rgb, 0.0);
}
}
Is there a problem with the 2d lighting system or am i missing something?
You have to change the Light2D mode to mix (not add !) and by using a shader, like the one above, process every pixel’s color as you want, based on if the light passes through it or not. And shadows work just fine! And for a sprite to be visible only under light, just set it’s material mode to light only.
Also if you want a light to affect only specific sprites, you have to set the Range → Item Cull Mask level of the Light2D to the corresponding level of the sprites.