ludic/packages/ludic.render3d
Orkuncakilkaya 4d3479d431 refactor(render3d): textures behind gpu.ludic, their sampler state recorded
Texture creation, 2D and array uploads, pixel packing, filters, wraps, comparison, border,
anisotropy, mipmaps, texture units, read-backs and freeing now go through gpu_tex_* and
gpu_bind_sampler, and no other file names them. Each call is the one GL call it replaces,
in the same order, so OpenGL renders bit-identically at the fixed viewpoints and the game's
self-tests report what they did before.

What those calls say about a texture - size, format, layers, min and mag filter, wraps,
comparison, mipmaps, anisotropy - is recorded per handle as it is set: a backend with
immutable images and separate sampler objects creates both from exactly that.
r3d_bind_tex takes a texture kind (GPU_TEX2D / GPU_TEX2D_ARRAY) instead of a GL target.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 10:29:28 +03:00
..
shaders feat(render3d): every shader variant as Vulkan SPIR-V, built ahead of time 2026-09-15 10:11:31 +03:00
actor.ludic refactor(render3d): textures behind gpu.ludic, their sampler state recorded 2026-09-15 10:29:28 +03:00
assets.manifest feat(gl): OpenGL 4.1 and the ludic.render3d renderer 2026-09-10 03:31:12 +03:00
camera.ludic feat(gl): OpenGL 4.1 and the ludic.render3d renderer 2026-09-10 03:31:12 +03:00
collide.ludic feat(render3d): replace the world at run time, water bodies, terrain_sea 2026-09-13 00:03:40 +03:00
daylight.ludic feat(render3d): gpu.ludic - the seam for a second graphics API, and what the GPU can do 2026-09-15 09:52:12 +03:00
FEATURES.md feat: per-voice audio, outlines for what is not an actor, and a coast 2026-09-11 15:25:46 +03:00
fmath.ludic feat(render3d): gpu.ludic - the seam for a second graphics API, and what the GPU can do 2026-09-15 09:52:12 +03:00
gltf.ludic refactor(render3d): vertex data and draws behind gpu.ludic 2026-09-15 10:21:55 +03:00
gpu.ludic refactor(render3d): textures behind gpu.ludic, their sampler state recorded 2026-09-15 10:29:28 +03:00
grass.ludic refactor(render3d): vertex data and draws behind gpu.ludic 2026-09-15 10:21:55 +03:00
mesh.ludic refactor(render3d): vertex data and draws behind gpu.ludic 2026-09-15 10:21:55 +03:00
overlay.ludic refactor(render3d): vertex data and draws behind gpu.ludic 2026-09-15 10:21:55 +03:00
package.ludic feat(gl): OpenGL 4.1 and the ludic.render3d renderer 2026-09-10 03:31:12 +03:00
post.ludic refactor(render3d): textures behind gpu.ludic, their sampler state recorded 2026-09-15 10:29:28 +03:00
prof.ludic feat(gl): OpenGL 4.1 and the ludic.render3d renderer 2026-09-10 03:31:12 +03:00
programs.ludic refactor(render3d): textures behind gpu.ludic, their sampler state recorded 2026-09-15 10:29:28 +03:00
quat.ludic feat(gl): OpenGL 4.1 and the ludic.render3d renderer 2026-09-10 03:31:12 +03:00
r3d.ludic feat(render3d): gpu.ludic - the seam for a second graphics API, and what the GPU can do 2026-09-15 09:52:12 +03:00
render.ludic feat(render3d): gpu.ludic - the seam for a second graphics API, and what the GPU can do 2026-09-15 09:52:12 +03:00
scatter.ludic refactor(render3d): textures behind gpu.ludic, their sampler state recorded 2026-09-15 10:29:28 +03:00
shadow.ludic refactor(render3d): textures behind gpu.ludic, their sampler state recorded 2026-09-15 10:29:28 +03:00
skin.ludic refactor(render3d): vertex data and draws behind gpu.ludic 2026-09-15 10:21:55 +03:00
sky.ludic refactor(render3d): textures behind gpu.ludic, their sampler state recorded 2026-09-15 10:29:28 +03:00
stream.ludic feat(render3d): replace the world at run time, water bodies, terrain_sea 2026-09-13 00:03:40 +03:00
terrain.ludic refactor(render3d): textures behind gpu.ludic, their sampler state recorded 2026-09-15 10:29:28 +03:00
texture.ludic refactor(render3d): textures behind gpu.ludic, their sampler state recorded 2026-09-15 10:29:28 +03:00
water.ludic refactor(render3d): textures behind gpu.ludic, their sampler state recorded 2026-09-15 10:29:28 +03:00