hilo3d 2.0.0-alpha.4 → 2.0.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ### Breaking changes
4
4
 
5
+ - Move skin history validity from the removed `SkinningBlock.u_skinHistoryParams.x` to
6
+ `ModelBlock.u_modelHistoryParams.y`. The two 128-joint palettes now occupy exactly 16,384 bytes,
7
+ fitting the WebGL2 minimum uniform-block capacity. Custom shaders and block producers must use the
8
+ new location; model and skin validity remain independent.
9
+
5
10
  - Integrate typed particle parameters into emission and spawn initialization across CPU, stateless,
6
11
  and stateful WebGPU command generation; runtime value changes no longer require recompilation.
7
12
  Apply `ParticleBudgetManager` decisions directly to live capacity, spawn rate, sorting, soft
@@ -26,16 +31,111 @@
26
31
  temporal reactivity for the fused GPU Scene depth/motion pass.
27
32
  - Expand the fixed Camera/Model/Skinning/Morph/Instance std140 ABI with current/previous transforms,
28
33
  stable and jittered camera projections, render origins, and per-domain history/depth flags. Custom
29
- shaders that redeclare built-in blocks must use the updated field order and capacities.
34
+ shaders that redeclare built-in blocks must use the updated field order and capacities. Add
35
+ `u_modelLayerParams` to `ModelBlock` so direct and GPU Scene clustered shading share the uint32
36
+ receiver light-layer contract.
30
37
  - Make forward feature color encoding explicit. `replaceColor()` now requires `linear` or `srgb`,
31
38
  and the default Forward pipeline always routes surface presentation through the Render Graph so
32
39
  the final output transfer is owned by the output stage rather than individual materials.
33
40
  - Replace the Forward-specific color-encoding type with the shared `RenderColorEncoding`. Manual
34
41
  RenderTarget presentation now accepts an explicit `colorEncoding`; linear inputs receive the final
35
42
  sRGB transfer, while display-transformed `srgb` inputs are preserved without a second conversion.
43
+ - Make `ClusteredForwardPlusPipelineFactory.create()` asynchronous so renderer initialization can
44
+ finish its declared material-variant warmup before the first frame.
36
45
 
37
46
  ### Changes
38
47
 
