illutions 0.30.0 → 0.32.0

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
@@ -1,186 +1,261 @@
1
- # Changelog
2
-
3
- ## 0.30.0
4
-
5
- ### Changed
6
-
7
- - Replaced `Mesh3D.setTexture()` and `TextureSlot` with `requestImageTexture()` and `getImageTexture()` to separate requesting unused GLTF images from accessing their initialized Three.js textures and assigning them directly to material slots.
8
- - Textures created from unused GLTF images now remain stable across progressive model levels while their image and mipmap data is updated.
9
-
10
- ### Fixed
11
-
12
- - Fixed the `Obj3D.onStart()` lifecycle so it is called before GLTF model loading begins, as documented.
13
-
14
- ## 0.29.1
15
-
16
- ### Fixed
17
-
18
- - Fixed progressive model loading so textures belonging to materials not currently assigned to a mesh are updated through all model quality levels.
19
-
20
- ## 0.29.0
1
+ # Changelog
2
+
3
+ ## 0.32.0
21
4
 
22
5
  ### Added
23
6
 
24
- - Added protected `Mesh3D.setTexture()` to assign unused GLTF images by name to the `ColorMap`, `LightMap`, or `AlphaMap` material slot, with optional UV channel and light map intensity settings; registered textures are updated across progressive model levels.
25
- - Added the exported `TextureSlot` union for the supported material slots.
26
-
27
- ## 0.28.0
7
+ - Added `Scene.animTransformTo({ obj, pos?, rot?, scale?, duration?, ease? })` for local transformations with rotation in degrees; new calls replace the previous transformation of the same object.
8
+ - Added `Audio.pause({ name, fade?, ease? })` to pause a sound while preserving its playback position; `Audio.play()` resumes it, while `Audio.stop()` resets playing or paused sounds to the beginning.
9
+ - Added the exported `AudioEvent` with `Audio_Start`, `Audio_Complete`, and `Audio_Stop`, each carrying `soundName`; completion indicates a natural playback end, and stopping emits its event immediately or after fade-out finishes.
10
+ - Added the exported `SoundParamsPos` and optional per-sound distance attenuation and directional cone overrides in `SoundParams`; omitted settings inherit the shared audio defaults.
11
+ - Added `Audio.setSoundParams()` to update a loaded sound's volume and positional overrides; volume changes during a fade are stored for subsequent playback without interrupting the fade.
28
12
 
29
- ### Added
13
+ ### Renamed
30
14
 
31
- - Added `Mesh3D.animMaterialColor()`, `Mesh3D.animMaterialNumeric()`, and `Mesh3D.setMaterialProperties()` as object-bound counterparts to the existing `Engine` material methods.
32
- - Added the optional `needsUpdate` parameter to `Engine.animMaterialNumeric()`, `Engine.setMaterialProperties()`, `Mesh3D.animMaterialNumeric()`, and `Mesh3D.setMaterialProperties()` to request material recompilation.
33
- - Added degree-based horizontal orbit constraints through `orbitCtrls.minAzimuthAngle` and `orbitCtrls.maxAzimuthAngle`.
34
- - Added `ModelLoadedEvent` with `Model_Loaded` for a single model and numbered `Model1_Loaded`, `Model2_Loaded`, etc. events for progressive models.
35
- - Added the `Model_Ready` event after the final progressive model variant has been applied and rendered.
36
- - Added the exported `Collider` configuration and `Raycast.setColliders()` and `Raycast.clearColliders()` to configure named scene objects or `Obj3D` instances as occluders, pickables, or hidden colliders.
15
+ - `cfg.audio.delayPlaySound` → `cfg.audio.delayLoadSound`
16
+ - `SoundParams.object` → `SoundParams.obj`
17
+ - `Audio.setListener({ object })` → `Audio.setListener({ obj })`
37
18
 
38
19
  ### Changed
39
20
 
40
- - Replaced `Raycast.setOccluders()`, `Raycast.resetOccluders()`, `Raycast.trackPickables()`, and `Raycast.untrackPickables()` with the unified collider API.
41
- - Renamed `Raycast.enable()` and `Raycast.disable()` to `Raycast.enablePickables()` and `Raycast.disablePickables()`.
42
- - Renamed `raycast.occlInterval` to `raycast.occludeeInterval` and `raycast.occlMoveFactor` to `raycast.occlusionMoveFactor`.
43
- - Changed progressive `ModelLoadingEvent` and `SceneRenderedEvent` types to numbered `Model1_Loading`, `Scene1_Rendered`, etc. events; unnumbered events remain available for a single model.
44
- - Removed the `level` property from `ModelLoadingEvent`; the progressive model level is now identified by the event type.
45
- - Removed the obsolete `fct` property from `ClipEvent`.
46
- - Changed pointer raycasts so that registered occluders block pickables behind them.
21
+ - Added `Anim_Cancel` to `AnimEvent` for transformations replaced by `Scene.animTransformTo()`.
22
+ - Merged `AudioLoadedEvent` into `AudioEvent`, which now also includes `Audio_Loaded`; removed the separate `AudioLoadedEvent` interface.
23
+ - Extended `SoundParams.obj` to accept a scene object name or an `Obj3D` instance; an empty string still selects global audio. Positional settings are rejected for global sounds during loading and ignored when updating them.
24
+ - Removed `fade` from `SoundParams` and `Audio.load()`; `Audio.loadAndPlay()`, `Audio.play()`, and `Audio.stop()` now accept per-call `fade` and GSAP `ease` options. Fades default to `0` (no fade), with linear easing (`'none'`), instead of a stored two-second fade.
25
+ - Changed `Audio.get()` to return `SoundParamsPos` and `Audio.set()` to accept `Partial<SoundParamsPos>`; loading delay is no longer exposed through these methods, and shared default updates preserve per-sound overrides.
47
26
 
48
27
  ### Fixed
49
28
 
50
- - Corrected `CanvasPointerEvent` to expose `Canvas_Click`, `Canvas_Pointer_Enter`, and `Canvas_Pointer_Leave`.
51
- - Added the already emitted `FpvCtrls_Disposed` event to `FpvCtrlsEvent`.
52
- - Delayed the postprocessing noise check until `Model_Ready` so that postprocessing is not disabled before the final progressive model variant is rendered.
53
-
54
- ## 0.27.0
55
-
56
- ### Added
57
-
58
- - Added progressive model loading through ordered model levels in `ModelCfg.file`.
59
-
29
+ - Fixed `Audio.play()` and `Audio.resume()` to resume interrupted audio contexts in addition to suspended contexts.
30
+
31
+ ## 0.31.0
32
+
33
+ ### Added
34
+
35
+ - Added the optional `recursive` parameter to `Engine.setMaterialProps()` and `Mesh3D.setMaterialProps()` to include all descendant meshes.
36
+ - Added `Coll3D` and `Coll3DParams` for persistent mesh-based raycast colliders with `hidden`, `pickable`, and `occluder` roles and an optional `target` that maps raycast events to another `Mesh3D`.
37
+ - Added `Obj3DParams` and the persistent `Obj3D.hidden` state, which hides the rendered object without disabling raycasting and is included in combined visibility events.
38
+ - Added optional `{ class, params }` entries through `SceneEntry` and `WebEntry`; `WebParams` values are assigned to matching custom-element instances during app initialization.
39
+ - Added `CompsInsts` to map Scene Component and Web Component definitions to their runtime instances.
40
+ - Added `EnvLoadedEvent` with `Env_Loaded` after the initial environment is applied and all progressive background loading attempts complete; failed background maps may be skipped, and canceled or superseded loads do not emit the event.
41
+ - Added `cfg.render.adaptiveGfx`, `cfg.render.ecoMode`, and `cfg.render.fpsMin` for adaptive graphics quality and Eco mode configuration.
42
+ - Added the exported `AaMode`, `WebGlAaMode`, `WebGpuAaMode`, `WebGlSslMode`, `WebGpuSslMode`, `DebugLog`, and `MsaaMode` configuration types.
43
+ - Added WebGPU SSGI with AO and GI output, adaptive warm-up, configuration, and Inspector controls.
44
+
45
+ ### Renamed
46
+
47
+ - `Engine.setMaterialProperties()` → `Engine.setMaterialProps()` and `Mesh3D.setMaterialProperties()` → `Mesh3D.setMaterialProps()`
48
+
49
+ - `Classes` → `Comps`
50
+ - `Comp` → `Web`
51
+ - `CompEvent` → `WebEvent`
52
+ - `CompOverlapEvent` → `WebOverlapEvent`
53
+ - `CompVisibleEvent` → `WebVisibleEvent`
54
+ - `Comp_Overlap_Changed` → `Web_Overlap_Changed`
55
+ - `Comp_Visible_Changed` → `Web_Visible_Changed`
56
+ - `CompOverlapEvent.comp` → `WebOverlapEvent.web`
57
+ - `CompVisibleEvent.comp` → `WebVisibleEvent.web`
58
+ - `CompClass` → `WebClass`
59
+ - `Obj3DClass` → `SceneClass`
60
+ - `CompInsts` → `WebInsts`
61
+ - `Obj3DInsts` → `SceneInsts`
62
+ - `Comp.comps` → `Web.webs`
63
+
60
64
  ### Changed
