OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-tps / shaders / terrain_morph.gdshader

21 lines · gdshader ref:
shader_type spatial;
render_mode cull_back;

uniform float morph_t : hint_range(0.0, 1.0) = 1.0;
uniform vec3 lod_color : source_color = vec3(0.4, 0.5, 0.3);

void vertex() {
    // Coarse position packed in CUSTOM0.xyz (chunk-local, RGBA_FLOAT)
    vec3 pos_coarse = CUSTOM0.xyz;
    // Coarse normal in CUSTOM1.xyz (RGBA_FLOAT)
    vec3 normal_coarse = CUSTOM1.xyz;

    // Interpolate between coarse (parent LOD) and fine (current LOD)
    VERTEX = mix(pos_coarse, VERTEX, morph_t);
    NORMAL = normalize(mix(normal_coarse, NORMAL, morph_t));
}

void fragment() {
    ALBEDO = lod_color;
}