feat(render3d): load steps for a loading screen, four quality switches, and the ring's uniform usage
- r3d_open opens the window with nothing baked; r3d_load_count / r3d_load_step run the rest (sky and light, terrain, shadow and screen targets, cover and actors, grass) so a game can present a loading frame between them. r3d_init is the same calls in a row. - sky_set_quality(width): the prefiltered sky light at 256 / 512 / 1024, baked again. - post_set_msaa(samples): multisampling on OpenGL, remade in place (post_msaa_live is false on Vulkan); post_free frees the multisampled framebuffer too. - STREAM_BUDGET_US is a variable; r3d_fog_scale multiplies the fog the day sets. - Vulkan buffers carry UNIFORM_BUFFER usage: the frame's ring is bound as uniform buffers and was created without it (VUID-VkWriteDescriptorSet-descriptorType-00330, found on MoltenVK). OpenGL frames at the five viewpoints unchanged; the game's 59 self-tests pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
b9eda646fc
commit
f2b976c976
8 changed files with 89 additions and 21 deletions
11
changes/quality-switches.md
Normal file
11
changes/quality-switches.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
bump: minor
|
||||
type: feat
|
||||
**More of the renderer's quality is a switch a game can offer.**
|
||||
|
||||
- `sky_set_quality(width)`: the prefiltered sky light at 256, 512 or 1024 wide (half as tall),
|
||||
baked again at once.
|
||||
- `post_set_msaa(samples)`: 1, 2 or 4 samples for the scene on OpenGL, remaking the screen targets in
|
||||
place (`post_msaa_live()` is false on Vulkan, which has no sample counts yet); `post_free` now
|
||||
frees the multisampled framebuffer too.
|
||||
- `STREAM_BUDGET_US` is a variable: the microseconds a frame may spend generating streamed cover.
|
||||
- `r3d_fog_scale`: a multiplier over the fog density the daylight and the weather set.
|
||||
7
changes/r3d-load-steps.md
Normal file
7
changes/r3d-load-steps.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
bump: minor
|
||||
type: feat
|
||||
**A loading screen can show the renderer's start-up as it happens.** `r3d_open(w, h, title)` opens
|
||||
the window and the graphics backend with nothing baked, and `r3d_load_count()` / `r3d_load_step(i)`
|
||||
run the rest - the sky and its light, the terrain, the shadow and screen targets, the scattered cover
|
||||
and actors, the grass - one step at a time, so a game can draw and present a frame between them.
|
||||
`r3d_init` is those same calls in a row and is unchanged for everything that uses it.
|
||||
Loading…
Add table
Add a link
Reference in a new issue