Document Forward+ measurements and Linux lighting evidence
Native and manual checks / native (windows-2025) (push) Waiting to run
Windows editor and software Vulkan / windows-graphics (push) Waiting to run
Native and manual checks / native (ubuntu-24.04) (push) Failing after 35s
Native and manual checks / manual (push) Successful in 27s
Native and manual checks / native (windows-2025) (push) Waiting to run
Windows editor and software Vulkan / windows-graphics (push) Waiting to run
Native and manual checks / native (ubuntu-24.04) (push) Failing after 35s
Native and manual checks / manual (push) Successful in 27s
This commit is contained in:
@@ -199,16 +199,19 @@ GPU instance record содержит стабильные slot/generation; пл
|
||||
|
||||
### P3. Освещение, тени и temporal reconstruction
|
||||
|
||||
**Освещение и тени реализованы до измеренного выбора пути; приёмка этапа ещё
|
||||
**Освещение, тени и измеренный выбор пути реализованы; приёмка всего P3 ещё
|
||||
открыта.** Есть authored directional/point/spot lights, общий shader ABI для
|
||||
Direct и P2, четыре каскада солнца, отдельный 16-face atlas для point/spot,
|
||||
видимость каскадеров из shadow views и общий бюджет 4096 caster draws.
|
||||
Ранжирование 128 local lights, атомарный отказ от шести point faces и
|
||||
unshadowed fallback доступны с диагностикой. На Linux reference GPU Release
|
||||
1920×1080 измеренный рост стоимости main raster уже превысил порог для
|
||||
Forward+, поэтому depth-free tiled путь 16×16 и повторные измерения входят в
|
||||
оставшуюся работу. [Протокол проверки](docs/validation/p3-lighting-2026-09-24/README.md)
|
||||
отделяет текущий checkpoint от финальной Linux/Windows приёмки.
|
||||
1920×1080 измеренный рост стоимости main raster превысил порог для проверки
|
||||
Forward+. Depth-free tiled путь 16×16 прошёл image parity, но полный build +
|
||||
raster на плотной контрольной сцене оказался медленнее; `Auto` оставлен на
|
||||
forward, явный tiled доступен для локализованных источников и выиграл в
|
||||
отдельном сценарии. [Исследование](docs/studies/23-p3-forward-plus-2026-09-24.md)
|
||||
и [протокол проверки](docs/validation/p3-lighting-2026-09-24/README.md)
|
||||
отделяют этот Linux checkpoint от финальной Windows/temporal приёмки.
|
||||
|
||||
Затем: previous transforms, motion vectors, jitter, history rejection и TAA; temporal upscaling — после устойчивого TAA. Проверять тонкую геометрию, движение, disocclusion, camera cut и смену разрешения, сравнивать с режимом без temporal. У cache/pass видны затраты и причины обновления.
|
||||
|
||||
|
||||
+21
-3
@@ -508,6 +508,24 @@ repeats, ten warm-up and thirty measured frames per configuration. It reached
|
||||
the agreed Forward+ gate: main-raster overhead at 32 lights was about 0.50 ms
|
||||
relative to the matching zero-light case, roughly 30% of that GPU frame;
|
||||
64 and 128 lights added about 1.02 and 2.03 ms. Its raw CSV/report are being
|
||||
published separately with the exact benchmark revision and driver. A 16×16
|
||||
tiled Forward+ path, image parity and before/after build+raster measurement are
|
||||
therefore pending. Temporal reconstruction is developed and accepted separately.
|
||||
published separately with the exact benchmark revision and driver.
|
||||
|
||||
Revision `a0a4e29` adds an explicit depth-free 16×16 tiled Forward+ path. One
|
||||
compute invocation tests every submitted point/spot range sphere against a
|
||||
tile's four screen-space planes and writes at most 64 stable-order indices.
|
||||
An overflowing tile scans the entire submitted list in the fragment shader;
|
||||
there is no dropped light. The tile shader has exact reflection validation,
|
||||
package/build integration, GPU timing, optional occupancy readback, and
|
||||
reload rollback. Direct, GPU frustum and GPU occlusion image tests cover a
|
||||
cropped viewport, resize, near-plane light/shadow, and overflow. A 128-light
|
||||
localized 1920×1080 forward/tiled capture matched byte for byte.
|
||||
|
||||
The [paired Release study](studies/23-p3-forward-plus-2026-09-24.md) measured
|
||||
tile build **plus** raster on the same RTX 2080 Ti source revision and shader
|
||||
bundle. At 32/64/128 broad overlapping lights it was 0.064/0.122/0.222 ms
|
||||
slower; all 8160 tiles overflowed at 128. A separate localized-range scene
|
||||
was 0.103/0.214/0.440 ms faster at those counts, with no overflows. There is
|
||||
no robust scene/device runtime predictor yet, so `Auto` remains forward and
|
||||
`Tiled` is explicit. Linux Debug passed 62 CTests with one window skip;
|
||||
pinned Linux SwiftShader passed all six P3 cases. Windows CI on this new
|
||||
revision and P3 temporal reconstruction are separate acceptance work.
|
||||
|
||||
@@ -27,10 +27,16 @@ When GPU timestamps are available, the panel shows sun and local shadow pass
|
||||
durations. A zero duration after a disabled sun or sprite-only frame confirms
|
||||
that no sun shadow raster ran. The lighting path names the algorithm actually
|
||||
used, so compare it with a benchmark's requested mode before interpreting costs.
|
||||
For an explicitly tiled frame, the overlay also reports the 16×16 grid size,
|
||||
its compute GPU duration, the number of stored light candidates, and how many
|
||||
tiles overflowed their 64-index list and scanned all lights. Candidate and
|
||||
overflow counts require the diagnostics readback; **unavailable** is distinct
|
||||
from a measured zero. The diagnostic copy itself adds work, so close the panel
|
||||
before measuring performance.
|
||||
See [Lighting](lighting.md) for the 128-light and 16-tile limits.
|
||||
|
||||
The Vulkan backend emits `VK_EXT_debug_utils` labels for `SunShadowAtlas`,
|
||||
`LocalShadowAtlas`, `ForwardAndUI`, `Readback`, and, when presenting,
|
||||
`LocalShadowAtlas`, `LightTileBuild` when tiled, `ForwardAndUI`, `Readback`, and, when presenting,
|
||||
`Presentation`. A fallback frame can have no shadow-raster label. A graphics
|
||||
capture tool that supports this extension can identify the command-buffer
|
||||
regions. Labels remain available without the Khronos validation layer when
|
||||
|
||||
@@ -72,6 +72,25 @@ cleared and redrawn each frame; there is no persistent shadow cache yet.
|
||||
Sprite-only scenes, a missing sun, and a sun with `casts_shadow: false` skip sun
|
||||
shadow raster work.
|
||||
|
||||
## Local-light rendering path
|
||||
|
||||
The normal `Auto` setting uses the measured forward light scan. It is the
|
||||
current default for Editor and Player. A C++ renderer integration can explicitly
|
||||
set `RendererConfig::lighting_mode = LightingMode::Tiled` to build depth-free
|
||||
16×16 screen-tile lists on a capable Vulkan device. Each tile stores at most
|
||||
64 light indices in stable order. If more lights touch a tile, its fragment
|
||||
shader scans the complete submitted list, so an overflow never removes
|
||||
illumination. The path falls back to forward when no local lights are present
|
||||
or the compute/buffer requirements are unavailable. Sprites and UI stay unlit.
|
||||
|
||||
This explicit path can help when light ranges occupy small parts of the screen;
|
||||
it costs extra work when nearly every light covers nearly every tile. The
|
||||
fixed dense benchmark was slower after including tile construction, so there
|
||||
is no automatic scene-dependent switch yet. The Player profile reports
|
||||
`effective_lighting_path`, tile GPU time and grid size; optional Editor
|
||||
diagnostics also report stored candidates and overflowing tiles. See
|
||||
[Profiling](profiling.md) and the [measured Forward+ study](https://github.com/emil28092005/Faset_Engine/blob/main/docs/studies/23-p3-forward-plus-2026-09-24.md).
|
||||
|
||||
## Add a point light through MCP
|
||||
|
||||
MCP edits the **Editor document**, not entities in a running game. Use
|
||||
|
||||
@@ -130,6 +130,15 @@ submitted-light count of zero is a different workload from 128 lights whose
|
||||
shadows are disabled. See [Lighting](lighting.md) for the capacity policy and
|
||||
[Diagnostics](diagnostics.md) for the Editor counters.
|
||||
|
||||
The same sample includes `effective_lighting_path` (`forward` or `tiled`),
|
||||
`gpu_light_tiles_ms`, and `light_tile_count`. Stored candidate and overflow
|
||||
counts are present only when visibility diagnostics readback was enabled;
|
||||
`light_tile_counts_valid: false` means their `null` values are unavailable,
|
||||
not zero. The normal `Auto` setting currently resolves to `forward` after the
|
||||
fixed dense 1080p benchmark showed that tile construction cost outweighed its
|
||||
raster savings. A C++ renderer integration can explicitly request `Tiled` for
|
||||
a localized-light scene, then check the actual path before comparing timings.
|
||||
|
||||
The fixed-scene benchmark compares 0, 4, 16, 32, 64, and 128 local lights under
|
||||
Direct, GPU frustum, and GPU occlusion visibility, with shadows on and off. Its
|
||||
wrapper runs three independent 1920×1080 repetitions per configuration, each
|
||||
@@ -162,6 +171,18 @@ frame** at 32, 64, or 128 lights on the Linux physical reference GPU. The
|
||||
states the measured decision and scope. A software Vulkan run checks
|
||||
functionality, not physical GPU performance.
|
||||
|
||||
For a direct comparison of the two algorithms on the same scene, invoke the
|
||||
Release executable twice with `--lighting forward` and `--lighting tiled`,
|
||||
using the same `--lights`, `--shadows`, `--visibility`, and output size. The
|
||||
default `--light-layout dense` preserves the fixed benchmark scene;
|
||||
`--light-layout localized` reduces point-light ranges to 1.75 units as a
|
||||
separately labelled workload. Compare `gpu_build_plus_raster_ms`, which includes
|
||||
`gpu_light_tiles_ms`, rather than raster time alone. One optional diagnostic
|
||||
frame with `--tile-diagnostics on` reports candidate and overflow counts but
|
||||
adds a GPU readback, so do not mix it into the timed runs. The
|
||||
[Forward+ measurement](https://github.com/emil28092005/Faset_Engine/blob/main/docs/studies/23-p3-forward-plus-2026-09-24.md) retains
|
||||
raw frames, shader hashes, and the decision.
|
||||
|
||||
## Current performance scope
|
||||
|
||||
The accepted MVP path uses direct draws and CPU culling; P2 adds optional GPU
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
# P3 Forward+ experiment: correctness and cost on localized lights
|
||||
|
||||
The fixed 1920×1080 P3 benchmark crossed the agreed threshold for trying
|
||||
Forward+. A depth-free 16×16 tiled implementation now exists, but the measured
|
||||
**build + raster** cost is higher than a full light scan on that benchmark's
|
||||
dense lights. `RendererConfig::lighting_mode = Auto` therefore keeps the forward
|
||||
path. `Tiled` is an explicit option for scenes whose projected light volumes
|
||||
are localized. There is no unmeasured automatic occupancy heuristic.
|
||||
|
||||
This is a follow-up to the fixed-scene baseline sweep, which is being merged
|
||||
as a separate study. It compares both paths in the same source revision
|
||||
`a0a4e29d480ed3344f19bd3565d48668ca913fed`. The baseline's dense
|
||||
placement remains the default. An explicit `--light-layout localized` changes
|
||||
only point-light range from 8 to 1.75 world units; camera, nine casters,
|
||||
receiver, positions, colors, light count, and output size are unchanged. The
|
||||
localized fixture is a separate workload, not a replacement for the fixed
|
||||
baseline gate.
|
||||
|
||||
## Renderer behavior and safety
|
||||
|
||||
The compute pass builds up to 64 stable-order light indices per screen tile.
|
||||
It tests each world-space range sphere against four clip-space tile planes.
|
||||
It does not use depth or reject near-plane intersections. A tile with more than
|
||||
64 candidates sets an overflow bit; the fragment shader then scans **all**
|
||||
submitted lights for that tile. Zero lights, missing capability, excessive
|
||||
buffer size, failed optional allocation, and `Auto` use the forward path. The
|
||||
shader contract checks the new compute entry's descriptors and 96-byte push
|
||||
constants; Direct and P2 GPU graphics still use materials at set 0, lighting
|
||||
at set 1, and GPU scene data at set 2. The tile list is set 1 binding 4 in the
|
||||
shared fragment shader. Sprite/UI shading returns before tile reads.
|
||||
|
||||
The Linux Vulkan image test compares forward and tiled output in Direct, GPU
|
||||
frustum, and GPU occlusion modes, including a cropped scene viewport, near-plane
|
||||
crossing point light and shadow, resize, an offscreen light, and 80 coincident
|
||||
lights that exceed tile capacity. Every overflowing tile falls back to the full
|
||||
list. Shader reload preserves a working tiled pipeline after invalid bytecode
|
||||
and recreates it after a valid reload. A separate 1920×1080 capture with 128
|
||||
localized lights was byte-identical across both paths; its SHA-256 is in the
|
||||
[provenance record](data/p3-forward-plus-provenance-2026-09-24.json).
|
||||
|
||||
## Measurement
|
||||
|
||||
The device was NVIDIA GeForce RTX 2080 Ti with NVIDIA driver 595.84.0.0,
|
||||
Linux Clang Release, Direct visibility, shadows off, 1920×1080. Each mode had
|
||||
three independent process runs with ten warm-up and thirty measured frames.
|
||||
Forward/tiled run order alternated. The table uses the median of the three
|
||||
per-run medians in milliseconds. The tile build column is an actual GPU
|
||||
timestamp; `build + raster` also includes post raster if present. The dense
|
||||
and localized CSVs contain every one of the 1080 measured frames, with a
|
||||
`source_csv` identifier. The executable and all loaded `.spv`/reflection
|
||||
SHA-256 values are in the provenance record.
|
||||
|
||||
| Light layout | Lights | Forward raster | Tile build | Tiled raster | Tiled build + raster | Tiled change |
|
||||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||||
| Dense fixed scene | 32 | 0.5500 | 0.0617 | 0.5527 | 0.6144 | +0.0644 ms (11.7% slower) |
|
||||
| Dense fixed scene | 64 | 1.0701 | 0.1177 | 1.0740 | 1.1921 | +0.1220 ms (11.4% slower) |
|
||||
| Dense fixed scene | 128 | 2.1172 | 0.2219 | 2.1164 | 2.3388 | +0.2216 ms (10.5% slower) |
|
||||
| Localized range 1.75 | 32 | 0.2336 | 0.0555 | 0.0758 | 0.1312 | −0.1025 ms (43.9% faster) |
|
||||
| Localized range 1.75 | 64 | 0.4254 | 0.1060 | 0.1057 | 0.2109 | −0.2144 ms (50.4% faster) |
|
||||
| Localized range 1.75 | 128 | 0.8094 | 0.2048 | 0.1643 | 0.3691 | −0.4404 ms (54.4% faster) |
|
||||
|
||||
At 32 dense lights, the first forward process had a 0.7405 ms run median;
|
||||
the other two were 0.5488 and 0.5500 ms. A single paired run would have
|
||||
incorrectly suggested a tiled win. The median of three process medians and a
|
||||
separate earlier repeat both support the slower dense result. This is why
|
||||
`Auto` remains forward despite the localized-scene gain. The total GPU frame
|
||||
also includes visibility, shadow fallback, copies, and synchronous readback;
|
||||
the table isolates the passes that the optimization changes. For example, at
|
||||
32 localized lights the full GPU frame was 1.6494 ms forward and 1.6472 ms
|
||||
tiled, essentially unchanged despite lower build + raster cost. At 128 it
|
||||
was 2.2788 versus 1.7948 ms.
|
||||
|
||||
One diagnostic frame per layout/count copied the tile buffer after the timed
|
||||
draw. That copy was **not enabled** in the 1080 performance frames. The grid
|
||||
has 8160 tiles and a 64-index capacity per tile.
|
||||
|
||||
| Layout | Lights | Stored candidates across tiles | Overflowed tiles |
|
||||
| --- | ---: | ---: | ---: |
|
||||
| Dense | 32 | 259,896 | 0 |
|
||||
| Dense | 64 | 519,792 | 0 |
|
||||
| Dense | 128 | 522,240 | 8,160 |
|
||||
| Localized | 32 | 38,237 | 0 |
|
||||
| Localized | 64 | 76,103 | 0 |
|
||||
| Localized | 128 | 152,202 | 0 |
|
||||
|
||||
The dense 128 candidate count is capped at 64 × 8160 stored slots; all tiles
|
||||
overflow and correctly evaluate all 128 lights in the fragment shader. This
|
||||
explains why paying for tile construction cannot help that frame. The localized
|
||||
128 scene averages about 19 stored candidates per tile and avoids fallback.
|
||||
|
||||
Raw data: [all paired frames](data/p3-forward-plus-ab-2026-09-24.csv),
|
||||
[diagnostic frames](data/p3-forward-plus-diagnostics-2026-09-24.csv), and
|
||||
[binary/shader provenance](data/p3-forward-plus-provenance-2026-09-24.json).
|
||||
|
||||
## Verification and scope
|
||||
|
||||
At the implementation revision, Linux Debug built all targets and passed
|
||||
62/63 CTests, with the compositor-dependent window lifecycle case skipped and
|
||||
no failures. The pinned Linux SwiftShader ICD passed all six P3 cases, including
|
||||
the tiled parity/overflow test. The [lighting validation record](../validation/p3-lighting-2026-09-24/README.md)
|
||||
retains those logs. These are functional checks on Linux and software Vulkan,
|
||||
not physical Windows GPU performance. The A/B numbers apply to one GPU, driver,
|
||||
camera, receiver and two synthetic light layouts. They do not establish an
|
||||
engine-wide speedup. A measured runtime occupancy predictor and representative
|
||||
game scenes are prerequisites before changing `Auto` from forward.
|
||||
@@ -1,6 +1,6 @@
|
||||
# Исследования для Faset Engine
|
||||
|
||||
Обновлено 23.09.2026. Исходники и официальная документация исследовались прежде всего 17.09.2026; затем результаты согласованы с принятой архитектурой. P2 implementation/acceptance добавлены позже и отделены от исходного статического исследования.
|
||||
Обновлено 24.09.2026. Исходники и официальная документация исследовались прежде всего 17.09.2026; затем результаты согласованы с принятой архитектурой. P2/P3 implementation/acceptance добавлены позже и отделены от исходного статического исследования.
|
||||
|
||||
**Актуальные решения — в [ARCHITECTURE.md](../ARCHITECTURE.md), порядок реализации — в [PLAN.md](../../PLAN.md).** Реализация MVP и проверки идут отдельно: [журнал реализации](../IMPLEMENTATION.md), [результаты проверок](../validation/README.md), [пользовательский Manual](../manual/index.md). Исследования дают обоснования и проверочные сценарии; их статический анализ не является измерением Faset.
|
||||
|
||||
@@ -41,6 +41,7 @@ Linux/Windows, десктопные 2D/3D, C++ сначала и Lua следу
|
||||
- [19 — P2 GPU visibility: протокол приёмки](19-p2-gpu-visibility-acceptance.md): GPU-сценарии, допуски сравнения и методика измерений; отделяет проверку реализации от предложений исследования 15.
|
||||
- [20 — P2 GPU visibility: первый benchmark](20-p2-gpu-visibility-benchmark-2026-09-23.md): три запуска, raw CSV, p50/p95 и границы интерпретации на Linux reference GPU.
|
||||
- [21 — P2 GPU visibility: оптимизация MainCull](21-p2-gpu-visibility-optimization-2026-09-23.md): отдельные измерения переноса выходных буферов в память GPU и замены CAS-цикла на atomic add.
|
||||
- [23 — P3 Forward+: корректность и стоимость](23-p3-forward-plus-2026-09-24.md): сравнение полной цены построения плиток и рисования на плотной и локализованной сценах, raw CSV и точный shader/binary provenance.
|
||||
|
||||
## Происхождение и воспроизводимость
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
light_count,light_layout,shadows,visibility,effective_visibility,lighting_path,requested_lighting,build_configuration,run_index,frame,device,driver,commit,width,height,validation_enabled,validation_errors,submitted_local_lights,omitted_local_lights,requested_local_shadow_faces,rendered_local_shadow_faces,dropped_shadow_faces,shadow_atlas_full_drops,shadow_tiles,draw_calls,gpu_bytes,gpu_main_raster_ms,gpu_post_raster_ms,gpu_post_visible,visibility_counters_valid,gpu_sun_shadow_ms,gpu_local_shadow_ms,gpu_shadow_ms,gpu_light_tiles_ms,gpu_build_plus_raster_ms,light_tile_count,light_tile_counts_valid,light_tile_candidate_count,light_tile_overflow_count,gpu_ms,cpu_ms,readback_cpu_ms
|
||||
32,dense,off,direct,direct,tiled,tiled,Release,0,0,NVIDIA GeForce RTX 2080 Ti,NVIDIA 595.84.0.0,a0a4e29d480ed3344f19bd3565d48668ca913fed,1920,1080,0,0,32,0,0,0,0,0,0,10,63881248,0.551200,0.000000,0,0,0.000000,0.000000,0.000000,0.061472,0.612672,8160,1,259896,0,3.324384,4.920211,1.106698
|
||||
64,dense,off,direct,direct,tiled,tiled,Release,0,0,NVIDIA GeForce RTX 2080 Ti,NVIDIA 595.84.0.0,a0a4e29d480ed3344f19bd3565d48668ca913fed,1920,1080,0,0,64,0,0,0,0,0,0,10,63883808,1.077376,0.000000,0,0,0.000000,0.000000,0.000000,0.117440,1.194816,8160,1,519792,0,3.713568,5.236988,1.014093
|
||||
128,dense,off,direct,direct,tiled,tiled,Release,0,0,NVIDIA GeForce RTX 2080 Ti,NVIDIA 595.84.0.0,a0a4e29d480ed3344f19bd3565d48668ca913fed,1920,1080,0,0,128,0,0,0,0,0,0,10,63888928,2.109440,0.000000,0,0,0.000000,0.000000,0.000000,0.221184,2.330624,8160,1,522240,8160,4.435136,6.211166,0.970080
|
||||
32,localized,off,direct,direct,tiled,tiled,Release,0,0,NVIDIA GeForce RTX 2080 Ti,NVIDIA 595.84.0.0,a0a4e29d480ed3344f19bd3565d48668ca913fed,1920,1080,0,0,32,0,0,0,0,0,0,10,63881248,0.075328,0.000000,0,0,0.000000,0.000000,0.000000,0.055296,0.130624,8160,1,38237,0,2.355808,3.586245,0.930515
|
||||
64,localized,off,direct,direct,tiled,tiled,Release,0,0,NVIDIA GeForce RTX 2080 Ti,NVIDIA 595.84.0.0,a0a4e29d480ed3344f19bd3565d48668ca913fed,1920,1080,0,0,64,0,0,0,0,0,0,10,63883808,0.105248,0.000000,0,0,0.000000,0.000000,0.000000,0.105312,0.210560,8160,1,76103,0,2.445600,3.884127,1.069417
|
||||
128,localized,off,direct,direct,tiled,tiled,Release,0,0,NVIDIA GeForce RTX 2080 Ti,NVIDIA 595.84.0.0,a0a4e29d480ed3344f19bd3565d48668ca913fed,1920,1080,0,0,128,0,0,0,0,0,0,10,63888928,0.215040,0.000000,0,0,0.000000,0.000000,0.000000,0.229376,0.444416,8160,1,152202,0,2.585504,4.059668,0.951374
|
||||
|
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"commit": "a0a4e29d480ed3344f19bd3565d48668ca913fed",
|
||||
"device": "NVIDIA GeForce RTX 2080 Ti",
|
||||
"driver": "NVIDIA 595.84.0.0",
|
||||
"build": "Linux Clang Release",
|
||||
"executable_sha256": "db151a07eeaee04871920f8617f5bcf4c8ac7cb11abf4e36e5595cc526440a36",
|
||||
"shader_bundle_sha256": "60d2abf2f43557f72f39de7a50f4bc92816eb7859c613b2797c0410e72dbaeed",
|
||||
"shader_bundle_hash_method": "SHA256 of UTF-8 canonical JSON mapping sorted shader filenames to per-file SHA256",
|
||||
"shader_files": {
|
||||
"vertexMain.spv": "1ad2631c35d654f48166321ae43d4165043e1b919b14f1dc61caf97b1ada0898",
|
||||
"vertexMain.reflection.json": "b3bdff863d53a0b385e06a36701a83a6ecafe9a93e97281a732cce8ff862c0db",
|
||||
"fragmentMain.spv": "eb65edf62a4ead573f740903dbbd1a61565fe97d234fbe8a09934ce6415bec92",
|
||||
"fragmentMain.reflection.json": "6b62a42ea448d9ae253d78b6b326dfe0d761532ce695b49263689ec649ede36c",
|
||||
"shadowMain.spv": "7643b4d688492b5ee923b9606f0b0e70343ca05fa67673838206119a6f86d8d8",
|
||||
"shadowMain.reflection.json": "d39e2f83c797589296eac9dce139b9ad836a895d6685bc40f79dd2609d687fee",
|
||||
"lightTileMain.spv": "92850edcc5ee5b586a90ce84ee69a98075a6fff3c13db4a57528d9431afe8b68",
|
||||
"lightTileMain.reflection.json": "bf6a9256aaa6d6edacfa1e1c265d7c8ce2c1e4ea4036e0bea078c22fd4b536ca",
|
||||
"gpuVertexMain.spv": "fc9770f304976875f8dd1f6acbe380c77cb06c13276f5596554b3f0b396b31bd",
|
||||
"gpuVertexMain.reflection.json": "09166d80fba7ab4167e97f85125a7c58ab92ea447c1a6a2ab5084e657401dae9",
|
||||
"gpuShadowMain.spv": "2da7e7f96bc7de4e9c8ac365fe0a63f608c7bb26ab3e7bfebfcf88b32e86c71d",
|
||||
"gpuShadowMain.reflection.json": "c9dd844aefb3840f29caad5dfc53986cacc2220f886eda5ad345ebdbb9ff5b1c",
|
||||
"gpuCullMain.spv": "7691360ec55f41d40d43652f506b051cef8b3a3ddcdcc7db61a7d4d97f9e87d8",
|
||||
"gpuCullMain.reflection.json": "996fe5c7e31c6b8f316d8f290b3be0ae7063eb46c500a661e8715e9b822a2598",
|
||||
"gpuHzbMain.spv": "08682362ee2120ed19d260e613285071747c3e436bb09bb6238e46f9cedc2308",
|
||||
"gpuHzbMain.reflection.json": "589818f670881c64f3aba726ee3bc82fe4b9d835a347f99134e0e157dc4a112e",
|
||||
"gpuPostCullMain.spv": "62cb72e356346e1511c6d640a3cecb4a6e5283795338299b357edae5f7f52be4",
|
||||
"gpuPostCullMain.reflection.json": "eed140bbe09c7d14935b688c770261ac0e81677c0974aa811c88ed67ea779b95"
|
||||
},
|
||||
"matrix": "Direct, shadows off, 1920x1080, dense or localized, 32/64/128 lights, 3 repeats, 10 warmup + 30 measured frames; alternating A/B order",
|
||||
"raw_rows": 1080,
|
||||
"localized_128_capture_sha256": "2aa5d408867f7193b7fd83984f2333b188623bda4d083512ede6b8318f11b45c",
|
||||
"localized_128_capture_exact_equal": true
|
||||
}
|
||||
@@ -5,7 +5,7 @@ These files preserve bounded checks and their inputs. Each record states its sou
|
||||
- [MVP acceptance dossier](mvp-acceptance.md): criterion-by-criterion closure, tested revisions and remaining compatibility coverage.
|
||||
- [P2 GPU visibility Linux evidence](p2-gpu-visibility-2026-09-23/README.md): Debug/Release GPU acceptance, lavapipe functional checks, relocated Player exports, and explicit platform/performance limits.
|
||||
- [P2 pinned SwiftShader compatibility](p2-swiftshader-2026-09-23/README.md): the Windows CI regression, shader capability fix, independent review closure, final native CI and relocated Player evidence.
|
||||
- [P3 lighting and shadows](p3-lighting-2026-09-24/README.md): implementation, acceptance matrix, bounded evidence, and remaining Forward+/platform checks; temporal reconstruction is tracked separately.
|
||||
- [P3 lighting and shadows](p3-lighting-2026-09-24/README.md): implementation, Forward+ A/B and image parity, acceptance matrix, bounded Linux evidence, and remaining Windows/platform checks; temporal reconstruction is tracked separately.
|
||||
- [Windows software Vulkan](windows-software-vulkan-2026-09-18/README.md): fresh native build, 35 tests, launcher/window/MCP workflows and both relocated Release games on SwiftShader.
|
||||
- [Checkpoint 5 Linux acceptance](checkpoint5-linux-2026-09-18/README.md): clean offline source build, first Editor launch, exact-candidate standalone games and live Blender checks.
|
||||
- [Final Linux source checks](final-linux-2026-09-18/README.md): `4cb8255` integrated test results and both Release games after the asset-relocation correction, including package manifests and standalone captures.
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# P3 lighting and shadows — acceptance record
|
||||
|
||||
This record tracks P3 lighting separately from temporal reconstruction. The
|
||||
implementation checkpoint is source revision
|
||||
`b191ae0bed77a1544a49504b9a3f07e9a3c691f2` on `feat/p3-lighting`. The
|
||||
Manual/record edit itself is documentation-only. A later Forward+ change and
|
||||
its measurements require a new revision and validation entry before the lighting
|
||||
slice can be called complete. Temporal reconstruction has its own acceptance.
|
||||
implementation and measured Forward+ checkpoint is source revision
|
||||
`a0a4e29d480ed3344f19bd3565d48668ca913fed` on `feat/p3-lighting`.
|
||||
The earlier shadow/benchmark integration checkpoint was `b191ae0`. The
|
||||
lighting slice has Linux functional and reference-GPU evidence; Windows CI for
|
||||
the new tiled revision is pending. Temporal reconstruction has its own acceptance.
|
||||
|
||||
## Implemented at the checkpoint
|
||||
|
||||
@@ -31,18 +31,26 @@ slice can be called complete. Temporal reconstruction has its own acceptance.
|
||||
requested/effective views, drop reasons, atlas bytes, caster draws, GPU shadow
|
||||
durations, and the effective lighting path. Shadow tiles are redrawn every
|
||||
frame; no persistent depth cache is claimed.
|
||||
- An explicit 16×16 depth-free tiled Forward+ path uses at most 64 light indices
|
||||
per tile and evaluates the complete submitted list on overflow. The compute
|
||||
entry has checked reflection and is included in game builds. `Auto` uses
|
||||
forward: three-run Release measurements found tile build + raster slower on
|
||||
the dense fixed scene. The [paired study](../../studies/23-p3-forward-plus-2026-09-24.md)
|
||||
retains a separate localized-light win and exact binary/shader provenance.
|
||||
|
||||
## Acceptance matrix
|
||||
|
||||
| Case | Automated evidence | Current status |
|
||||
| --- | --- | --- |
|
||||
| Empty, disabled, local-only, multiple sun; schema bounds | `scene_view`, `render_lighting_policy`, `render_offscreen` | Covered by Debug tests at the implementation checkpoint; re-run on final revision |
|
||||
| Four cascades, split bounds, subtexel stabilization, offscreen/source-LOD0 caster | `render_lighting_policy`, `render_lighting_sun` | Covered by CPU policy and Linux Vulkan image tests; final-revision runs pending |
|
||||
| Spot cone, six point faces and seam, dropped whole point shadow | `render_lighting_local`, `render_lighting_policy` | Covered by Linux Vulkan image and CPU tests; final-revision runs pending |
|
||||
| Empty, disabled, local-only, multiple sun; schema bounds | `scene_view`, `render_lighting_policy`, `render_offscreen` | Linux Debug green at `a0a4e29`; integrated revision pending |
|
||||
| Four cascades, split bounds, subtexel stabilization, offscreen/source-LOD0 caster | `render_lighting_policy`, `render_lighting_sun` | Linux GPU and pinned SwiftShader P3 green at `a0a4e29` |
|
||||
| Spot cone, six point faces and seam, dropped whole point shadow | `render_lighting_local`, `render_lighting_policy` | Linux GPU and pinned SwiftShader P3 green at `a0a4e29` |
|
||||
| 128-light/16-face/4096-draw limits, unsupported-atlas fallback | `render_lighting_policy`, `render_offscreen`, `render_lighting_local` | CPU and supported-atlas GPU paths covered; actual unsupported Vulkan device not tested |
|
||||
| Direct/GPU frustum/GPU occlusion image parity, P2 reload and 2D/UI independence | `render_lighting_sun`, `render_lighting_local`, `render_shader_reload`, `render_offscreen` | Linux supported-driver paths covered; final-revision runs pending |
|
||||
| Driver, profile, real 64×64 benchmark smoke | `render_lighting_benchmark_schema`, `render_lighting_benchmark_smoke`, `player_shutdown_diagnostics` | Focused integration tests passed on `b191ae0`; full raw log pending |
|
||||
| 1920×1080 0/4/16/32/64/128 Release sweep, three repeats, both shadow states | `tools/benchmark_p3_lighting.py --sweep` | Baseline measured on Linux physical GPU; raw CSV and post-Forward+ comparison pending publication |
|
||||
| Direct/GPU frustum/GPU occlusion image parity, P2 reload and 2D/UI independence | `render_lighting_sun`, `render_lighting_local`, `render_shader_reload`, `render_offscreen` | Linux Debug green at `a0a4e29`; integrated revision pending |
|
||||
| Forward+/forward parity, near plane, resize, overflow, and shader reload | `render_lighting_tiled`, `render_shader_reload`, `render_shader_reflection`, `build_schema_publication` | Linux Debug and pinned SwiftShader P3 green at `a0a4e29`; 128-light localized Release captures match exactly |
|
||||
| Driver, profile, real 64×64 benchmark smoke | `render_lighting_benchmark_schema`, `render_lighting_benchmark_smoke`, `player_shutdown_diagnostics` | Full Linux Debug green at `a0a4e29` |
|
||||
| 1920×1080 0/4/16/32/64/128 Release sweep, three repeats, both shadow states | `tools/benchmark_p3_lighting.py --sweep` | Forward baseline measured; its separate raw study is being integrated |
|
||||
| 1920×1080 paired paths, 32/64/128 dense and localized lights | `faset_p3_lighting_benchmark --lighting forward|tiled` | Raw 1080 frames and six diagnostic samples retained in study 23; dense slower, localized faster by build+raster |
|
||||
| Windows native build, pinned SwiftShader GPU tests, relocated Release 2D/3D Players | `windows-graphics.yml`, `ci.yml` | New P3 revision has not yet completed Windows CI |
|
||||
|
||||
The supported-atlas GPU tests create a renderer with validation requested and
|
||||
@@ -56,11 +64,12 @@ reference-GPU results cannot establish physical Windows performance.
|
||||
|
||||
The P3 CTest registrations are `render_lighting_policy` and
|
||||
`render_lighting_benchmark_schema` (CPU), plus `render_lighting_sun`,
|
||||
`render_lighting_local`, and `render_lighting_benchmark_smoke` (labelled
|
||||
`gpu;p3`). Use `ctest --test-dir build/linux-debug -N -L p3` to confirm those
|
||||
five cases exist before running them; an empty test selection is not a pass.
|
||||
`render_lighting_local`, `render_lighting_tiled`, and
|
||||
`render_lighting_benchmark_smoke` (labelled `gpu;p3`). Use
|
||||
`ctest --test-dir build/linux-debug -N -L p3` to confirm those six cases exist
|
||||
before running them; an empty test selection is not a pass.
|
||||
The Windows full graphics job runs all registered tests, while the native
|
||||
Windows CPU job uses `-LE gpu` and therefore excludes the three Vulkan cases.
|
||||
Windows CPU job uses `-LE gpu` and therefore excludes the four Vulkan cases.
|
||||
|
||||
On the Linux host at `b191ae0`, the [CTest inventory](linux-debug-p3-inventory.txt)
|
||||
listed all five cases. The [CPU-only P3 run](linux-debug-cpu-ctest.txt) passed
|
||||
@@ -71,6 +80,22 @@ physical-GPU baseline was being measured, so it is not a final GPU acceptance
|
||||
result. The local host was Linux x86_64, kernel 7.0.0-31-generic; the source
|
||||
checkout had documentation changes only during these checks.
|
||||
|
||||
At `a0a4e29`, the [full Linux Debug run](linux-debug-tiled-ctest.txt) had
|
||||
63 registered cases: 62 passed, no failures, and the compositor-dependent
|
||||
window lifecycle case skipped. The [pinned Linux SwiftShader P3 run](linux-swiftshader-tiled-p3-ctest.txt)
|
||||
passed all six P3 cases without a skip. The Vulkan image cases requested
|
||||
validation and asserted zero reported errors. The RTX 2080 Ti A/B used NVIDIA
|
||||
driver 595.84.0.0; study 23 records the executable and shader bundle hashes,
|
||||
all raw per-frame timings, tile overflow counts, and exact image equality for
|
||||
the localized 128-light capture. Its first dense 32-light forward run was an
|
||||
outlier, so the decision uses the median of three process medians rather than
|
||||
the apparent win in one paired run.
|
||||
|
||||
At the earlier `b191ae0` checkpoint, [GitHub native/manual CI](https://github.com/emil28092005/Faset_Engine/actions/runs/35935899512)
|
||||
and [Windows graphics/SwiftShader CI](https://github.com/emil28092005/Faset_Engine/actions/runs/35935899505)
|
||||
passed. These jobs did **not** include the new tile shader; Windows CI for
|
||||
`a0a4e29` is still required.
|
||||
|
||||
```sh
|
||||
cmake --build --preset linux-debug --parallel 2
|
||||
ctest --test-dir build/linux-debug -L p3 --no-tests=error --output-on-failure
|
||||
@@ -83,15 +108,16 @@ The benchmark wrapper retains one raw CSV per run, a merged CSV, and a summary.
|
||||
It rejects visibility fallback, missing GPU timestamps, missing lights, duplicate
|
||||
frames, and validation errors. An offscreen capture's `cpu_ms` includes GPU wait
|
||||
and readback; it is not thread CPU time. The exact Release benchmark revision,
|
||||
driver, CSV paths, before/after Forward+ gate, Linux SwiftShader results, final
|
||||
Debug/Release CTest logs, and Windows Actions links will be added after those
|
||||
checks run. Do not use this provisional record as a P3 completion claim.
|
||||
driver and paired path data are retained in study 23. Release full CTest,
|
||||
final integrated Windows Actions and relocated Player checks still need to be
|
||||
added before this is a complete P3 lighting acceptance record.
|
||||
|
||||
## Limits carried forward
|
||||
|
||||
The current checkpoint scans all submitted lights in each mesh fragment; the
|
||||
measured Forward+ threshold was reached on the Linux reference GPU, so a bounded
|
||||
tiled path is in progress. Transparent/game UI and sprites keep their existing
|
||||
The default path scans all submitted lights in each mesh fragment; the
|
||||
measured Forward+ threshold prompted a bounded tiled implementation. `Auto`
|
||||
still uses forward because this dense fixed workload was slower after tile
|
||||
construction. Transparent/game UI and sprites keep their existing
|
||||
ordering and unlit behavior. The atlas caps are fixed budgets, not adaptive
|
||||
quality settings, and shadow depth is redrawn each frame. The renderer still
|
||||
performs synchronous framebuffer readback. No broad scene/driver matrix or
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
Test project /home/emil/Desktop/.worktrees/Faset_Engine-p3-lighting/build/linux-debug
|
||||
Start 1: authoring
|
||||
1/63 Test #1: authoring .......................... Passed 0.06 sec
|
||||
Start 2: runtime_contracts
|
||||
2/63 Test #2: runtime_contracts .................. Passed 0.12 sec
|
||||
Start 3: assets_pipeline
|
||||
3/63 Test #3: assets_pipeline .................... Passed 0.14 sec
|
||||
Start 4: assets_blender_bundle
|
||||
4/63 Test #4: assets_blender_bundle .............. Passed 0.08 sec
|
||||
Start 5: lua_contracts
|
||||
5/63 Test #5: lua_contracts ...................... Passed 0.11 sec
|
||||
Start 6: lua_safety_contracts
|
||||
6/63 Test #6: lua_safety_contracts ............... Passed 0.21 sec
|
||||
Start 7: render_lighting_sun
|
||||
7/63 Test #7: render_lighting_sun ................ Passed 0.92 sec
|
||||
Start 8: render_lighting_local
|
||||
8/63 Test #8: render_lighting_local .............. Passed 0.87 sec
|
||||
Start 9: render_lighting_tiled
|
||||
9/63 Test #9: render_lighting_tiled .............. Passed 2.75 sec
|
||||
Start 10: render_lighting_policy
|
||||
10/63 Test #10: render_lighting_policy ............. Passed 0.04 sec
|
||||
Start 11: render_graph
|
||||
11/63 Test #11: render_graph ....................... Passed 0.00 sec
|
||||
Start 12: render_offscreen
|
||||
12/63 Test #12: render_offscreen ................... Passed 0.43 sec
|
||||
Start 13: render_sprite_alpha
|
||||
13/63 Test #13: render_sprite_alpha ................ Passed 0.36 sec
|
||||
Start 14: render_shader_reload
|
||||
14/63 Test #14: render_shader_reload ............... Passed 4.49 sec
|
||||
Start 15: render_gpu_shader_contract
|
||||
15/63 Test #15: render_gpu_shader_contract ......... Passed 0.06 sec
|
||||
Start 16: render_shader_reflection
|
||||
16/63 Test #16: render_shader_reflection ........... Passed 3.63 sec
|
||||
Start 17: render_window_lifecycle
|
||||
17/63 Test #17: render_window_lifecycle ............***Skipped 4.02 sec
|
||||
Start 18: render_lighting_benchmark_schema
|
||||
18/63 Test #18: render_lighting_benchmark_schema ... Passed 4.02 sec
|
||||
Start 19: render_lighting_benchmark_smoke
|
||||
19/63 Test #19: render_lighting_benchmark_smoke .... Passed 0.44 sec
|
||||
Start 20: visibility_policy
|
||||
20/63 Test #20: visibility_policy .................. Passed 0.01 sec
|
||||
Start 21: gpu_visibility
|
||||
21/63 Test #21: gpu_visibility ..................... Passed 0.90 sec
|
||||
Start 22: render_gpu_empty
|
||||
22/63 Test #22: render_gpu_empty ................... Passed 0.59 sec
|
||||
Start 23: render_gpu_capacity
|
||||
23/63 Test #23: render_gpu_capacity ................ Passed 0.65 sec
|
||||
Start 24: render_gpu_dense
|
||||
24/63 Test #24: render_gpu_dense ................... Passed 0.64 sec
|
||||
Start 25: render_gpu_door
|
||||
25/63 Test #25: render_gpu_door .................... Passed 0.60 sec
|
||||
Start 26: render_gpu_shadow
|
||||
26/63 Test #26: render_gpu_shadow .................. Passed 0.60 sec
|
||||
Start 27: render_gpu_cut
|
||||
27/63 Test #27: render_gpu_cut ..................... Passed 0.60 sec
|
||||
Start 28: render_gpu_resize
|
||||
28/63 Test #28: render_gpu_resize .................. Passed 0.63 sec
|
||||
Start 29: render_gpu_lod
|
||||
29/63 Test #29: render_gpu_lod ..................... Passed 0.66 sec
|
||||
Start 30: render_gpu_teleport
|
||||
30/63 Test #30: render_gpu_teleport ................ Passed 0.61 sec
|
||||
Start 31: render_gpu_near
|
||||
31/63 Test #31: render_gpu_near .................... Passed 0.61 sec
|
||||
Start 32: render_gpu_lifecycle
|
||||
32/63 Test #32: render_gpu_lifecycle ............... Passed 1.32 sec
|
||||
Start 33: render_gpu_views
|
||||
33/63 Test #33: render_gpu_views ................... Passed 0.59 sec
|
||||
Start 34: render_gpu_projection
|
||||
34/63 Test #34: render_gpu_projection .............. Passed 0.57 sec
|
||||
Start 35: render_gpu_open_sequence
|
||||
35/63 Test #35: render_gpu_open_sequence ........... Passed 1.80 sec
|
||||
Start 36: render_gpu_transparent
|
||||
36/63 Test #36: render_gpu_transparent ............. Passed 0.62 sec
|
||||
Start 37: player_scene_contracts
|
||||
37/63 Test #37: player_scene_contracts ............. Passed 0.03 sec
|
||||
Start 38: player_shutdown_diagnostics
|
||||
38/63 Test #38: player_shutdown_diagnostics ........ Passed 1.53 sec
|
||||
Start 39: lua_cli_contracts
|
||||
39/63 Test #39: lua_cli_contracts .................. Passed 0.13 sec
|
||||
Start 40: lua_player_reload
|
||||
40/63 Test #40: lua_player_reload .................. Passed 2.45 sec
|
||||
Start 41: editor_mcp
|
||||
41/63 Test #41: editor_mcp ......................... Passed 0.01 sec
|
||||
Start 42: process_and_cook
|
||||
42/63 Test #42: process_and_cook ................... Passed 0.32 sec
|
||||
Start 43: build_schema_publication
|
||||
43/63 Test #43: build_schema_publication ........... Passed 9.27 sec
|
||||
Start 44: editor_plugins
|
||||
44/63 Test #44: editor_plugins ..................... Passed 0.03 sec
|
||||
Start 45: editor_session_settings
|
||||
45/63 Test #45: editor_session_settings ............ Passed 0.02 sec
|
||||
Start 46: ui_widgets
|
||||
46/63 Test #46: ui_widgets ......................... Passed 0.12 sec
|
||||
Start 47: ui_render
|
||||
47/63 Test #47: ui_render .......................... Passed 0.48 sec
|
||||
Start 48: editor_ui_import_conflicts
|
||||
48/63 Test #48: editor_ui_import_conflicts ......... Passed 0.82 sec
|
||||
Start 49: editor_ui_project_settings
|
||||
49/63 Test #49: editor_ui_project_settings ......... Passed 0.97 sec
|
||||
Start 50: editor_ui_reload
|
||||
50/63 Test #50: editor_ui_reload ................... Passed 4.04 sec
|
||||
Start 51: editor_ui_launcher
|
||||
51/63 Test #51: editor_ui_launcher ................. Passed 0.84 sec
|
||||
Start 52: editor_ui_templates
|
||||
52/63 Test #52: editor_ui_templates ................ Passed 2.48 sec
|
||||
Start 53: editor_ui_gizmos
|
||||
53/63 Test #53: editor_ui_gizmos ................... Passed 0.92 sec
|
||||
Start 54: editor_ui_authoring
|
||||
54/63 Test #54: editor_ui_authoring ................ Passed 1.71 sec
|
||||
Start 55: editor_mcp_stdio
|
||||
55/63 Test #55: editor_mcp_stdio ................... Passed 0.27 sec
|
||||
Start 56: editor_gui_mcp
|
||||
56/63 Test #56: editor_gui_mcp ..................... Passed 4.65 sec
|
||||
Start 57: core
|
||||
57/63 Test #57: core ............................... Passed 0.16 sec
|
||||
Start 58: tutorial_moving
|
||||
58/63 Test #58: tutorial_moving .................... Passed 0.02 sec
|
||||
Start 59: tutorial_following
|
||||
59/63 Test #59: tutorial_following ................. Passed 0.01 sec
|
||||
Start 60: tutorial_spawning
|
||||
60/63 Test #60: tutorial_spawning .................. Passed 0.02 sec
|
||||
Start 61: tutorial_physics
|
||||
61/63 Test #61: tutorial_physics ................... Passed 0.06 sec
|
||||
Start 62: playable_2d
|
||||
62/63 Test #62: playable_2d ........................ Passed 0.40 sec
|
||||
Start 63: playable_3d
|
||||
63/63 Test #63: playable_3d ........................ Passed 0.93 sec
|
||||
|
||||
100% tests passed, 0 tests failed out of 63
|
||||
|
||||
Label Time Summary:
|
||||
gpu = 47.20 sec*proc (35 tests)
|
||||
p2 = 12.02 sec*proc (16 tests)
|
||||
p3 = 9.05 sec*proc (6 tests)
|
||||
window = 8.67 sec*proc (2 tests)
|
||||
|
||||
Total Test time (real) = 67.51 sec
|
||||
|
||||
The following tests did not run:
|
||||
17 - render_window_lifecycle (Skipped)
|
||||
@@ -0,0 +1,21 @@
|
||||
Test project /home/emil/Desktop/.worktrees/Faset_Engine-p3-lighting/build/linux-debug
|
||||
Start 7: render_lighting_sun
|
||||
1/6 Test #7: render_lighting_sun ................ Passed 5.14 sec
|
||||
Start 8: render_lighting_local
|
||||
2/6 Test #8: render_lighting_local .............. Passed 4.76 sec
|
||||
Start 9: render_lighting_tiled
|
||||
3/6 Test #9: render_lighting_tiled .............. Passed 14.30 sec
|
||||
Start 10: render_lighting_policy
|
||||
4/6 Test #10: render_lighting_policy ............. Passed 0.03 sec
|
||||
Start 18: render_lighting_benchmark_schema
|
||||
5/6 Test #18: render_lighting_benchmark_schema ... Passed 4.04 sec
|
||||
Start 19: render_lighting_benchmark_smoke
|
||||
6/6 Test #19: render_lighting_benchmark_smoke .... Passed 1.23 sec
|
||||
|
||||
100% tests passed, 0 tests failed out of 6
|
||||
|
||||
Label Time Summary:
|
||||
gpu = 25.42 sec*proc (4 tests)
|
||||
p3 = 29.50 sec*proc (6 tests)
|
||||
|
||||
Total Test time (real) = 29.50 sec
|
||||
@@ -0,0 +1,20 @@
|
||||
warning: An executable named `mkdocs` is not provided by package `mkdocs-material` but is available via the dependency `mkdocs`. Consider using `uvx --from mkdocs mkdocs` instead.
|
||||
|
||||
[31m │ ⚠ Warning from the Material for MkDocs team[0m
|
||||
[31m │[0m
|
||||
[31m │[0m MkDocs 2.0, the underlying framework of Material for MkDocs,
|
||||
[31m │[0m will introduce backward-incompatible changes, including:
|
||||
[31m │[0m
|
||||
[31m │ × [0mAll plugins will stop working – the plugin system has been removed
|
||||
[31m │ × [0mAll theme overrides will break – the theming system has been rewritten
|
||||
[31m │ × [0mNo migration path exists – existing projects cannot be upgraded
|
||||
[31m │ × [0mClosed contribution model – community members can't report bugs
|
||||
[31m │ × [0mCurrently unlicensed – unsuitable for production use
|
||||
[31m │[0m
|
||||
[31m │[0m Our full analysis:
|
||||
[31m │[0m
|
||||
[31m │[0m [4mhttps://squidfunk.github.io/mkdocs-material/blog/2026/02/18/mkdocs-2.0/[0m
|
||||
[0m
|
||||
INFO - Cleaning site directory
|
||||
INFO - Building documentation to directory: /home/emil/Desktop/.worktrees/Faset_Engine-p3-lighting/build/manual
|
||||
INFO - Documentation built in 0.76 seconds
|
||||
Reference in New Issue
Block a user