Skip to content

Version Packages - #8

Merged
DavidArayan merged 1 commit into
mainfrom
changeset-release/main
Sep 14, 2026
Merged

DavidArayan merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 11, 2026 •

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@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

@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.

@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.

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

@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

@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

@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

@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

@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

@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

@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

@ignifx/electron@0.3.0

Patch Changes

  • Updated dependencies [be82465]
  • Updated dependencies [6e1eed7]
    • @ignifx/core@0.3.0

@ignifx/input@0.3.0

Patch Changes

  • Updated dependencies [be82465]
  • Updated dependencies [6e1eed7]
    • @ignifx/core@0.3.0

@ignifx/physics@0.3.0

Patch Changes

  • Updated dependencies [be82465]
  • Updated dependencies [6e1eed7]
    • @ignifx/core@0.3.0

@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

@ignifx/ui@0.3.0

Patch Changes

  • Updated dependencies [be82465]
  • Updated dependencies [6e1eed7]
    • @ignifx/core@0.3.0
    • @ignifx/input@0.3.0

@github-actions
github-actions Bot force-pushed the changeset-release/main branch from ac1837c to 31e0ac5 Compare September 14, 2026 22:56
@DavidArayan
DavidArayan merged commit c19f943 into main Sep 14, 2026
17 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant