From 31e0ac5087d2c2f8929534ca27bca2782c0d57ce Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2026 22:56:11 +0000 Subject: [PATCH] Version Packages --- .changeset/clear-code-documentation.md | 10 ----- .changeset/clearer-website-copy.md | 6 --- .../core-custom-shaders-and-instancing.md | 16 -------- .changeset/particles-packages.md | 12 ------ .changeset/terrain-package.md | 12 ------ .changeset/two-d-sprite-batch.md | 7 ---- .changeset/vite-plugin-wgsl-validation.md | 7 ---- packages/2d/CHANGELOG.md | 14 +++++++ packages/2d/package.json | 2 +- packages/2d/skills/2d/SKILL.md | 4 +- packages/3d/CHANGELOG.md | 11 ++++++ packages/3d/package.json | 2 +- packages/3d/skills/3d/SKILL.md | 4 +- packages/audio/CHANGELOG.md | 9 +++++ packages/audio/package.json | 2 +- packages/audio/skills/audio/SKILL.md | 4 +- packages/cli/CHANGELOG.md | 15 +++++++ packages/cli/package.json | 2 +- packages/core/CHANGELOG.md | 21 ++++++++++ packages/core/package.json | 2 +- packages/devtools/CHANGELOG.md | 13 +++++++ packages/devtools/package.json | 2 +- packages/devtools/skills/devtools/SKILL.md | 4 +- packages/electron/CHANGELOG.md | 8 ++++ packages/electron/package.json | 2 +- packages/electron/skills/electron/SKILL.md | 2 +- packages/ignifx/CHANGELOG.md | 39 +++++++++++++++++++ packages/ignifx/package.json | 2 +- packages/input/CHANGELOG.md | 8 ++++ packages/input/package.json | 2 +- packages/input/skills/input/SKILL.md | 4 +- packages/particles-2d/CHANGELOG.md | 22 +++++++++++ packages/particles-2d/package.json | 2 +- .../particles-2d/skills/particles-2d/SKILL.md | 4 +- packages/particles/CHANGELOG.md | 18 +++++++++ packages/particles/package.json | 2 +- packages/particles/skills/particles/SKILL.md | 4 +- packages/physics-2d/CHANGELOG.md | 10 +++++ packages/physics-2d/package.json | 2 +- .../physics-2d/skills/physics-2d/SKILL.md | 4 +- packages/physics/CHANGELOG.md | 8 ++++ packages/physics/package.json | 2 +- packages/physics/skills/physics/SKILL.md | 4 +- packages/terrain/CHANGELOG.md | 18 +++++++++ packages/terrain/package.json | 2 +- packages/terrain/skills/terrain/SKILL.md | 4 +- packages/ui/CHANGELOG.md | 9 +++++ packages/ui/package.json | 2 +- packages/ui/skills/ui/SKILL.md | 4 +- packages/vite-plugin/CHANGELOG.md | 15 +++++++ packages/vite-plugin/package.json | 2 +- skills/ignifx/SKILL.md | 2 +- .../references/formats/ignifx.schemas.json | 2 +- 53 files changed, 279 insertions(+), 111 deletions(-) delete mode 100644 .changeset/clear-code-documentation.md delete mode 100644 .changeset/clearer-website-copy.md delete mode 100644 .changeset/core-custom-shaders-and-instancing.md delete mode 100644 .changeset/particles-packages.md delete mode 100644 .changeset/terrain-package.md delete mode 100644 .changeset/two-d-sprite-batch.md delete mode 100644 .changeset/vite-plugin-wgsl-validation.md create mode 100644 packages/particles-2d/CHANGELOG.md create mode 100644 packages/particles/CHANGELOG.md create mode 100644 packages/terrain/CHANGELOG.md diff --git a/.changeset/clear-code-documentation.md b/.changeset/clear-code-documentation.md deleted file mode 100644 index b038259..0000000 --- a/.changeset/clear-code-documentation.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@ignifx/core": patch -"@ignifx/3d": patch -"@ignifx/audio": patch -"@ignifx/cli": patch -"@ignifx/vite-plugin": patch -"ignifx": patch ---- - -Clarify API documentation and starter-template comments, and update the README's setup instructions. diff --git a/.changeset/clearer-website-copy.md b/.changeset/clearer-website-copy.md deleted file mode 100644 index c62a302..0000000 --- a/.changeset/clearer-website-copy.md +++ /dev/null @@ -1,6 +0,0 @@ ---- ---- - -Clarify the website’s copy and make playable templates, examples and setup easier to explore. - -Simplify the logo and icons, refine wordmark spacing, and retire the public press kit while preserving its assets. diff --git a/.changeset/core-custom-shaders-and-instancing.md b/.changeset/core-custom-shaders-and-instancing.md deleted file mode 100644 index a90ff56..0000000 --- a/.changeset/core-custom-shaders-and-instancing.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@ignifx/core": minor ---- - -- Add shader materials: a `.wgsl` file with `// @ignifx` pragma comments declares its uniforms, textures, storage buffers, defines and pipeline state, and loads as a `ShaderAsset`. A `.material.json` with `"type": "shader"` or `shaderMaterialDefinition({ shader, values, textures, defines })` applies values to it. -- Add `MaterialAsset.setUniform`, `getUniform`, `setTexture`, `setDefine` and `setStorageBuffer` to edit a live shader material. An unknown name throws `IGX-0712`, a wrong value shape `IGX-0713`, and a call on a PBR or Standard material `IGX-0718`. -- Upload `time`, `unscaledTime`, `deltaTime`, `mainLightDirection`, `mainLightColor` and `ambientColor` every frame to shaders that declare them. `time` freezes while the app is paused. A main-light uniform with no directional light logs `IGX-0714` once. -- Rebuild every material built from a `.wgsl` file in place when the file is replaced by hot reload. A compile failure keeps the last good material and reports `IGX-0715`. -- Add surface shaders: `.surface.wgsl` files with `displace`, `surface` and `composite` hooks attach to PBR materials through `surfaces`, keeping lights, shadows and image-based lighting. They require `rendering.features.materialPlugins` (`IGX-0716`). -- Add custom post effects: `.post.wgsl` files run in `PostProcessStack.custom`, ordered with the built-in effects. -- Add `InstancedMeshRenderer` for thin instances of one mesh with `setMatrices`, `setColors`, `setCount`, GPU culling and an LOD partner mesh. Changing `gpuCulling` or `lod` after the scene is registered throws `IGX-0717`; writing past `capacity` throws `IGX-0721`. -- Add `createStorageBufferAsset` and `StorageBufferAsset.update` (`IGX-0720` past the end), `TextureAsset.fromPixels` and `textureAsset.update` (`IGX-0722` on a size mismatch), and `MeshAsset.updatePositions`, `updateNormals`, `updateUvs` and `updateColors` for `fromData` meshes (`IGX-0725` when the range does not fit). `MeshAsset.fromData` accepts `uvs2`, `tangents` and `colors`. -- Shader materials cast PCF and CSM shadows. Babylon Lite 1.27.0 cannot render them into ESM shadow maps, so they are left out of ESM caster lists with one `IGX-0724` warning. -- Register the `IGX-16xx` (terrain) and `IGX-17xx` (particles) error ranges. -- Fix a black canvas after a material swap: two renderable rebuilds could overlap while Babylon Lite rebuilt its frame graph, leaving a render pass without a colour attachment. Rebuilds now run one at a time. -- Fix `Environment.fog`: the fog settings never reached the GPU, so fogged scenes rendered without fog. Fog now renders, with the colour decoded once, and `mode: "none"` turns it off on pipelines that were compiled with fog. diff --git a/.changeset/particles-packages.md b/.changeset/particles-packages.md deleted file mode 100644 index 5157c2e..0000000 --- a/.changeset/particles-packages.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@ignifx/particles": minor -"@ignifx/particles-2d": minor -"ignifx": minor ---- - -- Add `@ignifx/particles`: `ParticleSystem` plays `.particles.json` definitions as stateless GPU particles. The vertex shader evaluates each particle from its spawn record and the current time, so the CPU writes only the particles emitted each frame. `play`, `stop`, `pause`, `resume`, `emit(n)`, `simulate(seconds)`, `aliveCount` and `onStopped` control it. -- Add nine presets through `particleDefinition("fire" | "smoke" | "sparks" | "explosion" | "dust" | "sparkle" | "rain" | "snow" | "leaves", overrides?)`. -- Add `app.particles` with `maxParticles`, `qualityScale` and `gravity` (taken from the physics settings when `@ignifx/physics` is registered), plus alive, emitted, upload and draw-call counters in `app.diagnostics`. -- Particles pause exactly with the app, follow `timeScale`, and reproduce for a given `seed`. Collisions, sub-emitters and per-particle sorting are not available: they are not functions of time alone. -- Add `@ignifx/particles-2d`: `ParticleSystem2D` plays the same definitions into a 2D sorting layer through `app.twoD.createSpriteBatch`, sharing the particle budget with the 3D systems. -- The `ignifx` umbrella re-exports both packages. diff --git a/.changeset/terrain-package.md b/.changeset/terrain-package.md deleted file mode 100644 index ecf3ed2..0000000 --- a/.changeset/terrain-package.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@ignifx/terrain": minor -"@ignifx/cli": minor -"ignifx": minor ---- - -- Add `@ignifx/terrain`: `Terrain` loads a `.terrain.json` with a 16-bit `.r16` heightmap, a PNG heightmap, or seeded noise, and draws it as chunked geomipmapped meshes with skirts, one level of detail per chunk, chosen and frustum-culled every frame. -- Blend up to eight texture layers with RGBA control maps or height and slope rules through one PBR material and a surface shader, so shadows, image-based lighting and fog stay intact. Per-layer roughness is not available. -- Query the terrain without physics: `heightAt`, `normalAt`, `raycast`, `bounds`, `worldToSample` and `sampleToWorld`. `colliderInit()` returns the init a `HeightfieldCollider` from `@ignifx/physics` accepts, and `setHeights` sculpts at runtime and raises `onHeightsChanged`. -- Add `TerrainScatter`, which places grass and trees on chosen layers, slopes and heights with a seed, and draws them through `InstancedMeshRenderer` with GPU culling, an LOD mesh and the `foliageMaterialDefinition` wind shader. -- An 8-bit heightmap loads with a terracing warning (`IGX-1603`). Convert 16-bit PNGs with the new `ignifx import heightmap in.png out.r16` command in `@ignifx/cli`. -- The `ignifx` umbrella re-exports the package. diff --git a/.changeset/two-d-sprite-batch.md b/.changeset/two-d-sprite-batch.md deleted file mode 100644 index 3c27d34..0000000 --- a/.changeset/two-d-sprite-batch.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@ignifx/2d": minor ---- - -- Add `app.twoD.createSpriteBatch({ atlas, capacity, sortingLayer, blend })` (beta): a fixed number of sprite slots on one sorting layer written directly with `write(index, x, y, width, height, frame, rotation, r, g, b, a)`, with no entity per sprite. Use it for bullets, debris and 2D particles. -- `count` hides the tail of the batch, `hide(index)` hides one slot, and `dispose()` returns the slots. Slots are centred on their position and a batch does not Y-sort against other sprites. -- New codes: `IGX-1114` bad capacity, `IGX-1115` index or count outside the slots, `IGX-1116` write after `dispose()`, `IGX-1117` atlas not loaded. diff --git a/.changeset/vite-plugin-wgsl-validation.md b/.changeset/vite-plugin-wgsl-validation.md deleted file mode 100644 index ecad374..0000000 --- a/.changeset/vite-plugin-wgsl-validation.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@ignifx/vite-plugin": minor ---- - -- List every `.wgsl` file under the asset root in the manifest as a `shader` asset, and `.particles.json`, `.terrain.json` and `.r16` files as `particles`, `terrain` and `heightmap` assets. -- Validate shaders at build time and in the dev server: WGSL syntax errors report `IGX-0654` with the parser's line, and contract errors report `IGX-0655` (missing or repeated `// @ignifx` form line, an undeclared `shaderUniforms`, `shaderSystem`, `surfaceUniforms` or texture, a missing entry point, a hand-written `@group`/`@binding`, or `textureSample` reachable from a vertex stage). Set `validate: false` to turn the checks off. -- Editing a `.wgsl` file announces `ignifx:asset-changed`, which the engine's shader hot reload listens for. diff --git a/packages/2d/CHANGELOG.md b/packages/2d/CHANGELOG.md index e44f6e9..09e740a 100644 --- a/packages/2d/CHANGELOG.md +++ b/packages/2d/CHANGELOG.md @@ -1,5 +1,19 @@ # @ignifx/2d +## 0.3.0 + +### Minor Changes + +- 6e1eed7: - Add `app.twoD.createSpriteBatch({ atlas, capacity, sortingLayer, blend })` (beta): a fixed number of sprite slots on one sorting layer written directly with `write(index, x, y, width, height, frame, rotation, r, g, b, a)`, with no entity per sprite. Use it for bullets, debris and 2D particles. + - `count` hides the tail of the batch, `hide(index)` hides one slot, and `dispose()` returns the slots. Slots are centred on their position and a batch does not Y-sort against other sprites. + - New codes: `IGX-1114` bad capacity, `IGX-1115` index or count outside the slots, `IGX-1116` write after `dispose()`, `IGX-1117` atlas not loaded. + +### Patch Changes + +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 + ## 0.2.1 ### Patch Changes diff --git a/packages/2d/package.json b/packages/2d/package.json index f298b1d..f7906d2 100644 --- a/packages/2d/package.json +++ b/packages/2d/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/2d", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx 2D toolkit: Camera2D, sprites, sprite animation, atlases, tilemaps, sorting layers, pixel-perfect, parallax.", "keywords": [ "ignifx", diff --git a/packages/2d/skills/2d/SKILL.md b/packages/2d/skills/2d/SKILL.md index c932927..cf424ea 100644 --- a/packages/2d/skills/2d/SKILL.md +++ b/packages/2d/skills/2d/SKILL.md @@ -3,7 +3,7 @@ name: 2d description: Builds 2D games in ignifx with @ignifx/2d: Camera2D, SpriteRenderer, SpriteAnimator, texture atlases, Tilemap rendering and import, sorting layers and Y-sort, pixel-perfect cameras, parallax layers, sprite batches, and 2D picking. Use when adding or editing sprites, sprite animation, tilemaps, atlases, sorting layers, sprite batches, or a 2D camera in an ignifx project, or when the user mentions @ignifx/2d, Camera2D, SpriteRenderer, SpriteBatch, or Tilemap. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" --- # @ignifx/2d @@ -21,7 +21,7 @@ parse, `SpriteAnimator` advances on the stepped clock. Only the pixels need a GP ## Environment -- Engine: ignifx `0.2.1`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. +- Engine: ignifx `0.3.0`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. - WebGPU only, browser and Electron. Babylon Lite `1.27.0` is a peer dependency. - Register it like any extension; nothing happens at import time. diff --git a/packages/3d/CHANGELOG.md b/packages/3d/CHANGELOG.md index 105440a..13e4415 100644 --- a/packages/3d/CHANGELOG.md +++ b/packages/3d/CHANGELOG.md @@ -1,5 +1,16 @@ # @ignifx/3d +## 0.3.0 + +### Patch Changes + +- be82465: Clarify API documentation and starter-template comments, and update the README's setup instructions. +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 + - @ignifx/input@0.3.0 + - @ignifx/physics@0.3.0 + ## 0.2.1 ### Patch Changes diff --git a/packages/3d/package.json b/packages/3d/package.json index 1a5957f..5079abb 100644 --- a/packages/3d/package.json +++ b/packages/3d/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/3d", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx 3D toolkit: character and camera rigs, Animator state machine, navigation.", "keywords": [ "ignifx", diff --git a/packages/3d/skills/3d/SKILL.md b/packages/3d/skills/3d/SKILL.md index ae87da8..b5972dd 100644 --- a/packages/3d/skills/3d/SKILL.md +++ b/packages/3d/skills/3d/SKILL.md @@ -3,7 +3,7 @@ name: 3d description: Builds 3D games in ignifx with @ignifx/3d: third-person and first-person character controllers and camera rigs, the Animator state machine with blend trees and animation events, navigation meshes and agents, LOD groups, and billboards. Use when adding or editing 3D character movement, camera rigs, animation state machines, or navigation in an ignifx project, or when the user mentions @ignifx/3d, Animator, ThirdPersonController, or NavMeshAgent. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" --- # @ignifx/3d @@ -25,7 +25,7 @@ walk. Only the _pose_ needs a GPU. ## Environment -- Engine: ignifx `0.2.1`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. +- Engine: ignifx `0.3.0`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. - Requires `@ignifx/physics` and `@ignifx/input`; register both **before** `threeD()`. - WebGPU only, browser and Electron. Babylon Lite `1.27.0` is a peer dependency. - Nothing happens at import time. diff --git a/packages/audio/CHANGELOG.md b/packages/audio/CHANGELOG.md index d5e58b7..4bfc120 100644 --- a/packages/audio/CHANGELOG.md +++ b/packages/audio/CHANGELOG.md @@ -1,5 +1,14 @@ # @ignifx/audio +## 0.3.0 + +### Patch Changes + +- be82465: Clarify API documentation and starter-template comments, and update the README's setup instructions. +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 + ## 0.2.1 ### Patch Changes diff --git a/packages/audio/package.json b/packages/audio/package.json index 69f88cb..56dfa12 100644 --- a/packages/audio/package.json +++ b/packages/audio/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/audio", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx audio: bus tree, AudioSource, AudioListener, AudioClip assets, unlock handling.", "keywords": [ "ignifx", diff --git a/packages/audio/skills/audio/SKILL.md b/packages/audio/skills/audio/SKILL.md index 463fd0d..8378735 100644 --- a/packages/audio/skills/audio/SKILL.md +++ b/packages/audio/skills/audio/SKILL.md @@ -3,7 +3,7 @@ name: audio description: Adds sound and music to an ignifx game with @ignifx/audio: the bus tree, AudioSource and AudioListener components, static and streaming AudioClip assets, spatial audio, a music player, and the browser unlock flow. Use when adding or editing sound effects, music, audio buses, mixing, or spatial audio in an ignifx project, or when the user mentions @ignifx/audio, AudioSource, AudioListener, or audio buses. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" --- # @ignifx/audio @@ -23,7 +23,7 @@ Use it for sound effects, footsteps, UI clicks, positional audio, music with cro ## Environment -- Engine: ignifx `0.2.1`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. +- Engine: ignifx `0.3.0`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. - Peer dependency: `@babylonjs/lite` `1.27.0`, reached only from `src/lite/**`. - Browsers, Electron, and Node. Nothing happens at import time; registering the extension is the whole installation. diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 873dc96..0f01a5b 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,20 @@ # @ignifx/cli +## 0.3.0 + +### Minor Changes + +- 6e1eed7: - Add `@ignifx/terrain`: `Terrain` loads a `.terrain.json` with a 16-bit `.r16` heightmap, a PNG heightmap, or seeded noise, and draws it as chunked geomipmapped meshes with skirts, one level of detail per chunk, chosen and frustum-culled every frame. + - Blend up to eight texture layers with RGBA control maps or height and slope rules through one PBR material and a surface shader, so shadows, image-based lighting and fog stay intact. Per-layer roughness is not available. + - Query the terrain without physics: `heightAt`, `normalAt`, `raycast`, `bounds`, `worldToSample` and `sampleToWorld`. `colliderInit()` returns the init a `HeightfieldCollider` from `@ignifx/physics` accepts, and `setHeights` sculpts at runtime and raises `onHeightsChanged`. + - Add `TerrainScatter`, which places grass and trees on chosen layers, slopes and heights with a seed, and draws them through `InstancedMeshRenderer` with GPU culling, an LOD mesh and the `foliageMaterialDefinition` wind shader. + - An 8-bit heightmap loads with a terracing warning (`IGX-1603`). Convert 16-bit PNGs with the new `ignifx import heightmap in.png out.r16` command in `@ignifx/cli`. + - The `ignifx` umbrella re-exports the package. + +### Patch Changes + +- be82465: Clarify API documentation and starter-template comments, and update the README's setup instructions. + ## 0.2.1 No changes in this release. diff --git a/packages/cli/package.json b/packages/cli/package.json index 98623a9..4fa258f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/cli", - "version": "0.2.1", + "version": "0.3.0", "description": "create-ignifx: scaffolds an ignifx project by copying a template directory.", "keywords": [ "cli", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 30fa6a9..24dc2eb 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,26 @@ # @ignifx/core +## 0.3.0 + +### Minor Changes + +- 6e1eed7: - Add shader materials: a `.wgsl` file with `// @ignifx` pragma comments declares its uniforms, textures, storage buffers, defines and pipeline state, and loads as a `ShaderAsset`. A `.material.json` with `"type": "shader"` or `shaderMaterialDefinition({ shader, values, textures, defines })` applies values to it. + - Add `MaterialAsset.setUniform`, `getUniform`, `setTexture`, `setDefine` and `setStorageBuffer` to edit a live shader material. An unknown name throws `IGX-0712`, a wrong value shape `IGX-0713`, and a call on a PBR or Standard material `IGX-0718`. + - Upload `time`, `unscaledTime`, `deltaTime`, `mainLightDirection`, `mainLightColor` and `ambientColor` every frame to shaders that declare them. `time` freezes while the app is paused. A main-light uniform with no directional light logs `IGX-0714` once. + - Rebuild every material built from a `.wgsl` file in place when the file is replaced by hot reload. A compile failure keeps the last good material and reports `IGX-0715`. + - Add surface shaders: `.surface.wgsl` files with `displace`, `surface` and `composite` hooks attach to PBR materials through `surfaces`, keeping lights, shadows and image-based lighting. They require `rendering.features.materialPlugins` (`IGX-0716`). + - Add custom post effects: `.post.wgsl` files run in `PostProcessStack.custom`, ordered with the built-in effects. + - Add `InstancedMeshRenderer` for thin instances of one mesh with `setMatrices`, `setColors`, `setCount`, GPU culling and an LOD partner mesh. Changing `gpuCulling` or `lod` after the scene is registered throws `IGX-0717`; writing past `capacity` throws `IGX-0721`. + - Add `createStorageBufferAsset` and `StorageBufferAsset.update` (`IGX-0720` past the end), `TextureAsset.fromPixels` and `textureAsset.update` (`IGX-0722` on a size mismatch), and `MeshAsset.updatePositions`, `updateNormals`, `updateUvs` and `updateColors` for `fromData` meshes (`IGX-0725` when the range does not fit). `MeshAsset.fromData` accepts `uvs2`, `tangents` and `colors`. + - Shader materials cast PCF and CSM shadows. Babylon Lite 1.27.0 cannot render them into ESM shadow maps, so they are left out of ESM caster lists with one `IGX-0724` warning. + - Register the `IGX-16xx` (terrain) and `IGX-17xx` (particles) error ranges. + - Fix a black canvas after a material swap: two renderable rebuilds could overlap while Babylon Lite rebuilt its frame graph, leaving a render pass without a colour attachment. Rebuilds now run one at a time. + - Fix `Environment.fog`: the fog settings never reached the GPU, so fogged scenes rendered without fog. Fog now renders, with the colour decoded once, and `mode: "none"` turns it off on pipelines that were compiled with fog. + +### Patch Changes + +- be82465: Clarify API documentation and starter-template comments, and update the README's setup instructions. + ## 0.2.1 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 9957487..c186b39 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/core", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx core: app, world, entities, components, scripts, and the Babylon Lite adapter boundary.", "homepage": "https://ignifx.com", "license": "Apache-2.0", diff --git a/packages/devtools/CHANGELOG.md b/packages/devtools/CHANGELOG.md index d9d239a..74bbd65 100644 --- a/packages/devtools/CHANGELOG.md +++ b/packages/devtools/CHANGELOG.md @@ -1,5 +1,18 @@ # @ignifx/devtools +## 0.3.0 + +### Patch Changes + +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 + - @ignifx/audio@0.3.0 + - @ignifx/input@0.3.0 + - @ignifx/physics@0.3.0 + - @ignifx/physics-2d@0.3.0 + - @ignifx/ui@0.3.0 + ## 0.2.1 ### Patch Changes diff --git a/packages/devtools/package.json b/packages/devtools/package.json index eddb4f6..f0859cb 100644 --- a/packages/devtools/package.json +++ b/packages/devtools/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/devtools", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx devtools: stats overlay, scene tree and component inspector, physics debug view, script hot reload.", "keywords": [ "ignifx", diff --git a/packages/devtools/skills/devtools/SKILL.md b/packages/devtools/skills/devtools/SKILL.md index 41d2ed4..619e12f 100644 --- a/packages/devtools/skills/devtools/SKILL.md +++ b/packages/devtools/skills/devtools/SKILL.md @@ -3,7 +3,7 @@ name: devtools description: Inspects and debugs a running ignifx game with @ignifx/devtools: the stats and diagnostics overlay, the scene tree browser, the schema-driven component inspector, the physics debug view, the console, and the script hot-reload reports. Use when diagnosing frame time, entity counts, component values, asset refcounts, or physics behaviour in an ignifx project, or when the user mentions @ignifx/devtools, the stats overlay, the inspector, or app.devtools. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" --- # @ignifx/devtools @@ -23,7 +23,7 @@ until `open()` is called. ## Environment -- Engine: ignifx `0.2.1`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. +- Engine: ignifx `0.3.0`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. - WebGPU only, browser and Electron. The overlay is plain DOM over the canvas. - `@ignifx/ui`, `@ignifx/input`, `@ignifx/audio`, `@ignifx/physics` and `@ignifx/physics-2d` are all **optional** peers. The package imports none of them; it reaches them structurally, so a game with diff --git a/packages/electron/CHANGELOG.md b/packages/electron/CHANGELOG.md index ac0a32d..8346a99 100644 --- a/packages/electron/CHANGELOG.md +++ b/packages/electron/CHANGELOG.md @@ -1,5 +1,13 @@ # @ignifx/electron +## 0.3.0 + +### Patch Changes + +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 + ## 0.2.1 ### Patch Changes diff --git a/packages/electron/package.json b/packages/electron/package.json index a8c3221..4338ed5 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/electron", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx Electron support: main-process window factory with WebGPU flags, typed preload bridge, file-system storage.", "keywords": [ "ignifx", diff --git a/packages/electron/skills/electron/SKILL.md b/packages/electron/skills/electron/SKILL.md index 8342636..aaecd0a 100644 --- a/packages/electron/skills/electron/SKILL.md +++ b/packages/electron/skills/electron/SKILL.md @@ -3,7 +3,7 @@ name: electron description: Ships an ignifx game as an Electron desktop app with @ignifx/electron: the main-process window factory that enables WebGPU, a typed and sandboxed preload bridge, the ignifx:// asset protocol, the file-system storage backend, and the renderer-side extension that exposes app.desktop. Use when packaging, configuring, or debugging an ignifx desktop build, or when the user mentions @ignifx/electron, createGameWindow, the preload bridge, or desktop templates. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" --- # @ignifx/electron diff --git a/packages/ignifx/CHANGELOG.md b/packages/ignifx/CHANGELOG.md index 77e1708..504d668 100644 --- a/packages/ignifx/CHANGELOG.md +++ b/packages/ignifx/CHANGELOG.md @@ -1,5 +1,44 @@ # ignifx +## 0.3.0 + +### Minor Changes + +- 6e1eed7: - Add `@ignifx/particles`: `ParticleSystem` plays `.particles.json` definitions as stateless GPU particles. The vertex shader evaluates each particle from its spawn record and the current time, so the CPU writes only the particles emitted each frame. `play`, `stop`, `pause`, `resume`, `emit(n)`, `simulate(seconds)`, `aliveCount` and `onStopped` control it. + - Add nine presets through `particleDefinition("fire" | "smoke" | "sparks" | "explosion" | "dust" | "sparkle" | "rain" | "snow" | "leaves", overrides?)`. + - Add `app.particles` with `maxParticles`, `qualityScale` and `gravity` (taken from the physics settings when `@ignifx/physics` is registered), plus alive, emitted, upload and draw-call counters in `app.diagnostics`. + - Particles pause exactly with the app, follow `timeScale`, and reproduce for a given `seed`. Collisions, sub-emitters and per-particle sorting are not available: they are not functions of time alone. + - Add `@ignifx/particles-2d`: `ParticleSystem2D` plays the same definitions into a 2D sorting layer through `app.twoD.createSpriteBatch`, sharing the particle budget with the 3D systems. + - The `ignifx` umbrella re-exports both packages. +- 6e1eed7: - Add `@ignifx/terrain`: `Terrain` loads a `.terrain.json` with a 16-bit `.r16` heightmap, a PNG heightmap, or seeded noise, and draws it as chunked geomipmapped meshes with skirts, one level of detail per chunk, chosen and frustum-culled every frame. + - Blend up to eight texture layers with RGBA control maps or height and slope rules through one PBR material and a surface shader, so shadows, image-based lighting and fog stay intact. Per-layer roughness is not available. + - Query the terrain without physics: `heightAt`, `normalAt`, `raycast`, `bounds`, `worldToSample` and `sampleToWorld`. `colliderInit()` returns the init a `HeightfieldCollider` from `@ignifx/physics` accepts, and `setHeights` sculpts at runtime and raises `onHeightsChanged`. + - Add `TerrainScatter`, which places grass and trees on chosen layers, slopes and heights with a seed, and draws them through `InstancedMeshRenderer` with GPU culling, an LOD mesh and the `foliageMaterialDefinition` wind shader. + - An 8-bit heightmap loads with a terracing warning (`IGX-1603`). Convert 16-bit PNGs with the new `ignifx import heightmap in.png out.r16` command in `@ignifx/cli`. + - The `ignifx` umbrella re-exports the package. + +### Patch Changes + +- be82465: Clarify API documentation and starter-template comments, and update the README's setup instructions. +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] +- Updated dependencies [6e1eed7] +- Updated dependencies [6e1eed7] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 + - @ignifx/3d@0.3.0 + - @ignifx/audio@0.3.0 + - @ignifx/particles@0.3.0 + - @ignifx/particles-2d@0.3.0 + - @ignifx/terrain@0.3.0 + - @ignifx/2d@0.3.0 + - @ignifx/devtools@0.3.0 + - @ignifx/electron@0.3.0 + - @ignifx/input@0.3.0 + - @ignifx/physics@0.3.0 + - @ignifx/physics-2d@0.3.0 + - @ignifx/ui@0.3.0 + ## 0.2.1 ### Patch Changes diff --git a/packages/ignifx/package.json b/packages/ignifx/package.json index 13d7c13..68c2ad1 100644 --- a/packages/ignifx/package.json +++ b/packages/ignifx/package.json @@ -1,6 +1,6 @@ { "name": "ignifx", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx umbrella package: re-exports @ignifx/core and the standard extensions, and ships the ignifx Agent Skill.", "keywords": [ "ignifx" diff --git a/packages/input/CHANGELOG.md b/packages/input/CHANGELOG.md index 1ece38d..8a262d1 100644 --- a/packages/input/CHANGELOG.md +++ b/packages/input/CHANGELOG.md @@ -1,5 +1,13 @@ # @ignifx/input +## 0.3.0 + +### Patch Changes + +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 + ## 0.2.1 ### Patch Changes diff --git a/packages/input/package.json b/packages/input/package.json index 7876b9a..7b7bef2 100644 --- a/packages/input/package.json +++ b/packages/input/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/input", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx input: action maps, bindings, keyboard/mouse/pointer/gamepad/touch devices, pointer lock, rebinding.", "keywords": [ "ignifx", diff --git a/packages/input/skills/input/SKILL.md b/packages/input/skills/input/SKILL.md index 5cf72dd..f2f0473 100644 --- a/packages/input/skills/input/SKILL.md +++ b/packages/input/skills/input/SKILL.md @@ -3,7 +3,7 @@ name: input description: Wires player input into an ignifx game with @ignifx/input: action maps, bindings, composites and processors, control schemes, keyboard, mouse, pointer, gamepad and touch devices, pointer lock, cursor handling, .input.json action assets, and runtime rebinding. Use when adding or editing input actions, bindings, devices, or a rebinding screen in an ignifx project, or when the user mentions @ignifx/input, PlayerInput, action maps, or input.json. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" --- # @ignifx/input @@ -20,7 +20,7 @@ rebinding screens. Raw device state stays available for tools and prototypes. ## Environment -- Engine: ignifx `0.2.1`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. +- Engine: ignifx `0.3.0`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. - Browsers and Electron. No Babylon Lite dependency: input is DOM-only, so it works identically under the null engine (`createApp({ headless: true })`). - Register it like any extension; nothing happens at import time. diff --git a/packages/particles-2d/CHANGELOG.md b/packages/particles-2d/CHANGELOG.md new file mode 100644 index 0000000..97356a2 --- /dev/null +++ b/packages/particles-2d/CHANGELOG.md @@ -0,0 +1,22 @@ +# @ignifx/particles-2d + +## 0.3.0 + +### Minor Changes + +- 6e1eed7: - Add `@ignifx/particles`: `ParticleSystem` plays `.particles.json` definitions as stateless GPU particles. The vertex shader evaluates each particle from its spawn record and the current time, so the CPU writes only the particles emitted each frame. `play`, `stop`, `pause`, `resume`, `emit(n)`, `simulate(seconds)`, `aliveCount` and `onStopped` control it. + - Add nine presets through `particleDefinition("fire" | "smoke" | "sparks" | "explosion" | "dust" | "sparkle" | "rain" | "snow" | "leaves", overrides?)`. + - Add `app.particles` with `maxParticles`, `qualityScale` and `gravity` (taken from the physics settings when `@ignifx/physics` is registered), plus alive, emitted, upload and draw-call counters in `app.diagnostics`. + - Particles pause exactly with the app, follow `timeScale`, and reproduce for a given `seed`. Collisions, sub-emitters and per-particle sorting are not available: they are not functions of time alone. + - Add `@ignifx/particles-2d`: `ParticleSystem2D` plays the same definitions into a 2D sorting layer through `app.twoD.createSpriteBatch`, sharing the particle budget with the 3D systems. + - The `ignifx` umbrella re-exports both packages. + +### Patch Changes + +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] +- Updated dependencies [6e1eed7] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 + - @ignifx/particles@0.3.0 + - @ignifx/2d@0.3.0 diff --git a/packages/particles-2d/package.json b/packages/particles-2d/package.json index 52d7233..456f7d4 100644 --- a/packages/particles-2d/package.json +++ b/packages/particles-2d/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/particles-2d", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx 2D particles: ParticleSystem2D rendering shared particle definitions into sprite layers.", "keywords": [ "ignifx", diff --git a/packages/particles-2d/skills/particles-2d/SKILL.md b/packages/particles-2d/skills/particles-2d/SKILL.md index bb84691..4d2f6f8 100644 --- a/packages/particles-2d/skills/particles-2d/SKILL.md +++ b/packages/particles-2d/skills/particles-2d/SKILL.md @@ -3,7 +3,7 @@ name: particles-2d description: Draws ignifx particle effects as sprites with @ignifx/particles-2d: the ParticleSystem2D component, one .particles.json shared with the 3D system, sprite atlases and sheet frames, sorting layers and blend modes, and the budget it shares with app.particles. Use when adding, editing or debugging 2D particle effects — fire, dust, sparkles, weather — in a sprite game, or when the user mentions @ignifx/particles-2d or ParticleSystem2D. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" --- # @ignifx/particles-2d @@ -17,7 +17,7 @@ the effect belongs in a 3D scene. One document drives both. ## Environment -- Engine: ignifx `0.2.1`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. +- Engine: ignifx `0.3.0`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. - Needs `@ignifx/2d` (the sprite layers it draws into) and `@ignifx/particles` (the document, the presets, and `app.particles`). Register all three; nothing happens at import time. - No WGSL and no GPU work of its own: the particles are ordinary sprites, so everything here runs diff --git a/packages/particles/CHANGELOG.md b/packages/particles/CHANGELOG.md new file mode 100644 index 0000000..f87b655 --- /dev/null +++ b/packages/particles/CHANGELOG.md @@ -0,0 +1,18 @@ +# @ignifx/particles + +## 0.3.0 + +### Minor Changes + +- 6e1eed7: - Add `@ignifx/particles`: `ParticleSystem` plays `.particles.json` definitions as stateless GPU particles. The vertex shader evaluates each particle from its spawn record and the current time, so the CPU writes only the particles emitted each frame. `play`, `stop`, `pause`, `resume`, `emit(n)`, `simulate(seconds)`, `aliveCount` and `onStopped` control it. + - Add nine presets through `particleDefinition("fire" | "smoke" | "sparks" | "explosion" | "dust" | "sparkle" | "rain" | "snow" | "leaves", overrides?)`. + - Add `app.particles` with `maxParticles`, `qualityScale` and `gravity` (taken from the physics settings when `@ignifx/physics` is registered), plus alive, emitted, upload and draw-call counters in `app.diagnostics`. + - Particles pause exactly with the app, follow `timeScale`, and reproduce for a given `seed`. Collisions, sub-emitters and per-particle sorting are not available: they are not functions of time alone. + - Add `@ignifx/particles-2d`: `ParticleSystem2D` plays the same definitions into a 2D sorting layer through `app.twoD.createSpriteBatch`, sharing the particle budget with the 3D systems. + - The `ignifx` umbrella re-exports both packages. + +### Patch Changes + +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 diff --git a/packages/particles/package.json b/packages/particles/package.json index e0dee30..07c36f4 100644 --- a/packages/particles/package.json +++ b/packages/particles/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/particles", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx particles: stateless GPU particle systems driven by declarative .particles.json definitions.", "keywords": [ "ignifx", diff --git a/packages/particles/skills/particles/SKILL.md b/packages/particles/skills/particles/SKILL.md index b77fd4d..7005021 100644 --- a/packages/particles/skills/particles/SKILL.md +++ b/packages/particles/skills/particles/SKILL.md @@ -3,7 +3,7 @@ name: particles description: Builds GPU particle effects in ignifx with @ignifx/particles: fire, smoke, sparks, explosions, weather and magic, declared in .particles.json and evaluated on the GPU from CPU-written spawn records. Use when adding or editing a particle effect, an emitter, or a .particles.json document in an ignifx project, or when the user mentions @ignifx/particles, ParticleSystem, particleDefinition, or app.particles. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" --- # @ignifx/particles @@ -21,7 +21,7 @@ trades those away, and "Gotchas" below says what to do instead. For 2D sprite pa ## Environment -- Engine: ignifx `0.2.1`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. +- Engine: ignifx `0.3.0`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. - Requires nothing but `@ignifx/core`. `@ignifx/physics` is optional: when it is registered, an effect that asks for "the world's gravity" reads the `physics` settings section. - WebGPU only, browser and Electron. Babylon Lite `1.27.0` is a peer dependency, and this package diff --git a/packages/physics-2d/CHANGELOG.md b/packages/physics-2d/CHANGELOG.md index 0e1e9b9..e06dcf7 100644 --- a/packages/physics-2d/CHANGELOG.md +++ b/packages/physics-2d/CHANGELOG.md @@ -1,5 +1,15 @@ # @ignifx/physics-2d +## 0.3.0 + +### Patch Changes + +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 + - @ignifx/2d@0.3.0 + ## 0.2.1 ### Patch Changes diff --git a/packages/physics-2d/package.json b/packages/physics-2d/package.json index 28de9df..3fae2f6 100644 --- a/packages/physics-2d/package.json +++ b/packages/physics-2d/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/physics-2d", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx 2D physics: Rigidbody2D, 2D colliders, CharacterController2D, queries.", "keywords": [ "ignifx", diff --git a/packages/physics-2d/skills/physics-2d/SKILL.md b/packages/physics-2d/skills/physics-2d/SKILL.md index c6005a9..a69d172 100644 --- a/packages/physics-2d/skills/physics-2d/SKILL.md +++ b/packages/physics-2d/skills/physics-2d/SKILL.md @@ -3,7 +3,7 @@ name: physics-2d description: Adds 2D physics to an ignifx game with @ignifx/physics-2d: Rapier 2D simulation on the fixed loop, Rigidbody2D, box/circle/capsule/polygon/edge/tilemap colliders, physics materials, 2D triggers, CharacterController2D with slopes, autostep, snap-to-ground and one-way platforms, 2D raycasts and shape queries, the collision layer matrix, and render interpolation. Use when adding or editing 2D physics bodies, 2D colliders, platformer movement, 2D triggers, or 2D queries in an ignifx project, or when the user mentions @ignifx/physics-2d, Rigidbody2D, Rapier, or CharacterController2D. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" --- # @ignifx/physics-2d @@ -24,7 +24,7 @@ A world uses **either** `physics()` **or** `physics2d()`. Registering both throw ## Environment -- Engine: ignifx `0.2.1`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. +- Engine: ignifx `0.3.0`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. - Dependency: `@dimforge/rapier2d-compat` `^0.20.0`. The `-compat` build **inlines** its WebAssembly as base64, so nothing has to be served and Node, the browser, and Electron all take the same path. - `@ignifx/2d` is an **optional** peer: you need it only for `TilemapCollider2D`'s data type, so a diff --git a/packages/physics/CHANGELOG.md b/packages/physics/CHANGELOG.md index ab55795..aed3bec 100644 --- a/packages/physics/CHANGELOG.md +++ b/packages/physics/CHANGELOG.md @@ -1,5 +1,13 @@ # @ignifx/physics +## 0.3.0 + +### Patch Changes + +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 + ## 0.2.1 ### Patch Changes diff --git a/packages/physics/package.json b/packages/physics/package.json index e599c83..7e563f0 100644 --- a/packages/physics/package.json +++ b/packages/physics/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/physics", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx 3D physics on Havok through Babylon Lite: rigidbodies, colliders, triggers, character controller, queries.", "keywords": [ "ignifx", diff --git a/packages/physics/skills/physics/SKILL.md b/packages/physics/skills/physics/SKILL.md index f3eb32b..11877f1 100644 --- a/packages/physics/skills/physics/SKILL.md +++ b/packages/physics/skills/physics/SKILL.md @@ -3,7 +3,7 @@ name: physics description: Adds 3D physics to an ignifx game with @ignifx/physics: Havok simulation on a separate headless scene, Rigidbody, box/sphere/capsule/mesh colliders, physics materials, triggers, CharacterController, raycasts and shape queries, the collision layer matrix, and render interpolation. Use when adding or editing 3D physics bodies, colliders, triggers, character movement, or physics queries in an ignifx project, or when the user mentions @ignifx/physics, Rigidbody, Havok, or collision layers. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" --- # @ignifx/physics @@ -21,7 +21,7 @@ through, or has to be asked "what is under the crosshair". ## Environment -- Engine: ignifx `0.2.1`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. +- Engine: ignifx `0.3.0`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. - Peer dependencies: `@babylonjs/lite` (exactly `1.27.0`) and `@babylonjs/havok` (`^1.3.0`). - Browsers, Electron, and Node. The Vite plugin copies `HavokPhysics.wasm` into the public asset path, so the browser loads it from `assets/HavokPhysics.wasm`; under Node the extension reads the diff --git a/packages/terrain/CHANGELOG.md b/packages/terrain/CHANGELOG.md new file mode 100644 index 0000000..31032cb --- /dev/null +++ b/packages/terrain/CHANGELOG.md @@ -0,0 +1,18 @@ +# @ignifx/terrain + +## 0.3.0 + +### Minor Changes + +- 6e1eed7: - Add `@ignifx/terrain`: `Terrain` loads a `.terrain.json` with a 16-bit `.r16` heightmap, a PNG heightmap, or seeded noise, and draws it as chunked geomipmapped meshes with skirts, one level of detail per chunk, chosen and frustum-culled every frame. + - Blend up to eight texture layers with RGBA control maps or height and slope rules through one PBR material and a surface shader, so shadows, image-based lighting and fog stay intact. Per-layer roughness is not available. + - Query the terrain without physics: `heightAt`, `normalAt`, `raycast`, `bounds`, `worldToSample` and `sampleToWorld`. `colliderInit()` returns the init a `HeightfieldCollider` from `@ignifx/physics` accepts, and `setHeights` sculpts at runtime and raises `onHeightsChanged`. + - Add `TerrainScatter`, which places grass and trees on chosen layers, slopes and heights with a seed, and draws them through `InstancedMeshRenderer` with GPU culling, an LOD mesh and the `foliageMaterialDefinition` wind shader. + - An 8-bit heightmap loads with a terracing warning (`IGX-1603`). Convert 16-bit PNGs with the new `ignifx import heightmap in.png out.r16` command in `@ignifx/cli`. + - The `ignifx` umbrella re-exports the package. + +### Patch Changes + +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 diff --git a/packages/terrain/package.json b/packages/terrain/package.json index b77dfc7..263e0b5 100644 --- a/packages/terrain/package.json +++ b/packages/terrain/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/terrain", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx terrain: heightmap and procedural terrains with chunked LOD, splat surface shaders, queries, and foliage scatter.", "keywords": [ "ignifx", diff --git a/packages/terrain/skills/terrain/SKILL.md b/packages/terrain/skills/terrain/SKILL.md index caf7d3c..6df406e 100644 --- a/packages/terrain/skills/terrain/SKILL.md +++ b/packages/terrain/skills/terrain/SKILL.md @@ -3,7 +3,7 @@ name: terrain description: Builds heightmap and procedural terrains in ignifx with @ignifx/terrain: .terrain.json documents, 16-bit heightmaps and seeded noise, chunked geomipmapped level of detail with frustum culling, a splat surface shader on PBR, height/normal/raycast queries, HeightfieldCollider coupling, runtime sculpting, and seeded foliage scatter. Use when adding or editing outdoor ground in an ignifx project, or when the user mentions @ignifx/terrain, Terrain, TerrainScatter, .terrain.json, .r16, heightmaps, or splat maps. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" --- # @ignifx/terrain @@ -23,7 +23,7 @@ weights, every query, `colliderInit()`, and the whole scatter placement. ## Environment -- Engine: ignifx `0.2.1`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. +- Engine: ignifx `0.3.0`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. - WebGPU only, browser and Electron. Babylon Lite `1.27.0` is a peer dependency. - Needs the `materialPlugins` rendering feature. `terrain()` declares it for you at registration. - Nothing happens at import time. diff --git a/packages/ui/CHANGELOG.md b/packages/ui/CHANGELOG.md index a1f1516..f052ae9 100644 --- a/packages/ui/CHANGELOG.md +++ b/packages/ui/CHANGELOG.md @@ -1,5 +1,14 @@ # @ignifx/ui +## 0.3.0 + +### Patch Changes + +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 + - @ignifx/input@0.3.0 + ## 0.2.1 ### Patch Changes diff --git a/packages/ui/package.json b/packages/ui/package.json index d54b304..5dcab22 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/ui", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx UI: DOM overlay host, focus routing, world and HUD text.", "keywords": [ "ignifx", diff --git a/packages/ui/skills/ui/SKILL.md b/packages/ui/skills/ui/SKILL.md index d108308..61592a5 100644 --- a/packages/ui/skills/ui/SKILL.md +++ b/packages/ui/skills/ui/SKILL.md @@ -3,7 +3,7 @@ name: ui description: Builds game UI in ignifx with @ignifx/ui: the DOM overlay host and layers, scaling modes, input focus routing, world-space anchors, world and HUD text on Babylon Lite's text renderer, menus and menu stacks, virtual joysticks and buttons for touch, dialogs, toasts, loading screens, and localization. Use when adding or editing menus, title/pause/settings screens, HUDs, on-screen text, touch controls, or overlay UI in an ignifx project, or when the user mentions @ignifx/ui, Menu, MenuStack, HudText, WorldAnchor, VirtualJoystick, or app.i18n. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" --- # @ignifx/ui @@ -24,7 +24,7 @@ documented no-op, and the components keep their state — so the same script run ## Environment -- Engine: ignifx `0.2.1`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. +- Engine: ignifx `0.3.0`; this package targets `@ignifx/core` `>=0.0.0 <1.0.0`. - WebGPU only, browser and Electron. Babylon Lite `1.27.0` is a peer dependency. - `@ignifx/input` is an **optional** peer: only `VirtualJoystick` and `VirtualButton` need it. - Register it like any extension; nothing happens at import time. diff --git a/packages/vite-plugin/CHANGELOG.md b/packages/vite-plugin/CHANGELOG.md index ea52b97..4acf003 100644 --- a/packages/vite-plugin/CHANGELOG.md +++ b/packages/vite-plugin/CHANGELOG.md @@ -1,5 +1,20 @@ # @ignifx/vite-plugin +## 0.3.0 + +### Minor Changes + +- 6e1eed7: - List every `.wgsl` file under the asset root in the manifest as a `shader` asset, and `.particles.json`, `.terrain.json` and `.r16` files as `particles`, `terrain` and `heightmap` assets. + - Validate shaders at build time and in the dev server: WGSL syntax errors report `IGX-0654` with the parser's line, and contract errors report `IGX-0655` (missing or repeated `// @ignifx` form line, an undeclared `shaderUniforms`, `shaderSystem`, `surfaceUniforms` or texture, a missing entry point, a hand-written `@group`/`@binding`, or `textureSample` reachable from a vertex stage). Set `validate: false` to turn the checks off. + - Editing a `.wgsl` file announces `ignifx:asset-changed`, which the engine's shader hot reload listens for. + +### Patch Changes + +- be82465: Clarify API documentation and starter-template comments, and update the README's setup instructions. +- Updated dependencies [be82465] +- Updated dependencies [6e1eed7] + - @ignifx/core@0.3.0 + ## 0.2.1 ### Patch Changes diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 33783fe..8a0f16a 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@ignifx/vite-plugin", - "version": "0.2.1", + "version": "0.3.0", "description": "ignifx Vite plugin: asset manifest generation, scene/prefab JSON validation, WASM/asset handling, HMR hooks.", "keywords": [ "ignifx" diff --git a/skills/ignifx/SKILL.md b/skills/ignifx/SKILL.md index 42a4912..68d6598 100644 --- a/skills/ignifx/SKILL.md +++ b/skills/ignifx/SKILL.md @@ -3,7 +3,7 @@ name: ignifx description: Builds 2D and 3D web games with the ignifx TypeScript game engine (WebGPU-only, Babylon Lite based, browser and Electron). Use when creating or editing ignifx apps, entities, scripts, scenes, prefabs, assets, input actions, physics, audio, sprites, or tilemaps, or when the user mentions ignifx, @ignifx packages, createApp, Script lifecycle, or ignifx scene JSON. license: Apache-2.0 metadata: - ignifx-version: "0.2.1" + ignifx-version: "0.3.0" babylon-lite-version: "1.27.0" --- diff --git a/skills/ignifx/references/formats/ignifx.schemas.json b/skills/ignifx/references/formats/ignifx.schemas.json index 3d1f1c1..779e49d 100644 --- a/skills/ignifx/references/formats/ignifx.schemas.json +++ b/skills/ignifx/references/formats/ignifx.schemas.json @@ -1,6 +1,6 @@ { "generatedBy": "pnpm docs:schemas", - "ignifxVersion": "0.2.1", + "ignifxVersion": "0.3.0", "schemas": { "ignifx/Animator": { "title": "Animator",