ucg-3d/assets/shaders/horizontal_world_uv.gdshader

17 lines
No EOL
586 B
Text

shader_type spatial;
uniform sampler2D albedo_texture : repeat_enable, filter_nearest, source_color;
uniform vec2 horizontal_uv_offset = vec2(0.0);
uniform vec2 uv_scale = vec2(1.0);
void vertex() {
vec3 world_position = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz;
vec3 world_normal = (MODEL_NORMAL_MATRIX * NORMAL).xyz;
vec2 uv_y = world_position.xz + horizontal_uv_offset;
//vec3 normal_weights = world_normal / (world_normal.x + world_normal.y + world_normal.z);
UV = mix(UV, uv_y * uv_scale, abs(world_normal.y));
}
void fragment() {
ALBEDO = texture(albedo_texture, UV).rgb;
}