ludic/packages/ludic.render3d
Orkuncakilkaya 451bc9063c feat(render3d): gpu_vk_draw.ludic - Vulkan programs, pipelines, uniform blocks and passes
The drawing half of the Vulkan backend, compiled into render3d and not yet reached from it:

- gvk_program: a program handle as its manifest variant - two SPIR-V modules, a descriptor set
  layout (the vertex block at 0, the fragment block at 1, the samplers at their manifest bindings)
  and a pipeline layout. Nothing is compiled at run time.
- gvk_pipeline: one pipeline per program, recorded vertex layout, render state and pass formats,
  built the first time that combination draws. Attributes the shader does not read are left out;
  the front face is clockwise, since neither API flips y between clip space and its target rows.
- gvk_uniform / gvk_u_set / gvk_bind_texture: loose uniforms written into each stage's block at
  the manifest's offsets and array strides; gvk_draw_set copies the blocks into a per-frame ring
  at the device's alignment and fills a descriptor set from a per-frame pool, with a white 1x1
  texture for a sampler nothing was bound to.
- The frame: one command buffer; a framebuffer bind ends the pass and the next begins at its first
  clear or draw (a clear that comes first is the load op); attachments move to attachment layouts
  for the pass and back to SHADER_READ_ONLY after it, a cascade drawn through a view of its layer.
  gvk_present submits and waits; gvk_screenshot reads the screen image back bottom row first.

r3d.ludic now imports gpu_manifest.ludic too. Textures remember their size.

OpenGL frames byte-identical at the five viewpoints; 59 self-tests pass; VKRES OK and VKDEVICE OK.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 12:11:03 +03:00
..
shaders fix(shaders): Vulkan SPIR-V keeps the near half of the depth range 2026-09-15 12:05:43 +03:00
actor.ludic refactor(render3d): programs, GPU timers and the context behind gpu.ludic 2026-09-15 11:33:01 +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 feat(render3d): r3d_present and r3d_screenshot - the end of a frame through the layer 2026-09-15 11:43:55 +03:00
gpu_manifest.ludic feat(render3d): read the SPIR-V manifest the way a Vulkan backend will 2026-09-15 10:41:43 +03:00
gpu_vk.ludic feat(render3d): Vulkan textures, samplers and buffers 2026-09-15 11:57:28 +03:00
gpu_vk_draw.ludic feat(render3d): gpu_vk_draw.ludic - Vulkan programs, pipelines, uniform blocks and passes 2026-09-15 12:11:03 +03:00
gpu_vk_res.ludic feat(render3d): gpu_vk_draw.ludic - Vulkan programs, pipelines, uniform blocks and passes 2026-09-15 12:11:03 +03:00
grass.ludic refactor(render3d): programs, GPU timers and the context behind gpu.ludic 2026-09-15 11:33:01 +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): programs, GPU timers and the context behind gpu.ludic 2026-09-15 11:33:01 +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): programs, GPU timers and the context behind gpu.ludic 2026-09-15 11:33:01 +03:00
prof.ludic refactor(render3d): programs, GPU timers and the context behind gpu.ludic 2026-09-15 11:33:01 +03:00
programs.ludic refactor(render3d): programs, GPU timers and the context behind gpu.ludic 2026-09-15 11:33:01 +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_vk_draw.ludic - Vulkan programs, pipelines, uniform blocks and passes 2026-09-15 12:11:03 +03:00
render.ludic feat(render3d): r3d_present and r3d_screenshot - the end of a frame through the layer 2026-09-15 11:43:55 +03:00
scatter.ludic refactor(render3d): programs, GPU timers and the context behind gpu.ludic 2026-09-15 11:33:01 +03:00
shadow.ludic refactor(render3d): render targets and passes behind gpu.ludic 2026-09-15 10:41:43 +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): programs, GPU timers and the context behind gpu.ludic 2026-09-15 11:33:01 +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): programs, GPU timers and the context behind gpu.ludic 2026-09-15 11:33:01 +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): programs, GPU timers and the context behind gpu.ludic 2026-09-15 11:33:01 +03:00