/** * Terrain splat-map shader: PBR lighting with 3-texture blending. * * Vertex format 40B: pos(3) + normal(3) + uv(2) + splatWeights(2) = 10 floats. * Fragment blends 3 albedo textures using per-vertex splat weights: * w0 = grass, w1 = rock, w2 = 1 - w0 - w1 (snow/dirt). */ export declare const TERRAIN_VERTEX_SHADER = "\nstruct ObjectUniforms {\n mvp: mat4x4,\n model: mat4x4,\n normalMatrix: mat4x4,\n};\n\n@group(0) @binding(0) var object: ObjectUniforms;\n\nstruct VertexInput {\n @location(0) position: vec3,\n @location(1) normal: vec3,\n @location(2) uv: vec2,\n @location(3) splatWeights: vec2,\n};\n\nstruct VertexOutput {\n @builtin(position) clipPosition: vec4,\n @location(0) worldPosition: vec3,\n @location(1) worldNormal: vec3,\n @location(2) uv: vec2,\n @location(3) splatWeights: vec2,\n};\n\n@vertex\nfn main(input: VertexInput) -> VertexOutput {\n var output: VertexOutput;\n let worldPos = object.model * vec4(input.position, 1.0);\n output.clipPosition = object.mvp * vec4(input.position, 1.0);\n output.worldPosition = worldPos.xyz;\n output.worldNormal = (object.normalMatrix * vec4(input.normal, 0.0)).xyz;\n output.uv = input.uv;\n output.splatWeights = input.splatWeights;\n return output;\n}\n"; export declare const TERRAIN_FRAGMENT_SHADER: string; //# sourceMappingURL=terrain-shader.d.ts.map