61
65
 
62
- - Changed `ModelCfg.file` from `string | null` to `string[]`; use an empty array when no model should be loaded.
63
- - Added the one-based `level` parameter to `ModelLoadingEvent` to identify the model level currently loading.
64
- - Changed state names to `snake_case` and event names to `Pascal_Snake_Case`.
65
- - Updated debug console output to use `State:` and `Event:` labels and the new naming conventions.
66
-
67
- ## 0.26.0
68
-
69
- ### Added
70
-
71
- - Added TRAA as a WebGPU anti-aliasing mode through `cfg.post.aa.mode = 'traa'`.
72
- - Added the `raycast.occlInterval` configuration to distribute pending marker occlusion checks evenly over a configurable time interval.
73
- - Added the `raycast.occlMoveFactor` configuration to trigger new occlusion checks only after the object or camera exceeds a distance-relative movement threshold.
74
- - Added `Raycast.setOccluders()` and `Raycast.resetOccluders()` to optionally restrict occlusion checks to selected scene objects.
75
- - Added `Comp.trackOverlap()` and `Comp.untrackOverlap()` to manage component overlaps in screen space through the internal `CompCtrls`.
76
- - Added `cfg.light.rectArea` to lazily load and initialize renderer-specific LTC data for `RectAreaLight` support.
77
-
66
+ - Replaced the `objs3D` and `comps` registry groups with `comps.scene` and `comps.web`; initialized instances are now exposed through `app.comps.scene` and `app.comps.web`.
67
+ - Changed `Raycast.setColliders()` and `Raycast.clearColliders()` to accept arrays of registered `Coll3D` instances and use or reset their persistent collider roles; removed the exported `Collider` interface.
68
+ - Replaced the individual post-processing enable settings with typed `cfg.render.profile.webgl` and `cfg.render.profile.webgpu` settings for MSAA, AA, SSL, and SSR.
69
+ - Renamed `cfg.post.ssao` to `cfg.post.ssl` and simplified the exported post-processing config type names to `SslCfg`, `SsaoCfg`, `GtaoCfg`, `SsgiCfg`, `WebGlSsrCfg`, and `WebGpuSsrCfg`.
70
+ - Renamed `cfg.post.webgpu.ssao` to `cfg.post.webgpu.gtao` and removed the obsolete `distanceExponent` and `distanceFallOff` settings.
71
+ - Replaced `cfg.render.params.antialias` with renderer-specific `profile.msaa` settings, supporting `'none'`, `'render'`, and `'post'`.
72
+ - Replaced `cfg.render.fpsLimiter` and `cfg.render.fpsMax` with `cfg.render.adaptiveGfx`, `cfg.render.ecoMode`, and `cfg.render.fpsMin`.
73
+ - Changed the default value of `cfg.render.deltaTimesMax` from `10` to `20`.
74
+ - Updated the peer dependencies to Three.js r186 (`~0.186.0`) and XState 5.33 (`~5.33.2`).
75
+ - Removed the `detect-gpu` runtime dependency.
76
+ - `Model_Loading` and numbered progressive loading events now fire only when the rounded percentage changes within each model load.
77
+
78
+ ## 0.30.0
79
+
78
80
  ### Changed
79
81
 
80
- - Moved the shared SSR settings `maxDistance`, `thickness`, and `resolutionScale` from `cfg.post.webgl.ssr` and `cfg.post.webgpu.ssr` to `cfg.post.ssr`.
81
- - Renamed the public `Raycast.trackSelectables()` and `Raycast.untrackSelectable()` methods to `Raycast.trackPickables()` and `Raycast.untrackPickables()`.
82
-
83
- ### Fixed
84
-
85
- - Fixed the Inspector showing TRAA or an empty anti-aliasing mode for WebGL by falling back to FXAA when `cfg.post.aa.mode` is set to `'traa'`.
86
-
87
- ## 0.25.0
88
-
89
- ### Added
90
-
91
- - Added `CanvasPointerLeave` handling to the `Obj3D_Pointer_Leave` event.
92
- - Added `ActionCtrls` for centralized animation action lifecycle, layer grouping, and interruptible fades.
93
- - Extended `ClipEvent` with `Clip_Cancel`, `Clip_Fade_Start`, `Clip_Fade_Complete`, `Clip_Speed_Start`, and `Clip_Speed_Complete` events.
94
-
95
- ### Fixed
96
-
97
- - Fixed `Obj3D_Pointer_Leave` being emitted during pointer movement with a pressed mouse button and ensured touch pointers emit it after `Obj3D_Pointer_Up` when contact ends.
98
-
99
- ## 0.24.1
100
-
101
- ### Added
102
-
103
- - Added the `ProgressBar_Hidden` event.
104
-
82
+ - Replaced `Mesh3D.setTexture()` and `TextureSlot` with `requestImageTexture()` and `getImageTexture()` to separate requesting unused GLTF images from accessing their initialized Three.js textures and assigning them directly to material slots.
83
+ - Textures created from unused GLTF images now remain stable across progressive model levels while their image and mipmap data is updated.
84
+
85
+ ### Fixed
86
+
87
+ - Fixed the `Obj3D.onStart()` lifecycle so it is called before GLTF model loading begins, as documented.
88
+
89
+ ## 0.29.1
90
+
91
+ ### Fixed
92
+
93
+ - Fixed progressive model loading so textures belonging to materials not currently assigned to a mesh are updated through all model quality levels.
94
+
95
+ ## 0.29.0
96
+
97
+ ### Added
98
+
99
+ - Added protected `Mesh3D.setTexture()` to assign unused GLTF images by name to the `ColorMap`, `LightMap`, or `AlphaMap` material slot, with optional UV channel and light map intensity settings; registered textures are updated across progressive model levels.
100
+ - Added the exported `TextureSlot` union for the supported material slots.
101
+
102
+ ## 0.28.0
103
+
104
+ ### Added
105
+
106
+ - Added `Mesh3D.animMaterialColor()`, `Mesh3D.animMaterialNumeric()`, and `Mesh3D.setMaterialProperties()` as object-bound counterparts to the existing `Engine` material methods.
107
+ - Added the optional `needsUpdate` parameter to `Engine.animMaterialNumeric()`, `Engine.setMaterialProperties()`, `Mesh3D.animMaterialNumeric()`, and `Mesh3D.setMaterialProperties()` to request material recompilation.
108
+ - Added degree-based horizontal orbit constraints through `orbitCtrls.minAzimuthAngle` and `orbitCtrls.maxAzimuthAngle`.
109
+ - Added `ModelLoadedEvent` with `Model_Loaded` for a single model and numbered `Model1_Loaded`, `Model2_Loaded`, etc. events for progressive models.
110
+ - Added the `Model_Ready` event after the final progressive model variant has been applied and rendered.
111
+ - Added the exported `Collider` configuration and `Raycast.setColliders()` and `Raycast.clearColliders()` to configure named scene objects or `Obj3D` instances as occluders, pickables, or hidden colliders.
112
+
105
113
  ### Changed
106
114
 
