You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The repo does not ship full game `.pk3` sets. For a **smallest valid `base/`** (one `.pk3` + `default.cfg`) so the client/server pass filesystem init without **“No game data”**, see [MINIMAL_GAME_SHELL.md](MINIMAL_GAME_SHELL.md). For a **demo layout** with optional `idtech3_demo.pk3`, see [examples/demo_skeleton/README.md](../examples/demo_skeleton/README.md). For **headless dedicated** smoke with maps + `qagame.qvm`, build [renderer_validation/devdata](renderer_validation/devdata/README.md) and point **`GAME_BASE`** at `rtest_base/`.
206
+
203
207
## Shader Compilation
204
208
205
209
Vulkan GLSL shaders are compiled to SPIR-V automatically during the CMake build:
Copy file name to clipboardExpand all lines: docs/ROADMAP.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ Priorities that keep **CI green** and **README/build truth** aligned:
7
7
**Long-arc goal (id Tech 6–8 class, incrementally):** converge on **lighting scale** (Forward+ / clustered lists), **temporal robustness** (history + motion vectors before heavy TAA/upscale), **trustworthy GPU glTF**, and **locked-in validation** (Tier A everywhere, Tier B where `GAME_BASE` exists). Treat **Metal / RTX / full-cluster deferred** as later tiers once the forward path and CI are boringly stable—not parallel science projects on `main`.
8
8
9
9
1.**Watch GitHub Actions on `main`** - especially **Android** (CMake + Gradle `assembleDebug`, OpenSSL/Lua/FetchContent caches) and **MSYS curl**.
10
-
2.**Renderer validation** - Tier B (self-hosted `GAME_BASE`) and Tier C (manual GPU notes) when you have hardware/content; keep `renderer_regression_check` passing on default CI (manifest + GLSL + **IQM_MORPH_TOP_K** C/GLSL parity + **glTF vs IQM** joint/morph `#define` parity + **OpenGL vs Vulkan**`IQM_MORPH_*` in `tr_local.h`).
10
+
2.**Renderer validation** - Tier B (self-hosted `GAME_BASE`) and Tier C (manual GPU notes) when you have hardware/content; keep `renderer_regression_check` passing on default CI (manifest + GLSL + **IQM_MORPH_TOP_K** C/GLSL parity + **glTF vs IQM** joint/morph `#define` parity + **OpenGL vs Vulkan**`IQM_MORPH_*` in `tr_local.h` + Forward+ **`gen_frag.tmpl` tile stride** vs **`MAX_PER_TILE`**; repo manifest includes **`docs/FORWARD_PLUS_PIPELINE_AUDIT.md`**).
11
11
3.**glTF on Vulkan** - **GPU skinning/morph** (PBR + `r_gltfGpu`) uses **top-8** morph weights per draw (aligned with `GLTF_MAX_MORPH_TARGETS`), including **`RE_SetEntityMorphWeight`** with clip-driven weights; **`r_gltfGpuTangentFix`** (default on) re-orthonormalizes tangents on the GPU path after skin+morph; next polish: full **MikkTSpace**-style qtangent on GPU (neighborhood-aware). **OpenGL** now registers glTF/OBJ/MD5 with a **CPU tess** path (no `r_gltfGpu`).
12
12
4.**Android product** - missing `base/` / no pk3: logcat path + **Toast** with `.../base` and apkassets hint before exit; optional APK smoke.
13
13
@@ -87,7 +87,7 @@ Priorities that keep **CI green** and **README/build truth** aligned:
87
87
|----------|------|--------|
88
88
| P0 |**CI stability**| Fix any red matrix on `main`; Android OpenSSL/Lua first-build time - tune cache keys if needed |
89
89
| P1 |**glTF GPU path (polish)**| Entity morph + top-8 GPU morph (done); GPU tangent Gram–Schmidt after skin+morph via **`r_gltfGpuTangentFix`** (done); optional full MikkTSpace qtangent on GPU; validate on real assets |
90
-
| P1 |**Renderer validation**| Tier B/C as optional gates; `renderer_regression_check`: manifest (**`BUILD.md`**, **`docs/ROADMAP.md`**, **`src/renderers/vulkan/vk_temporal.h`**, **`docs/GLTF.md`**, …), GLSL validate, **IQM_MORPH_TOP_K** + **IQM_MORPH_MAX_CHANNELS** (OpenGL vs Vulkan `tr_local.h`), **GLTF_MAX_* vs IQM_*** header parity; **`tr_model_gltf.c`**`STATIC_ASSERT` for joint/morph caps + `IQM_MORPH_MAX_CHANNELS == IQM_MORPH_TOP_K`; PBR **`forward_plus_shade_strength`**`constant_id` vs **`vk_create_pipeline.c`**; **`vk_temporal`** reset enum vs reason-string / log-table drift guard |
90
+
| P1 |**Renderer validation**| Tier B/C as optional gates; `renderer_regression_check`: manifest (**`BUILD.md`**, **`docs/ROADMAP.md`**, **`docs/FORWARD_PLUS_PIPELINE_AUDIT.md`**, **`src/renderers/vulkan/vk_temporal.h`**, **`docs/GLTF.md`**, …), GLSL validate, **IQM_MORPH_TOP_K** + **IQM_MORPH_MAX_CHANNELS** (OpenGL vs Vulkan `tr_local.h`), **GLTF_MAX_* vs IQM_*** header parity; **`tr_model_gltf.c`**`STATIC_ASSERT` for joint/morph caps + `IQM_MORPH_MAX_CHANNELS == IQM_MORPH_TOP_K`; PBR **`forward_plus_shade_strength`**`constant_id` vs **`vk_create_pipeline.c`**; Forward+ **`gen_frag.tmpl`**`tileId * N` vs **`MAX_PER_TILE`**; **`vk_temporal`** reset enum vs reason-string / log-table drift guard |
91
91
| P2 |**OpenGL glTF polish**| CPU tess + **`r_gltfCpuQtangent`** qtangent recompute when stage textures look like a normal map (`norm` / `bump` / `nmap` / `_n.`); **`_norm`** shader try from `normalTexture`; optional: wire qtangents into fixed-function tangents if a normal-mapped ARB path appears |
0 commit comments