45 lines
1.0 KiB
Plaintext
45 lines
1.0 KiB
Plaintext
shader_type spatial;
|
|
render_mode cull_disabled;
|
|
|
|
uniform float fluff_scale = 0.2;
|
|
|
|
uniform sampler2D albedo: source_color;
|
|
uniform sampler2D normals: hint_normal;
|
|
|
|
uniform vec3 color_dark: source_color;
|
|
uniform vec3 color_light: source_color;
|
|
|
|
varying vec2 remapped_uv;
|
|
|
|
void vertex() {
|
|
remapped_uv = (UV - vec2(0.5)) * 2.0;
|
|
|
|
VERTEX += TANGENT * remapped_uv.x * fluff_scale;
|
|
VERTEX -= BINORMAL * remapped_uv.y * fluff_scale;
|
|
|
|
NORMAL = normalize(VERTEX);
|
|
}
|
|
|
|
void fragment() {
|
|
if (!FRONT_FACING) NORMAL = -NORMAL;
|
|
|
|
vec4 albedo_sample = texture(albedo, UV).rgba;
|
|
ALBEDO = mix(color_dark, color_light, length(remapped_uv));
|
|
ALPHA = albedo_sample.a;
|
|
ALPHA_SCISSOR_THRESHOLD = 0.95;
|
|
|
|
BACKLIGHT = color_light * 1.5;
|
|
ROUGHNESS = 0.4;
|
|
SPECULAR = 0.2;
|
|
|
|
AO = mix(0.5, 1.0, smoothstep(-1.0, 2.0, VERTEX.y));
|
|
AO_LIGHT_AFFECT = 0.25;
|
|
|
|
NORMAL_MAP = texture(normals, UV).xyz;
|
|
}
|
|
|
|
//void light() {
|
|
// // Called for every pixel for every light affecting the material.
|
|
// // Uncomment to replace the default light processing function with this one.
|
|
//}
|