48
+ - Add tag-driven npm releases: the release command creates and pushes an annotated tag matching all
49
+ three package versions, then GitHub Actions validates the tagged commit and publishes `hilo3d`,
50
+ `@hilo/addon-particle`, and `@hilo/addon-physics` under one dist-tag through npm Trusted
51
+ Publishing. Addon peer dependencies use the exact synchronized core version, and safe workflow
52
+ retries skip package versions that are already present in npm.
53
+ - Allow local Playwright release validation to select an unoccupied loopback port with
54
+ `HILO3D_PLAYWRIGHT_PORT`; CI retains the deterministic default port.
55
+ - Make `site:build` own the complete public API declaration/check prerequisite for the core and both
56
+ addon packages. The Pages and CI preflight workflows now invoke self-contained `site:build` and
57
+ `lint` commands, while the Node-side repository preflight prevents clean-checkout jobs from
58
+ calling built-only commands without addon declarations.
59
+ - Replace the unenrolled Linux-only RHI performance-rig contract with an auditable Apple M3 Max
60
+ macOS/Metal profile. Require AC power, High Power Mode, a warning-free thermal state, exact
61
+ Node/Playwright/Chromium identity, physical Metal, GPU timers, precise memory, and allocation
62
+ profiling before collection or immutable baseline freezing. Size the release benchmark for a small
63
+ engine with three rounds, 500 timing/GPU frames, bounded one-frame allocation profiles, and a
64
+ single-draw absolute-allocation sentinel while retaining stress allocation data diagnostically.
65
+ Add per-phase progress and abortable browser/heap-profiler waits so a lost response fails
66
+ explicitly instead of hanging a formal run. Keep the large-instancing workload's 640,000-byte
67
+ dynamic budget scoped to instance transforms instead of incorrectly requiring the dynamic-texture
68
+ fixture, and distinguish a persistent shadow caster from steady shadow redraws after the atlas
69
+ cache is warm. Keep the sole churn shadow caster identity stable while cycling all ordinary mesh
70
+ slots, and explicitly budget the two shadow-view redraws caused by scene-child churn. Give the
71
+ depthless MRT/MSAA source workload the same explicit no-depth-write state as its fullscreen
72
+ continuation passes. Count first-complex-frame dynamic shadow invalidation and its final
73
+ linear-to-sRGB surface transfer in the declared steady draw budget. Keep targeted churn smoke
74
+ bounded to one complete ordinary-mesh replacement cycle unless its 10,000-frame tail is explicitly
75
+ requested; formal enrolled-rig capture still completes the full workload.
76
+ - Add the versioned, dependency-aware public Stage System ABI with typed services, transactional
77
+ asynchronous setup, synchronous frame hooks, dynamic leaf installation, and reverse-order
78
+ teardown. Add the separately packaged `@hilo/addon-physics` portable 2D/3D runtime with bounded
79
+ fixed stepping, interpolated Hilo node bindings, bodies, colliders, joints, events, filtered ray
80
+ and shape queries, bounded overlaps, point projection, kinematic character controllers, snapshots,
81
+ debug geometry, diagnostics, and independently importable Rapier 2D/3D adapters. Replace the
82
+ Cannon example and dependency with a Rapier 3D System example.
83
+ - Move the authored particle runtime out of the `hilo3d` entry into the independently tree-shakable
84
+ `@hilo/addon-particle` ESM package. Add a Stage-owned particle runtime and frame budget service,
85
+ route addon rendering through a generic core render-node capability, migrate maintained particle
86
+ examples and package types, and add Rapier material, joint, and 2D sensor showcases.
87
+
88
+ - Rebuild portable GTAO around view-relative dual horizons, projected-normal analytic visible-arc
89
+ integration, depth-derived or hybrid normals, a separately controlled contact lobe, integrated
90
+ bent normals, distance/edge fading, and explicit low/medium/high/ultra budgets. Add logarithmic-
91
+ depth reconstruction, per-camera pass/UBO isolation, closest-depth motion selection, depth/normal
92
+ confidence, variance clipping, vector-space bent-normal filtering, unblurred rejection depth, and
93
+ joint bilateral upsampling. Feed color-aware multi-bounce visibility and bent-cone specular
94
+ visibility into ordinary and Clustered PBR, retune The Silent Dragon, and add a deterministic GTAO
95
+ Acceptance Lab with corner, thin-card, slab, stair, normal-map, dielectric/metal, moving-occluder,
96
+ screen-edge, log-depth, on/off, temporal, and WebGL2/WebGPU parity gates.
97
+ - Upgrade WebGPU high-end SSR with response-aware 8×8 tile masks, coherent prefix compaction,
98
+ indirect stochastic visible-GGX tracing, roughness-adaptive ray budgets, refined depth crossings,
99
+ hit-normal facing validation, and explicit uncertain/backface outcomes. Evaluate receiver- and
100
+ hit-motion-domain history candidates against real previous material/depth state, authored reactive
101
+ masks, YCoCg neighborhood variance and roughness-adaptive sample counts; replace four fixed
102
+ filters with one adaptive bilateral hole-fill and a full-resolution edge-aware resolve. Align
103
+ clearcoat/anisotropy trace lobes with forward IBL, keep fallback removal independent from SSR
104
+ intensity, replace absolute half-float hit UVs with motion/depth state, compress material
105
+ attributes to `rgba8unorm`, prefer `rg11b10ufloat` reflection MRTs when supported, and expose
106
+ mutually exclusive uncertain/backface and history diagnostics alongside active/hit/miss counters.
107
+ Cap compacted active-tile indirect work to a two-dimensional 65,535-wide dispatch, retain
108
+ reflection-response/material identity in temporal history and spatial filtering, and make ordinary
109
+ Forward reflection MRTs reuse the main PBR GTAO visibility and iridescence parameters.
110
+ - Add the first S0 production shadow-cache slice. Stable atlas tiles now use exact light/caster
111
+ snapshots, scissored portable depth clears, per-slice invalidation, submission commit/rollback,
112
+ recovery invalidation, and `RendererDiagnostics.caches.shadowAtlas`; static slices issue no shadow
113
+ pass, while local-light changes redraw only their affected faces.
114
+ - Extend S0 shadows with clustered GPU Scene caster culling and fixed-bucket indirect depth draws;
115
+ receiver-driven local/cascade resolution; deterministic slice budgets and 1/2/4/8-frame CSM
116
+ cadence; and submission-aware 128-pixel page residency with coalesced page-scissored updates that
117
+ avoid replaying the caster queue once per adjacent page. Expose page
118
+ request/update/defer/residency and budget-overflow counts in frame diagnostics.
119
+ - Add opt-in WebGPU Clustered virtual directional shadows through
120
+ `ClusteredForwardPlusPipelineOptions.virtualShadows`: previous-Hi-Z receiver classification,
121
+ atomic GPU request deduplication and deterministic ordering, arbitrary logical-to-physical page
122
+ remapping with LRU eviction, deferred dirty-page retry, per-page GPU caster compact/indirect depth
123
+ draws, and camera-centered directional clipmaps. Double-buffer page tables, residency, and clipmap
124
+ epochs commit only after successful submission; failed frames roll back and device recovery
125
+ reinitializes mappings without CPU request readback. Expose on-demand virtual-shadow diagnostics
126
+ and retain shared CSM fallback for missing pages and non-GPU caster scenes.
127
+ - Complete the WebGPU high-end Clustered Forward+ P0 closure. Globally sorted compatible transparent
128
+ PBR and direct GPU Scene skin, morph, and layered glTF PBR now consume the native storage light
129
+ list, while mixed Transmission/custom/particle transparent queues fail closed to the shared
130
+ Forward path. Add transparent/transmission and isolated GPU-particle reactive, depth-agreement,
131
+ history-resurrection composition; analytic Spot cookie/IES records and uint32 light-layer
132
+ filtering; a public material-variant manifest with asynchronous warmup, transactional runtime
133
+ admission, fixed budgets, and diagnostics; and real WebGPU pixel/UI coverage for rollback, device
134
+ loss, recovery, layered/deformed lighting, particles, and mixed-queue fallback. Fix the stateless
135
+ particle WGSL hash expression for strict browser parser precedence.
136
+
137
+ - Resolve the `hilo3d-game` starter dependency from the npm `next` dist-tag, validate its supported
138
+ 2.0 release shape, and pin the resolved concrete version for reproducible installs.
39
139
  - Update the standalone `hilo3d-game` skill for immutable material topology, Mesh-owned ordering and
40
140
  shadow participation, and the completed portable/WebGPU particle authoring workflow.
41
141
  - Normalize managed particle textures through the shared top-left UV boundary for CPU and WebGPU
@@ -158,17 +258,17 @@
158
258
  non-black and on/off pixel coverage. Keep the deployed glTF beside its external binary payload,
159
259
  and make the site link gate validate nested glTF buffer, image, and extension URIs before publish.
160
260
  - Add production WebGPU high-end screen-space reflections to `ClusteredForwardPlusPipelineFactory`.
161
- The opt-in path adds a strict built-in `material-attributes` `rgba16float` ABI, GPU Scene MRT and
162
- ordinary Forward fallback coverage, RG32F min/max Hi-Z, hierarchical coarse-to-fine tracing,
163
- roughness radiance cones, edge/distance/roughness confidence, motion/log-depth temporal rejection
164
- and confidence-aware depth/normal à-trous filtering before HDR composition and TAA/TAAU. Keep the
165
- disabled path allocation- and pass-free, fail closed without Hi-Z or TemporalAA, and reset history
166
- across camera cuts/identity changes, resize, discarded frames and device recovery. Feed ordinary
167
- Forward opaque through a `depth-only` fallback prepass before current Hi-Z construction so layered
168
- PBR objects are present in both the radiance source and hierarchical depth trace. Add `rg32float`
169
- to the public compute storage-texture formats, add the repository-bundled Khronos Car Concept to
170
- the dedicated Afterimage SSR showcase, and cover real WebGPU on/off pixels plus GPU validation.
171
- The existing Temporal Observatory remains focused on TAA/TAAU.
261
+ The opt-in path adds a strict built-in `material-attributes` `rgba8unorm` ABI, matching HDR GPU
262
+ Scene MRT and ordinary Forward fallback coverage, RG32F min/max Hi-Z, hierarchical coarse-to-fine
263
+ tracing, roughness radiance cones, edge/distance/roughness confidence, motion/log-depth temporal
264
+ rejection and confidence-aware depth/normal à-trous filtering before HDR composition and TAA/TAAU.
265
+ Keep the disabled path allocation- and pass-free, fail closed without Hi-Z or TemporalAA, and
266
+ reset history across camera cuts/identity changes, resize, discarded frames and device recovery.
267
+ Feed ordinary Forward opaque through a `depth-only` fallback prepass before current Hi-Z
268
+ construction so layered PBR objects are present in both the radiance source and hierarchical depth
269
+ trace. Add `rg32float` to the public compute storage-texture formats, add the repository-bundled
270
+ Khronos Car Concept to the dedicated Afterimage SSR showcase, and cover real WebGPU on/off pixels
271
+ plus GPU validation. The existing Temporal Observatory remains focused on TAA/TAAU.
172
272
  - Add the `TemporalAA` Forward feature with native-resolution TAA and fixed-scale TAAU. Built-in
