26 lines
767 B
Plaintext
26 lines
767 B
Plaintext
|
@shader_type spatial;
|
||
|
@render_mode unshaded;
|
||
|
|
||
|
@uniform sampler2D albedo_texture;
|
||
|
@uniform vec3 light_color = vec3(1.0, 1.0, 1.0);
|
||
|
@uniform float outline_width = 0.05;
|
||
|
@uniform vec3 outline_color = vec3(0.0, 0.0, 0.0);
|
||
|
|
||
|
void fragment() {
|
||
|
// Fake directional light
|
||
|
vec3 light_dir = normalize(vec3(0.5, 1.0, -0.5));
|
||
|
vec3 norm = normalize(NORMAL);
|
||
|
float intensity = dot(norm, light_dir);
|
||
|
|
||
|
// Cel shading - Quantized lighting steps
|
||
|
float shade = step(0.1, intensity) * 0.3 +
|
||
|
step(0.3, intensity) * 0.4 +
|
||
|
step(0.6, intensity) * 0.3;
|
||
|
|
||
|
// Sample texture and apply shading
|
||
|
vec4 tex_color = texture(albedo_texture, UV);
|
||
|
vec3 final_color = tex_color.rgb * shade * light_color;
|
||
|
|
||
|
ALBEDO = final_color;
|
||
|
}
|