107
- - Renamed the `aaCfg` interface to `AaCfg`.
108
-
109
- ### Fixed
110
-
111
- - Fixed an incorrect `objTarget.position` when enabling orbit or FPV controls after setting it in `Cam3D.onReady()`.
112
-
113
- ## 0.24.0
114
-
115
- ### Added
116
-
117
- - Added animation modes `BlendMode`, `FinishMode`, `LoopMode`, `StopMode`
118
- - Added `fadeDuration` to `playClip()` and `playClipCam()`.
119
- - Added `Audio.load()` to load audio without starting playback.
120
- - Added the `AudioLoadedEvent` (`Audio_Loaded`) event for handling completed audio loading.
121
-
115
+ - Replaced `Raycast.setOccluders()`, `Raycast.resetOccluders()`, `Raycast.trackPickables()`, and `Raycast.untrackPickables()` with the unified collider API.
116
+ - Renamed `Raycast.enable()` and `Raycast.disable()` to `Raycast.enablePickables()` and `Raycast.disablePickables()`.
117
+ - Renamed `raycast.occlInterval` to `raycast.occludeeInterval` and `raycast.occlMoveFactor` to `raycast.occlusionMoveFactor`.
118
+ - Changed progressive `ModelLoadingEvent` and `SceneRenderedEvent` types to numbered `Model1_Loading`, `Scene1_Rendered`, etc. events; unnumbered events remain available for a single model.
119
+ - Removed the `level` property from `ModelLoadingEvent`; the progressive model level is now identified by the event type.
120
+ - Removed the obsolete `fct` property from `ClipEvent`.
121
+ - Changed pointer raycasts so that registered occluders block pickables behind them.
122
+
123
+ ### Fixed
124
+
125
+ - Corrected `CanvasPointerEvent` to expose `Canvas_Click`, `Canvas_Pointer_Enter`, and `Canvas_Pointer_Leave`.
126
+ - Added the already emitted `FpvCtrls_Disposed` event to `FpvCtrlsEvent`.
127
+ - Delayed the postprocessing noise check until `Model_Ready` so that postprocessing is not disabled before the final progressive model variant is rendered.
128
+
129
+ ## 0.27.0
130
+
131
+ ### Added
132
+
133
+ - Added progressive model loading through ordered model levels in `ModelCfg.file`.
134
+
122
135
  ### Changed
123
136
 
124
- - Replaced `pauseActions` with `stopMode` and `infinite` with `loop` in animation clip playback.
125
- - Renamed `Raycast.trackSelectable()` to `Raycast.trackSelectables()`.
126
- - Changed the `LightCfg` shadow defaults to match the corresponding Three.js defaults, while keeping `castShadow` enabled by default.
127
-
128
- ### Fixed
129
-
130
- - Fixed visual stuttering when transitioning from orbit rotation to panning with damping enabled by keeping `OrbitCtrls` in `lookMode = 'target'` for all OrbitControls interactions.
131
-
132
- ## 0.23.1
133
-
134
- ### FIXED
135
-
136
- - Convert absolute path to the Draco folder to a relative path.
137
-
138
- ## 0.23.0
139
-
140
- ### Added
141
-
142
- - Added progressive environment map loading.
143
- - Added `Cam3D` support to `Audio.setListener()` targets.
144
- - Added support for using the base `Cam3D` class in the `classes.objs3D` registry.
145
-
146
- ### Fixed
147
-
148
- - Fixed WebGL environment maps so PMREM-generated textures are not used for `THREE.Scene.background`.
149
-
150
- ## 0.22.1
151
-
152
- ### Added
153
-
154
- - Added `cfg.render.params` for renderer-specific runtime parameters.
155
- - Added `render.api` output to the infobox.
156
- - Added `.blend` source files to the public example apps.
157
-
137
+ - Changed `ModelCfg.file` from `string | null` to `string[]`; use an empty array when no model should be loaded.
138
+ - Added the one-based `level` parameter to `ModelLoadingEvent` to identify the model level currently loading.
139
+ - Changed state names to `snake_case` and event names to `Pascal_Snake_Case`.
140
+ - Updated debug console output to use `State:` and `Event:` labels and the new naming conventions.
141
+
142
+ ## 0.26.0
143
+
144
+ ### Added
145
+
146
+ - Added TRAA as a WebGPU anti-aliasing mode through `cfg.post.aa.mode = 'traa'`.
147
+ - Added the `raycast.occlInterval` configuration to distribute pending marker occlusion checks evenly over a configurable time interval.
148
+ - Added the `raycast.occlMoveFactor` configuration to trigger new occlusion checks only after the object or camera exceeds a distance-relative movement threshold.
149
+ - Added `Raycast.setOccluders()` and `Raycast.resetOccluders()` to optionally restrict occlusion checks to selected scene objects.
150
+ - Added `Comp.trackOverlap()` and `Comp.untrackOverlap()` to manage component overlaps in screen space through the internal `CompCtrls`.
151
+ - Added `cfg.light.rectArea` to lazily load and initialize renderer-specific LTC data for `RectAreaLight` support.
152
+
158
153
  ### Changed
