ludic/changes/bake-images.md
Orkuncakilkaya 6c690c5db6 render3d + lab: bakes as PNGs, and impostors, the sky's light and the carpet read from their bakes
ludic.lab: lab_png_write / lab_png_write_from (raw 8-bit, 1-4 channels, stored deflate) in png_write.ludic,
importable alone with its own LabPngState; png_convert.ludic's previews of float textures (R32F min..max,
RG16F x255, HDR x/(1+x) + sRGB); lab_ppm_to_png on the same encoder.
render3d: bake_load.ludic - impostor_from_baked / impostor_source / impostor_refill (a fog re-open reads
the bake), sky_baked_in and sky_precompute trying the bake at the start yaw (sky_compute is the
convolution, and sky_ibl_bytes always uses it), carpet_from_baked / carpet_bytes / carpet_finish,
bake_part_count / _len / _off. Compile-only: nothing run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 19:10:06 +03:00

938 B

bump: minor type: feature Bakes you can look at, and three more of the renderer's textures read from one. ludic.lab writes raw 8-bit pixels (1 to 4 channels) as a PNG (lab_png_write, png_write.ludic, importable alone with its own LabPngState) and turns float textures into honest previews (png_convert.ludic: R32F min..max as grey, RG16F as red and green x255, HDR RGBA16F as x/(1+x) then sRGB). ludic.render3d takes three bakes the game names (bake_load.ludic) and makes each as before when one is missing or stale: an impostor's atlases (impostor_from_baked, and a fog opening past its cards reads the bake again instead of painting), the sky's image-based light at the start yaw per prefilter width (sky_baked_in; any other turn of the sky is convolved), and the grass carpet (carpet_from_baked, carpet_bytes). impostor_from_bytes returns null, keeping nothing, when the bytes are not the impostor's shape.