fallingCand/shaders/sand_display.frag
2025-11-29 13:59:31 -08:00

27 lines
686 B
GLSL

#version 430 core
out vec4 FragColor;
uniform vec2 u_resolution; // framebuffer size in pixels
uniform ivec2 u_gridSize; // sand grid size
uniform usampler2D u_state; // GL_R8UI texture
void main() {
vec2 fragCoord = gl_FragCoord.xy;
// Normalized coordinates
vec2 uv = fragCoord / u_resolution;
uv.y = 1.0 - uv.y;
// Map to grid coordinates
ivec2 cell = ivec2(uv * vec2(u_gridSize));
cell = clamp(cell, ivec2(0), u_gridSize - ivec2(1));
uint v = texelFetch(u_state, cell, 0).r;
vec3 color = (v == 1u)
? vec3(0.9, 0.8, 0.1) // sand
: vec3(0.05, 0.05, 0.10); // background
FragColor = vec4(color, 1.0);
}