159
154
 
160
- - Renamed `cfg.webgl` and `cfg.webgpu` parameter groups to `params`.
161
-
162
- ## 0.22.0
163
-
155
+ - Moved the shared SSR settings `maxDistance`, `thickness`, and `resolutionScale` from `cfg.post.webgl.ssr` and `cfg.post.webgpu.ssr` to `cfg.post.ssr`.
156
+ - Renamed the public `Raycast.trackSelectables()` and `Raycast.untrackSelectable()` methods to `Raycast.trackPickables()` and `Raycast.untrackPickables()`.
157
+
158
+ ### Fixed
159
+
160
+ - Fixed the Inspector showing TRAA or an empty anti-aliasing mode for WebGL by falling back to FXAA when `cfg.post.aa.mode` is set to `'traa'`.
161
+
162
+ ## 0.25.0
163
+
164
+ ### Added
165
+
166
+ - Added `CanvasPointerLeave` handling to the `Obj3D_Pointer_Leave` event.
167
+ - Added `ActionCtrls` for centralized animation action lifecycle, layer grouping, and interruptible fades.
168
+ - Extended `ClipEvent` with `Clip_Cancel`, `Clip_Fade_Start`, `Clip_Fade_Complete`, `Clip_Speed_Start`, and `Clip_Speed_Complete` events.
169
+
170
+ ### Fixed
171
+
172
+ - Fixed `Obj3D_Pointer_Leave` being emitted during pointer movement with a pressed mouse button and ensured touch pointers emit it after `Obj3D_Pointer_Up` when contact ends.
173
+
174
+ ## 0.24.1
175
+
176
+ ### Added
177
+
178
+ - Added the `ProgressBar_Hidden` event.
179
+
164
180
  ### Changed
165
181
 
166
- - Updated the framework to Three.js r185.
167
- - Changed the default renderer selection to `render.api = 'auto'`.
168
- - Added `envCtrls.dataType` to configure environment texture data handling.
169
- - Replaced `SsrWebGpuCfg.opacity` with `SsrWebGpuCfg.intensity`.
170
-
171
- ### Fixed
172
-
173
- - Clarified the WebGL/WebGPU renderer switch behavior.
174
- - Enabled WebGPU renderer loading even when post-processing is disabled.
175
-
176
- ## 0.21.9
182
+ - Renamed the `aaCfg` interface to `AaCfg`.
183
+
184
+ ### Fixed
185
+
186
+ - Fixed an incorrect `objTarget.position` when enabling orbit or FPV controls after setting it in `Cam3D.onReady()`.
187
+
188
+ ## 0.24.0
189
+
190
+ ### Added
191
+
192
+ - Added animation modes `BlendMode`, `FinishMode`, `LoopMode`, `StopMode`
193
+ - Added `fadeDuration` to `playClip()` and `playClipCam()`.
194
+ - Added `Audio.load()` to load audio without starting playback.
195
+ - Added the `AudioLoadedEvent` (`Audio_Loaded`) event for handling completed audio loading.
196
+
197
+ ### Changed
177
198
 
199
+ - Replaced `pauseActions` with `stopMode` and `infinite` with `loop` in animation clip playback.
200
+ - Renamed `Raycast.trackSelectable()` to `Raycast.trackSelectables()`.
201
+ - Changed the `LightCfg` shadow defaults to match the corresponding Three.js defaults, while keeping `castShadow` enabled by default.
202
+
203
+ ### Fixed
204
+
205
+ - Fixed visual stuttering when transitioning from orbit rotation to panning with damping enabled by keeping `OrbitCtrls` in `lookMode = 'target'` for all OrbitControls interactions.
206
+
207
+ ## 0.23.1
208
+
209
+ ### FIXED
210
+
211
+ - Convert absolute path to the Draco folder to a relative path.
212
+
213
+ ## 0.23.0
214
+
215
+ ### Added
216
+
217
+ - Added progressive environment map loading.
218
+ - Added `Cam3D` support to `Audio.setListener()` targets.
219
+ - Added support for using the base `Cam3D` class in the `classes.objs3D` registry.
220
+
221
+ ### Fixed
222
+
223
+ - Fixed WebGL environment maps so PMREM-generated textures are not used for `THREE.Scene.background`.
224
+
225
+ ## 0.22.1
226
+
227
+ ### Added
228
+
229
+ - Added `cfg.render.params` for renderer-specific runtime parameters.
230
+ - Added `render.api` output to the infobox.
231
+ - Added `.blend` source files to the public example apps.
232
+
178
233
  ### Changed
179
234
 
180
- - Removed the `CfgCtrl` class and the related `app.cfgCtrl` access point. Runtime parameters are now updated through the responsible feature APIs, such as `app.audio.set(...)`.
235
+ - Renamed `cfg.webgl` and `cfg.webgpu` parameter groups to `params`.
236
+
237
+ ## 0.22.0
238
+
239
+ ### Changed
181
240
 
182
- ## 0.21.8
241
+ - Updated the framework to Three.js r185.
242
+ - Changed the default renderer selection to `render.api = 'auto'`.
243
+ - Added `envCtrls.dataType` to configure environment texture data handling.
244
+ - Replaced `SsrWebGpuCfg.opacity` with `SsrWebGpuCfg.intensity`.
245
+
246
+ ### Fixed
247
+
248
+ - Clarified the WebGL/WebGPU renderer switch behavior.
249
+ - Enabled WebGPU renderer loading even when post-processing is disabled.
250
+
251
+ ## 0.21.9
252
+
253
+ ### Changed
183
254
 
255
+ - Removed the `CfgCtrl` class and the related `app.cfgCtrl` access point. Runtime parameters are now updated through the responsible feature APIs, such as `app.audio.set(...)`.
256
+
257
+ ## 0.21.8
258
+
184
259
  ### Changed
185
260
 
186
- - Added `cfg.audio.enable` to the configuration.
261
+ - Added `cfg.audio.enable` to the configuration.
package/LICENSE CHANGED
@@ -50,7 +50,8 @@ customization of the illutions branding.
50
50
 
51
51
  6. Restrictions
52
52
 
53
- Except as expressly permitted above, you may not:
53
+ Except as expressly permitted by this license or mandatory applicable law,
54
+ you may not:
54
55
 
55
56
  - redistribute, resell, or sublicense the illutions Engine as a standalone
56
57
  package;
@@ -77,4 +78,31 @@ Third-party components and assets remain subject to their respective licenses.
77
78
  The software is provided "as is", without warranties of any kind, to the maximum
78
79
  extent permitted by applicable law.
79
80
 
81
+ 10. Public API and Artificial Intelligence
82
+
83
+ The public availability of the minified and partially obfuscated npm package
84
+ confers no additional rights to its internal implementation.
85
+
86
+ Subject to this license, use of the Engine through its public API and
87
+ AI-assisted application development based on the published documentation and
88
+ public type declarations are permitted. Separately published example programs
89
+ remain subject to their respective licenses.
90
+
91
+ Except as permitted by this license or mandatory applicable law, you may not:
92
+
93
+ - distribute or publish the proprietary Engine as a standalone package;
94
+ - deobfuscate or reconstruct its internal implementation;
95
+ - submit proprietary implementation code to AI services for analysis or
96
+ reconstruction;
97
+ - use proprietary implementation code for AI training, model optimization,
98
+ creation of training datasets, or development of competing implementations.
99
+
100
+ These restrictions apply to proprietary implementation code, including
101
+ main.min.js and main.min.cjs, whether obtained from the npm package or delivered
102
+ as part of a website or application.
103
+
104
+ Incorporating and distributing the runtime as part of an application build
105
+ permitted by this license remains allowed. Mandatory statutory rights remain
106
+ unaffected. All rights not expressly granted are reserved.
107
+
80
108
  Website: https://illutions.com
package/README.md CHANGED
@@ -8,46 +8,32 @@ illutions is a proprietary Web 3D engine for building interactive browser-based
8
8
  Explore all illutions examples in the GitHub Gallery:
9
9
  [https://github.com/illutions](https://github.com/illutions)
10
10
 
11
- ## Highlights
12
-
13
- **Advanced post-processing**
14
- Add configurable SSAO, SSR, FXAA and SMAA pipelines for WebGL and WebGPU, plus TRAA for WebGPU.
15
-
16
- **Advanced animation control**
17
- Coordinate GLTF animation clips, GSAP transitions, camera paths and custom dolly-rig camera workflows.
18
-
19
- **Progressive model and HDRI loading**
20
- Load ordered model levels and environment maps progressively for faster initial presentation and seamless quality upgrades.
21
-
22
- **Flexible baked texture workflows**
23
- Assign embedded GLTF textures by name to any object and material as light maps, fully baked combined color maps or alpha maps.
24
-
25
- **XState-powered application logic**
26
- Model complex application flows as predictable and inspectable state machines with integrated XState 5 usage.
27
-
28
- **Resource-aware rendering**
29
- An intelligent, configurable FPS limiter avoids unnecessary frames and helps reduce CPU and GPU load.
30
-
31
- **WebGL and WebGPU rendering**
32
- Support established and next-generation browser rendering with automatic WebGPU selection and WebGL fallback.
33
-
34
- **Lean initial bundles**
35
- Optional controls, loaders, inspectors and effects are dynamically imported only when needed.
36
-
37
- **Optimized GLTF/GLB pipeline**
38
- Load assets with Draco or Meshopt mesh compression and WebP or KTX2 textures.
39
-
40
- **Built-in interaction and audio**
41
- Use pointer-based raycasting and distance-aware spatial audio.
42
-
43
- **Flexible environments**
44
- Load HDR, EXR and texture environments with configurable rotation, intensity and background controls.
45
-
46
- **Intelligent web markers**
47
- Keep screen-space markers responsive with optimized occlusion checks, configurable occluders and movement-aware updates.
48
-
49
- **Runtime insights and debugging**
50
- Inspect runtime properties, FPS, CPU and renderer statistics with detailed state, event and console reporting.
11
+ ## Why use Illutions?
12
+
13
+ - **Powerful state machine:**<br>
14
+ Use XState to coordinate events, actions, and state transitions.
15
+ - **Precise animation control:**<br>
16
+ Layer and blend clips, control loops and transitions, and use GSAP for fades and speed changes.
17
+ - **Small initial download:**<br>
18
+ Optional modules load only when their features are used.
19
+ - **Modern graphics APIs:**<br>
20
+ Render with WebGPU where supported, with automatic fallback to WebGL.
21
+ - **Enhanced image quality:**<br>
22
+ Post-processing adds anti-aliasing, ambient occlusion with SSAO/GTAO, indirect illumination with WebGPU SSGI, and screen-space reflections.
23
+ - **Individual graphics to each device:**<br>
24
+ Adaptive Graphics adjusts visual quality to the hardware's performance.
25
+ - **Eco Mode:**<br>
26
+ Reduces rendering work to lower power use and help preserve battery life.
27
+ - **Complex 3D scenes:**<br>
28
+ Load GLTF/GLB scenes with geometry, materials, textures, and animation clips.
29
+ - **Fast visual startup:**<br>
30
+ Progressive loading displays the first model level while higher-quality geometry and textures load; background maps update in stages.
31
+ - **Interact with 3D:**<br>
32
+ Users interact with scene objects and Web Components. Raycasting and events connect the scene with the page.
33
+ - **Live engine tuning:**<br>
34
+ The Inspector lets you adjust supported Illutions settings while the application runs.
35
+ - **Performance at a glance:**<br>
36
+ The Info Bar shows the renderer API, FPS, CPU/update time, and rendering statistics in real time.
51
37
 
52
38
  ## Installation
53
39