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>
This commit is contained in:
parent
4fc4768083
commit
451bc9063c
3 changed files with 893 additions and 0 deletions
|
|
@ -4,12 +4,14 @@
|
|||
# ============================================================================
|
||||
import "fmath.ludic"
|
||||
import "gpu.ludic"
|
||||
import "gpu_manifest.ludic"
|
||||
import "gpu_vk.ludic"
|
||||
import "gpu_vk_res.ludic"
|
||||
import "prof.ludic"
|
||||
import "programs.ludic"
|
||||
import "texture.ludic"
|
||||
import "mesh.ludic"
|
||||
import "gpu_vk_draw.ludic"
|
||||
import "camera.ludic"
|
||||
import "sky.ludic"
|
||||
import "daylight.ludic"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue