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. //}