export declare const GRID_VERTEX_SHADER = "\nstruct Uniforms {\n viewProjection: mat4x4,\n cameraPos: vec3,\n};\n@group(0) @binding(0) var u: Uniforms;\n\nstruct VOut {\n @builtin(position) position: vec4,\n @location(0) worldPos: vec3,\n};\n\n// Full-screen XZ quad, large enough for visible grid\nconst EXTENT = 500.0;\nconst positions = array, 6>(\n vec2(-1, -1), vec2(1, -1), vec2(1, 1),\n vec2(-1, -1), vec2(1, 1), vec2(-1, 1),\n);\n\n@vertex fn vs(@builtin(vertex_index) vi: u32) -> VOut {\n let p = positions[vi];\n let worldPos = vec3(u.cameraPos.x + p.x * EXTENT, 0.0, u.cameraPos.z + p.y * EXTENT);\n var out: VOut;\n out.position = u.viewProjection * vec4(worldPos, 1.0);\n out.worldPos = worldPos;\n return out;\n}\n"; export declare const GRID_FRAGMENT_SHADER = "\nstruct Uniforms {\n viewProjection: mat4x4,\n cameraPos: vec3,\n};\n@group(0) @binding(0) var u: Uniforms;\n\nstruct FIn {\n @location(0) worldPos: vec3,\n};\n\nfn gridLine(coord: f32, scale: f32) -> f32 {\n let d = fract(coord / scale + 0.5) - 0.5;\n let deriv = fwidth(coord / scale);\n return 1.0 - smoothstep(-deriv, deriv, abs(d) - deriv);\n}\n\n@fragment fn fs(input: FIn) -> @location(0) vec4 {\n let dist = length(input.worldPos.xz - u.cameraPos.xz);\n\n // Minor grid (1m)\n let minorX = gridLine(input.worldPos.x, 1.0);\n let minorZ = gridLine(input.worldPos.z, 1.0);\n let minor = max(minorX, minorZ);\n\n // Major grid (10m)\n let majorX = gridLine(input.worldPos.x, 10.0);\n let majorZ = gridLine(input.worldPos.z, 10.0);\n let major = max(majorX, majorZ);\n\n // Axis lines (each uses its own fwidth for correct perspective scaling)\n let xAxisWidth = fwidth(input.worldPos.z) * 1.5;\n let xAxis = 1.0 - smoothstep(0.0, xAxisWidth, abs(input.worldPos.z));\n let zAxisWidth = fwidth(input.worldPos.x) * 1.5;\n let zAxis = 1.0 - smoothstep(0.0, zAxisWidth, abs(input.worldPos.x));\n\n // Base grid color\n var color = vec3(0.3, 0.3, 0.3);\n var alpha = minor * 0.15 + major * 0.25;\n\n // X-axis = red, Z-axis = blue\n if (xAxis > 0.01) {\n color = mix(color, vec3(0.8, 0.2, 0.2), xAxis);\n alpha = max(alpha, xAxis * 0.8);\n }\n if (zAxis > 0.01) {\n color = mix(color, vec3(0.2, 0.2, 0.8), zAxis);\n alpha = max(alpha, zAxis * 0.8);\n }\n\n // Fade with distance\n let fadeStart = 50.0;\n let fadeEnd = 200.0;\n let fade = 1.0 - smoothstep(fadeStart, fadeEnd, dist);\n alpha *= fade;\n\n if (alpha < 0.001) { discard; }\n return vec4(color, alpha);\n}\n"; //# sourceMappingURL=grid-shader.d.ts.map