This commit is contained in:
Gaël committed 2026-10-19 20:59:15 +02:00
commit 87bff164f1
416 files changed
+279512

No files matched your search

+23
View File
@@ -0,0 +1,23 @@
#version 450
#extension GL_GOOGLE_include_directive : require
layout(local_size_x = 8, local_size_y = 8) in;
#include "common.glsl"
// The light of the entities (LightComponent, up to 128 near the window) at every cell of the window, once per frame: render.comp's lighting() reads it.
// (render.comp summed every light for every output pixel - some 36 pixels per cell in a large window - and grew slow with the lanterns and fires of a
// long session.)
layout(std430, set = 0, binding = 45) readonly buffer Lit { uvec4 lhead; vec4 lent[]; }; // count, then (x, y, radius, strength), (r, g, b, 0) per light
layout(std430, set = 0, binding = 57) buffer LitCells { uvec2 litc[]; }; // per cell: the summed light, half floats (r g, b)
void main() {
const ivec2 cp = ivec2(gl_GlobalInvocationID.xy);
if (cp.x >= pc.gw || cp.y >= pc.gh) return;
const vec2 w = vec2(cp + ivec2(pc.view_x, pc.view_y)) + 0.5;
vec3 L = vec3(0.0);
for (uint i = 0u; i < min(lhead.x, 128u); ++i) {
const vec4 a = lent[2u * i], b = lent[2u * i + 1u];
const float d = distance(w, a.xy) / a.z;
if (d < 1.0) L += b.rgb * (1.0 - d) * (1.0 - d) * (1.0 - d) * 1.1 * a.w;
}
litc[cp.y * pc.gw + cp.x] = uvec2(packHalf2x16(L.rg), packHalf2x16(vec2(L.b, 0.0)));
}