173
273
  opaque/masked materials now expose a strict single-sample `rgba16float` motion pass containing
174
274
  current-to-previous UV velocity, expected previous logarithmic view depth, and current logarithmic
package/README.md CHANGED
@@ -127,6 +127,7 @@ path and compose into the same linear HDR frame.
127
127
  | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
128
128
  | GPU Scene | Dirty object/material databases, previous-frame Hi-Z occlusion, projected-radius LOD, compact visible ranges, and fixed indirect buckets |
129
129
  | Clustered Forward+ | Depth-driven 3D clusters, bounded deterministic light allocation, storage PBR, shared directional/spot/point shadows, and LTC area lights |
130
+ | Shadow caching | Stable atlas tiles, exact per-slice invalidation, scissored depth clears, transactional reuse, and recovery-aware diagnostics |
130
131
  | Temporal rendering | Motion vectors, authored reactive masks, native TAA, 0.5–1.0 TAAU, and timestamp-driven dynamic resolution |
131
132
  | Screen-space lighting | Portable GTAO and SSGI on WebGPU/WebGL 2, plus WebGPU Clustered hierarchical SSR |
132
133
  | Volumetrics and weather | Froxel height/local fog, directional/point/spot injection, physical atmosphere LUTs, temporal clouds, and cloud shadows |
package/README_ZH.md CHANGED
@@ -123,6 +123,7 @@ Scene 覆盖范围内的兼容 Mesh 会继续走共享 Forward 路径,并合
123
123
  | ------------------ | ----------------------------------------------------------------------------------------------------- |
124
124
  | GPU Scene | 脏对象/材质数据库、previous-frame Hi-Z 遮挡、projected-radius LOD、紧凑可见区间与固定 indirect bucket |
125
125
  | Clustered Forward+ | depth-driven 3D cluster、有界且确定性的灯光分配、storage PBR、共享方向光/聚光/点光阴影与 LTC 面光 |
126
+ | 阴影缓存 | 稳定 atlas tile、逐 slice 精确失效、局部深度清理、事务式复用与 recovery-aware 诊断 |
126
127
  | 时域渲染 | Motion Vector、authored reactive mask、原生 TAA、0.5–1.0 TAAU 与 timestamp 驱动的动态分辨率 |
127
128
  | 屏幕空间光照 | WebGPU/WebGL 2 可移植 GTAO 与 SSGI,以及 WebGPU Clustered hierarchical SSR |
128
129
  | 体积与天气 | Froxel 高度雾/局部雾、方向光/点光/聚光注入、物理大气 LUT、时域云与云影 |