Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

angular-three-theatre

angular-threejs456MIT4.0.9TypeScript support: included

TheatreJS for Angular Three

angular, threejs, renderer, theatre

readme

angular-three-theatre

This library provides Theatre.js integration for Angular Three, enabling powerful animation and motion design capabilities for your 3D scenes.

Documentation

All public APIs are documented with JSDoc comments. Your IDE will provide inline documentation, parameter hints, and examples as you code.

Installation

npm install angular-three-theatre @theatre/core @theatre/studio
# yarn add angular-three-theatre @theatre/core @theatre/studio
# pnpm add angular-three-theatre @theatre/core @theatre/studio

Make sure to already have angular-three installed

Usage

Basic Setup

import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { TheatreProject, TheatreSheet, TheatreSheetObject } from 'angular-three-theatre';

@Component({
    template: `
        <theatre-project name="My Project">
            <ng-container sheet="Scene">
                <ng-template sheetObject="Box" [sheetObjectProps]="{ x: 0, y: 0, z: 0 }" let-values="values">
                    <ngt-mesh [position]="[values().x, values().y, values().z]">
                        <ngt-box-geometry />
                        <ngt-mesh-standard-material />
                    </ngt-mesh>
                </ng-template>
            </ng-container>
        </theatre-project>
    `,
    imports: [TheatreProject, TheatreSheet, TheatreSheetObject],
    schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class SceneGraph {}

Enable Studio (Development)

The studio directive is applied to theatre-project:

import { TheatreProject, TheatreStudio } from 'angular-three-theatre';

@Component({
    template: `
        <theatre-project name="My Project" [studio]="isDevelopment">
            <ng-container sheet="Scene">
                <!-- sheet objects here -->
            </ng-container>
        </theatre-project>
    `,
    imports: [TheatreProject, TheatreStudio],
})
export class SceneGraph {
    isDevelopment = !environment.production;
}

Sequence Playback

The sequence directive must be used together with the sheet directive:

import { TheatreProject, TheatreSheet } from 'angular-three-theatre';

@Component({
    template: `
        <theatre-project name="My Project">
            <ng-container sheet="Scene" [sequence]="{ autoplay: true, rate: 1 }" #seq="sequence">
                <p>Position: {{ seq.position() }}</p>
                <button (click)="seq.play()">Play</button>
                <button (click)="seq.pause()">Pause</button>

                <!-- sheet objects here -->
            </ng-container>
        </theatre-project>
    `,
    imports: [TheatreProject, TheatreSheet],
})
export class SceneGraph {}

Sync Three.js Properties

Use the sync directive to synchronize Three.js object properties with Theatre.js:

import { TheatreSheetObject } from 'angular-three-theatre';

@Component({
    template: `
        <ng-template sheetObject="myMaterial">
            <ngt-mesh-standard-material
                [sync]="material"
                [syncProps]="['opacity', 'roughness', 'metalness']"
                #material
            />
        </ng-template>
    `,
    imports: [TheatreSheetObject],
})
export class AnimatedMaterial {}

Transform Controls

Use theatre-transform component for position, rotation, and scale animation:

import { TheatreSheetObject } from 'angular-three-theatre';

@Component({
    template: `
        <ng-template sheetObject="myCube">
            <theatre-transform>
                <ngt-mesh>
                    <ngt-box-geometry />
                    <ngt-mesh-standard-material />
                </ngt-mesh>
            </theatre-transform>
        </ng-template>
    `,
    imports: [TheatreSheetObject],
})
export class TransformableObject {}

Directives and Components

Export Selector Description
TheatreProject theatre-project Root container for Theatre.js project
TheatreSheet [sheet] Creates an animation sheet (includes Sequence)
TheatreSequence [sheet][sequence] Controls sequence playback
TheatreStudio theatre-project[studio] Enables Theatre.js Studio UI
TheatreSheetObject ng-template[sheetObject] Creates animatable properties
TheatreSheetObjectSync [sync] Syncs Three.js object properties
TheatreSheetObjectTransform theatre-transform Adds transform controls

Convenience Exports

For easier importing, the library provides combined exports:

// TheatreSheet includes both TheatreSheetImpl and TheatreSequence
import { TheatreSheet } from 'angular-three-theatre';

// TheatreSheetObject includes TheatreSheetObjectImpl, TheatreSheetObjectSync, and TheatreSheetObjectTransform
import { TheatreSheetObject } from 'angular-three-theatre';

Sheet Object Template Context

The sheetObject directive provides the following template context:

<ng-template
    sheetObject="myObject"
    [sheetObjectProps]="{ opacity: 1 }"
    let-values="values"
    let-sheetObject="sheetObject"
    let-select="select"
    let-deselect="deselect"
>
    <!-- values() returns the current animated values -->
    <!-- sheetObject() returns the Theatre.js sheet object instance -->
    <!-- select() selects this object in Studio -->
    <!-- deselect() deselects this object in Studio -->
</ng-template>

Transformers

Built-in property transformers for Theatre.js props:

  • color - RGBA color picker
  • degrees - Radian to degrees conversion
  • euler - Euler rotation controls
  • normalized - 0-1 range slider
  • side - Material side property
  • generic - Fallback for common types

changelog

4.0.9 (2026-01-10)

🩹 Fixes

  • soba: set active state in onProgress to match R3F Drei behavior (ad119dc3)

❤️ Thank You

  • Chau @nartc
  • Claude Opus 4.5

4.0.8 (2026-01-09)

🩹 Fixes

  • core: align ngt-primitive handling with R3F reconciler behavior (f39e32c9)

❤️ Thank You

  • Chau @nartc
  • Claude Opus 4.5

4.0.7 (2026-01-08)

🩹 Fixes

  • soba: replace sampler2DShadow with sampler2D for PCSS in Three.js r182+ (0f9c9871)

❤️ Thank You

  • Chau @nartc

4.0.6 (2026-01-08)

🩹 Fixes

  • soba: rewrite soft-shadows shader injection for Three.js r182+ compatibility (7f5b01e7)

❤️ Thank You

  • Chau @nartc

4.0.5 (2026-01-08)

🩹 Fixes

  • soba: support Three.js r182+ native depth textures in soft-shadows (9eb2a58e)

❤️ Thank You

  • Chau @nartc

4.0.4 (2026-01-08)

🚀 Features

  • soba: add soft-shadows directive for PCSS (93b42ca9)

❤️ Thank You

  • Chau @nartc

4.0.3 (2026-01-06)

🩹 Fixes

  • plugin: only update compat-matrix timestamp when content changes (388e35b4)
  • plugin: normalize semver ranges to explicit bounded format (a7f157b0)

❤️ Thank You

  • Chau @nartc

4.0.2 (2026-01-06)

🚀 Features

  • plugin: add compatibility matrix generator (aa88b7fb)

❤️ Thank You

  • Chau @nartc

4.0.1 (2026-01-06)

🚀 Features

  • core: add pierced props support to web-types and metadata generation (98fc5923)

❤️ Thank You

  • Chau @nartc

4.0.0 (2026-01-06)

🚀 Features

  • bump three 0.174 (605816e1)
  • cannon: bump ng 20 (273adf00)
  • cannon: bump three 178 (d41a6791)
  • cannon: bump three (c3feaad4)
  • cannon: bump three179 (1d29682a)
  • cannon: min ng20 (6c92aedc)
  • cannon: bump three 182 (5920c4e6)
  • cannon: allow Angular v21 as peer dependency (67f27003)
  • core: new renderer (c7bec7eb)
  • core: support pierced property (e5a7285b)
  • core: add change as THREE native events (e44c2b8a)
  • core: allow injectBeforeRender to accept priority as signal (5aad08bc)
  • core: expose NgtPortal as module with portal and portalContent grouped (919a1a8f)
  • core: expose meshes on loaded object graph (9a0ee1db)
  • core: allow provideNgtRenderer to accept options (2bca496b)
  • core: remove unused code, expose resolveInstanceKey in applyProps (0bdd9a7f)
  • core: rename injectObjectEvents to objectEvents (5a707562)
  • core: rename injectBeforeRender to beforeRender (5ab9a3e7)
  • core: fill catalogue with symbols from THREE automatically (3ce752cf)
  • core: add fn to remove keys from catalogue; extend returns a clean up fn (651cfe2b)
  • core: bump three version (e7d2f1d0)
  • core: configurable max notification skip count (2554a59e)
  • core: bump ng 20 (fca5b470)
  • core: bump three 178 (83384cdd)
  • core: bump three (9f0e80da)
  • core: bump three179 (c6f6e090)
  • core: add elementEvents for NGT events and THREE native events (ede5c0b7)
  • core: min ng20 (677c1b6e)
  • core: bump three 182 (ffc690d6)
  • core: allow Angular v21 as peer dependency (0cb56440)
  • core: new generate json script (cb3a6834)
  • core,soba/loaders,soba/staging: implement resources (79184dce)
  • core/dom: expose NgtCanvas as a module with canvas and canvasContent grouped (bb0a9491)
  • core/dom: expose host element from NgtCanvasContent (fc0a6a74)
  • core/dom: expose HTMLCanvasElement and host element through template context (c56de317)
  • plugin: add angular-three-plugin (394b95c5)
  • plugin: prep gltf generator (8e79050a)
  • plugin: prep (8e750b19)
  • plugin: add aux generator (384f95e7)
  • plugin: add tweakpane as an aux generator option (78a04ea2)
  • plugin: add tweakpane to migration group (3dee9634)
  • plugin: add theatre to update groups (1b5c0559)
  • plugin: bump @rosskevin/gltfjsx 7.1.5 to 7.2.0, node-three-gltf 2.0.2 to 2.1.0 (f9b055f5)
  • plugin: update versions for v4 release (422b902d)
  • plugin: add angular-three-theatre to aux generator (e79608bd)
  • postprocessing: selective bloom effect (dc6b7d1a)
  • postprocessing: bump ng 20 (37c2bb1c)
  • postprocessing: bump three 178 (f40f3045)
  • postprocessing: bump three (d0434edc)
  • postprocessing: bump three179 (1d5c771a)
  • postprocessing: min ng20 (fb2c8c75)
  • postprocessing: bump three 182 (c84c13d8)
  • postprocessing: bump postprocessing from 6.37.7 to 6.38.2 (72abdfec)
  • postprocessing: expose effect instances publicly (f821f977)
  • postprocessing: allow Angular v21 as peer dependency (d58d8b93)
  • rapier: allow data to be a function (0dc863fe)
  • ⚠️ rapier: make the colliders' args the colliders name themselves (f6149ca8)
  • rapier: add interaction groups and physics step support (8ba12fe6)
  • rapier: update peer deps on rapier3d-compat (b42e76c6)
  • rapier: rename joints to remove inject prefix (739041a2)
  • rapier: bump ng 20 (28ce3ab2)
  • rapier: bump three 178 (b72e9b3c)
  • rapier: bump three and rapier3d (aebd8046)
  • rapier: bump three179 (1ab14daa)
  • rapier: min ng20 (9faa258d)
  • rapier: bump three 182 (9dae6348)
  • ⚠️ rapier: remove numAdditionalFrictionIterations and bump @dimforge/rapier3d-compat (f3b6f81b)
  • rapier: add filterContactPair and filterIntersectionPair hooks (216f9a93)
  • ⚠️ rapier: add alias 'attractor' to NgtrAttractor options input (787baf12)
  • rapier: allow Angular v21 as peer dependency (f3debc55)
  • rapier/addons: add attractor in addons secondary entry point (c7e6e451)
  • repo: migrate 21.2 with angular 20 (6eee3eb9)
  • soba: bump ng 20 (6d3fcd44)
  • soba: pointerlockcontrols (98d085a9)
  • soba: use CameraShake from pmndrs vanilla (38dee637)
  • soba: bump three 178 (975ca265)
  • soba: bump three (29d263c5)
  • soba: bump three179 (672bee60)
  • soba: bump vanilla (380ded6b)
  • soba: add clouds (f1974875)
  • soba: perspective-camera uses ElementEvents (de7184d3)
  • soba: min ng20 (263d53dc)
  • soba: add sparkles (da57c2f6)
  • soba: allow custom object for center box3d (da5a7621)
  • soba: bump three 182 (68706420)
  • soba: bump three-mesh-bvh from 0.9.1 to 0.9.4 (c52e0478)
  • soba: bump three-custom-shader-material from 6.3.7 to 6.4.0 (d7f9a30a)
  • soba: bump @monogrid/gainmap-js from 3.1.0 to 3.4.0 (a359b8b3)
  • soba: bump @pmndrs/vanilla from 1.24.1 to 1.25.0 (1a760f02)
  • soba: export Fisheye from @pmndrs/vanilla (c29786fe)
  • soba: bump stats-gl from 3.6.0 to 3.8.0 (b3383f98)
  • soba: allow Angular v21 as peer dependency (cbdcec20)
  • soba/abstractions: add ngts-text-3D as a selector to text3d (f048731d)
  • soba/abstractions: expose NgtObjectEvents on Text (ed877f20)
  • soba/abstractions: rename injectHelper to helper (bcfefe0a)
  • ⚠️ soba/cameras: update injectFBO usage (efb60cd4)
  • soba/cameras: rename injectCubeCamera t cubeCamera (e14e1dd1)
  • soba/controls: add TrackballControls (30ebfb70)
  • soba/controls: remove unused events input from camera controls (459fd1b0)
  • soba/gizmos: expose NgtsGizmoHelper as module (a85cf9a9)
  • soba/loaders: rename injectProgress to progress (e2b05920)
  • soba/misc: expose NgtsHTML as module (60df7770)
  • ⚠️ soba/misc: injectFBO no longer recreates the RenderTarget in a computed (12262c78)
  • ⚠️ soba/misc: injectDepthBuffer returns DepthTexture instead of Signal (53f515dd)
  • soba/misc: rename inject* to just function name (450a8c7b)
  • soba/misc: rename injectIntersect to intersect (d18fa11d)
  • soba/performances: add bvh (89c1e5ab)
  • soba/staging: expose NgtsRenderTexture as module (c76f4f7f)
  • soba/staging: rename injectMatcapTexture to matcapTextureResource; and injectNormalTexture (5e4b6f67)
  • theatre: add theatrejs integration (87be9501)
  • theatre: change sheet to a Directive (99625b16)
  • theatre: bump ng 20 (79195669)
  • theatre: bump three 178 (e68b66ed)
  • theatre: bump three (1fdc4879)
  • theatre: bump three179 (8d7bcaab)
  • theatre: min ng20 (1f8777ce)
  • theatre: bump three 182 (ba8a94fa)
  • theatre: allow Angular v21 as peer dependency (9eebc8a8)
  • tweakpane: tweakpane v1 (54f2a3ef)
  • tweakpane: accept optional container (2422bfc7)
  • tweakpane: rename tweakpane (54926538)
  • tweakpane: bump ng 20 (e996bbcd)
  • tweakpane: min ng20 (c209bdff)
  • tweakpane: add tweaks() function for declarative control creation (ec3d7e23)
  • tweakpane: allow Angular v21 as peer dependency (c01cde83)

🩹 Fixes

  • use as const array instead of module (7cbcd9b3)
  • core: adjust portals with new renderer (f0243b93)
  • core: adjust portals with new renderer (2) (b62b21d3)
  • core: html now works (6db540b9)
  • core: adjust a lot in renderer (6869f226)
  • core: pivot controls work (43c431e6)
  • core: update testing lib (2110ec66)
  • core: adjust tests in soba (5a18452c)
  • core: assign attach directly on instance state (554dc48b)
  • core: injectObjectEvents check for NgtInstanceNode (d92164e1)
  • core: applyProps assign geometry directly instead of copying (68da7aa8)
  • core: run invalidate on canvasOtions changes (e64eccfc)
  • core: adjust after attach type (c0197de1)
  • core: use resolveRef in NgtParent (b2fc55bd)
  • core: pass through defaultGLOptions instead of just canvas for NgtGLOptions (d67e2a75)
  • core: bubble up events from primitive children (fb1f73ab)
  • core: track the three child on platform parent before passing off to the ancestor (18094f29)
  • core: adjust applyProps to match r3f (0ea7a285)
  • core: rename selection apis (52fe3404)
  • core: adjust NgtRendererLike to also have an optional dispose (cdd34ed5)
  • core: add created event (b9cd35aa)
  • core: add ngt-scene to three elements collection (4bdd2801)
  • core: add missing geometry three elements (0f3eb989)
  • core: generate rawValue binding (b22e0d70)
  • core: make sure NgtThreeElements contain correct types for non-mutable props (1948b34b)
  • core: make ngt_args optional (73bd8cbb)
  • core: check against ngt-primitive type to prepare ngt-primitive (0bfaab68)
  • core: check for handlers before trying to remove event from it (a5dfa497)
  • core: add missing skinned-mesh and bone to three types (e04fc3d5)
  • core: forgot to update generation (eb09c7c5)
  • core: ignore keys.indexOf in loader (need to revisit why) (f560747a)
  • core: set check when resolve pierced props (5d89ae1c)
  • core: bump threejs 177 (b2151d77)
  • core: ng20 resource (3ba5a737)
  • core: allow using dotted path for attach array (483fd97d)
  • core: support attach in parameters input binding (2654840b)
  • core: call compute before early return in event management (90e0b259)
  • core: rename ngtObjectEvents/ngtElementEvents to objectEvents/elementEvents (14dec47f)
  • core/testing: remove extend(THREE) from testing (de0e0db0)
  • plugin: use next version for ngt (f33aa1b2)
  • plugin: use tree.write instead because save() ain't enough (17c56f73)
  • plugin: look for decorators as descendants (dfd893bd)
  • plugin: get template metadata via descendant (44de9464)
  • plugin: write template properly (329bde6f)
  • plugin: maintain format of template literal (3f3e5fa8)
  • plugin: use descendant again instead of child (a14ac5ab)
  • plugin: get literal value of templateUrl if available (b5bd817c)
  • plugin: expose initGenerator (25865c20)
  • plugin: use options modelPath (399fa40e)
  • plugin: use let for nodes/materials; call generate; adjust node name (78af9872)
  • plugin: adjust generate (8a42b403)
  • plugin: add keep names and keep groups options (485657eb)
  • plugin: let's see if it works (6c84dc2f)
  • plugin: adjust (c7025c51)
  • plugin: adjust one more time (9fde6590)
  • plugin: gltfPath (9617006c)
  • plugin: more gltfPath (f9cbb3e2)
  • plugin: handle draco; clean up (801a8619)
  • plugin: load draco based on transform (863d7db7)
  • plugin: draco is optional instead of default to false (f9063a82)
  • plugin: default draco to null? (a345eee1)
  • plugin: use string for draco (d008d2dd)
  • plugin: adjust draco schema again (ed44f610)
  • plugin: adjust migration group (32992318)
  • plugin: bump nx 21 (459feceb)
  • plugin: update gltf and init generator (79a73ea7)
  • plugin: skill issue (2e034320)
  • plugin/gltf: use new symbols for gltf generator (16492ac5)
  • postprocessing: expose effectComposer (726dfdbe)
  • postprocessing: use injectBeforeRender with priority signal (16307f30)
  • postprocessing: use renamed selection api (281931d2)
  • rapier: compute rotation and quaternion properly (cfd3ea56)
  • rapier: use boolean coercion (6308326a)
  • rapier: adjust rigidbody and collider input types (35c25040)
  • rapier: more inputs adjustments (757fa4c4)
  • rapier: make sure args and shape colliders are in sync (0bedb235)
  • rapier: convexHull collider should set shape as convexHull (9a82fcc9)
  • rapier: debug geometry works with webgpu (9ef1a1f5)
  • rapier: bump dimforge (02bb4189)
  • soba: adjust html with new renderer (86ff1a7d)
  • soba: null check for onBeforeRender in intersect (d8aa85df)
  • soba: update peer deps (ae568890)
  • soba: fix billboard rotation (66eb44f9)
  • soba: gizmo rotation should respect camera up (9e92d423)
  • soba: use booleanAttribute for adaptive dpr pixelated input (dfb76f8b)
  • soba: use injectBeforeRender with priority signal (c5d6e3dc)
  • soba: adjust orbit controls options (60b7d645)
  • soba: use elapsedTime instead of getElapsedTime() (08c8491c)
  • soba: ng20 resource (7906a906)
  • soba: add granular camrea controls outputs (fc58e479)
  • soba: update decal (72f9c1da)
  • soba: PixelFormat for fbo (d376f54a)
  • soba: expose NgtsCameraShakeOptions (16f85abd)
  • soba: adjust setUpdateRange to use start instead of offset (63c4cf8e)
  • soba: adjust fbo types (3f2d5758)
  • soba: pass renderOrder properly to pivotcontrols component (fd7de0a8)
  • soba,core: controls now work (96892ad1)
  • soba/abstractions: use boolean coercion (a8c842c5)
  • soba/abstractions: edges should be segmented (064944c7)
  • soba/abstractions: set ngtObjectEvents for Text in effect (55f2a2de)
  • soba/abstractions: use viewChild on Text to set NgtObjectEvents (d8780af3)
  • soba/abstractions: add ngts-text-3D as selector for text3d (c7d7b5c2)
  • soba/abstractions: gradienttexture extends canvas-texture instead of pure texture (1641396a)
  • soba/cameras: clean up cameras (2f034b73)
  • soba/cameras: assign manual on camera instance (898e9f60)
  • soba/cameras: adjust NgtsCubeCameraOptions type (3e0899d9)
  • soba/cameras: expose fbo.texture as camera content context instead of fbo (5552d810)
  • soba/controls: adjust orbit controls (4bf89340)
  • soba/gizmos: use boolean coercion (b91128e0)
  • soba/materials: adjust MeshTransmissionMaterialOptions type (8073c453)
  • soba/materials: add null to meshtransmissionmaterial background option (d377bc80)
  • soba/materials: update injectFBO usages (c972993e)
  • soba/materials: granularity with blur signals (f9726701)
  • soba/misc: remove deprecated TextureEncoding (cb9b676d)
  • soba/performances: adjust tracking logic in bvh effect (883e0f27)
  • soba/performances: hide bvh group when retrying setting up geometries (bc28579d)
  • soba/staging: use boolean coercions (852b7761)
  • soba/staging: dispose texture on destroy (050aee53)
  • soba/staging: adjust lightSource type for caustic (efe1e8ab)
  • soba/staging: when temporal is false, set a timeout for PLM update in accumulative shadows (e7b47551)
  • soba/staging: remove encoding option in injectEnvironment (f3205dd6)
  • soba/staging: update injectFBO usages (6aa59172)
  • soba/staging: soba build (920f7566)
  • theatre: use studio to initialize (1b517a30)
  • theatre: fix studio import (2cb857bf)
  • theatre: exportAs; expose sheetObject on transform and sync; (ac14210e)
  • tweakpane: expose hostDirectives as public API (c0aac2fa)
  • tweakpane: append pane as canvas child (4220b907)
  • tweakpane: use default tweakpane parent element (2d7120f8)
  • tweakpane: use any for binding value instead (5a09ecab)
  • tweakpane: adjust how custom container works (85a767ff)
  • tweakpane: add tweakpane/core to peer dep (0411bcfc)

💅 Refactors

  • cannon: update cannon with new renderer (b73211db)
  • core: clean up renderer (04b39d4c)
  • core: clean up renderer (8c1ae6c2)
  • core: make renderer not aware of store internally (18cafe1e)
  • core: refactor more with no-store renderer (c56b03e9)
  • core: update object events (6cf56c30)
  • core: clean up more renderer code (698e2752)
  • core: rename (2045bd31)
  • core: remove unnecessary portal injectors handling (79970722)
  • core: clean up (e60aa62c)
  • core: clean up (e42b7273)
  • core: some perf improvements (154e9b97)
  • core: perf improvement to events (a0330e22)
  • core: do not repeat the same obj in portal (fb2016c1)
  • core: merge setPointerEvent to defineProperties in instance (af71414f)
  • core: rewrite web-types and metadata generators (dd82e329)
  • examples: rename (371eb49b)
  • plugin: move generate-util outside (a378788e)
  • postprocessing: update postprocessing with new renderer (bfb3dbb5)
  • rapier: update rapier with new renderer (25f8ac31)
  • soba: clean up abstractions (5f40d894)
  • soba: update cameras with new renderer (cb9d2069)
  • soba: update abstractions with new renderer (441a5f0b)
  • soba: update controls with new renderer (b16d477e)
  • soba: update gizmos with new renderer (b41f1d64)
  • soba: adjust html with new renderer (155a68d2)
  • soba: adjust performances with new renderer (a83ba07c)
  • soba: adjust shaders with new renderer (d9bcca60)
  • soba: adjust staging with new renderer (d43bd2c7)
  • soba: adjust stats and vanilla exports with new renderer (41ca5f5b)
  • soba: adjust misc with new renderer (df00fb76)
  • soba: clean up (13815128)
  • soba/abstractions: use pierced props for extensions derivatives on grid (14a89040)
  • soba/cameras: adjust perspective camera code (41b94287)
  • soba/cameras: bring makeDefault effect on top for orthographic (52a24031)
  • soba/gizmos: use injectObjectEvents for all events for optimizing CDR (for now) (7dc8b027)
  • soba/loaders: use fontResource in injectFont (48ba0c7a)
  • soba/loaders: use fbxResource in injectFbx (5a0ddd41)
  • soba/misc: use onCleanup to clean up fbo embedded view (771d55f2)
  • soba/misc: use computed for animations API instead of effect (3d937816)
  • soba/misc: use deeply nested signal on htmlContent (d200e3eb)
  • soba/staging: use protected (efaba5b2)
  • soba/staging: use pierced props for sky (c2ad7a69)
  • soba/staging: use pierced props for spot light volumetric mesh (d03e5cdd)
  • soba/staging: rename injectSpotLightCommon to spotLightCommon (905dd333)
  • soba/staging: use environmentResource in injectEnvironment (eadbf535)
  • theatre: use injectObjectEvents for transform events (ebcb6f7c)
  • tweakpane: use computed for a lot of bindings stuff instead of set signal (5d77340b)
  • tweakpane: rename startChangeEffect to sync (659ff189)

⚠️ Breaking Changes

  • rapier: add alias 'attractor' to NgtrAttractor options input (787baf12) NgtrAttractor now uses [attractor] instead of [options] Before: <ngt-object3D attractor [options]="{ strength: 10 }" /> After: <ngt-object3D [attractor]="{ strength: 10 }" /> <ngt-object3D attractor />
  • rapier: remove numAdditionalFrictionIterations and bump @dimforge/rapier3d-compat (f3b6f81b) remove numAdditionalFrictionIterations input due to Rapier library dropping the property altogether
  • soba/cameras: update injectFBO usage (efb60cd4) NgtsCameraContent let-texture template variable is a Texture instead of Signal<Texture>
  • soba/misc: injectDepthBuffer returns DepthTexture instead of Signal (53f515dd) injectDepthBuffer returns DepthTexture | null instead of Signal<DepthTexture | null>. Consumers should update accordingly
  • soba/misc: injectFBO no longer recreates the RenderTarget in a computed (12262c78) injectFBO now returns a WebGLRenderTarget instead of Signal<WebGLRenderTarget>. All consumers should change injectFBO usage
    // before
    fbo = injectFBO();
    this.fbo();
    // after
    fbo = injectFBO();
    this.fbo;
  • rapier: make the colliders' args the colliders name themselves (f6149ca8) this moves the [args] binding to colliders name before: cuboidCollider [args]="[...]" after: [cuboidCollider]="[...]"

❤️ Thank You

  • Chau @nartc
  • nartc

4.0.0-next.126 (2026-01-06)

🚀 Features

  • plugin: update versions for v4 release (422b902d)
  • plugin: add angular-three-theatre to aux generator (e79608bd)

❤️ Thank You

  • Chau @nartc

4.0.0-next.125 (2026-01-04)

This was a version bump only, there were no code changes.

4.0.0-next.124 (2026-01-04)

🚀 Features

  • core: new generate json script (cb3a6834)

❤️ Thank You

  • Chau @nartc

4.0.0-next.123 (2026-01-04)

🚀 Features

  • cannon: allow Angular v21 as peer dependency (67f27003)
  • core: allow Angular v21 as peer dependency (0cb56440)
  • postprocessing: allow Angular v21 as peer dependency (d58d8b93)
  • rapier: allow Angular v21 as peer dependency (f3debc55)
  • soba: allow Angular v21 as peer dependency (cbdcec20)
  • theatre: allow Angular v21 as peer dependency (9eebc8a8)
  • tweakpane: allow Angular v21 as peer dependency (c01cde83)

❤️ Thank You

  • Chau @nartc

4.0.0-next.122 (2026-01-04)

💅 Refactors

  • core: rewrite web-types and metadata generators (dd82e329)

❤️ Thank You

  • Chau @nartc

4.0.0-next.121 (2026-01-03)

🚀 Features

  • postprocessing: expose effect instances publicly (f821f977)

❤️ Thank You

  • Chau @nartc

4.0.0-next.120 (2026-01-01)

🚀 Features

  • ⚠️ rapier: add alias 'attractor' to NgtrAttractor options input (787baf12)

⚠️ Breaking Changes

  • rapier: add alias 'attractor' to NgtrAttractor options input (787baf12) NgtrAttractor now uses [attractor] instead of [options] Before: <ngt-object3D attractor [options]="{ strength: 10 }" /> After: <ngt-object3D [attractor]="{ strength: 10 }" /> <ngt-object3D attractor />

❤️ Thank You

  • Chau @nartc

4.0.0-next.119 (2025-12-31)

This was a version bump only, there were no code changes.

4.0.0-next.118 (2025-12-31)

🩹 Fixes

  • core: rename ngtObjectEvents/ngtElementEvents to objectEvents/elementEvents (14dec47f)

❤️ Thank You

  • Chau @nartc

4.0.0-next.117 (2025-12-31)

🚀 Features

  • rapier: add filterContactPair and filterIntersectionPair hooks (216f9a93)
  • tweakpane: add tweaks() function for declarative control creation (ec3d7e23)

❤️ Thank You

  • Chau @nartc

4.0.0-next.116 (2025-12-29)

🚀 Features

  • cannon: bump three 182 (5920c4e6)
  • core: bump three 182 (ffc690d6)
  • plugin: bump @rosskevin/gltfjsx 7.1.5 to 7.2.0, node-three-gltf 2.0.2 to 2.1.0 (f9b055f5)
  • postprocessing: bump three 182 (c84c13d8)
  • postprocessing: bump postprocessing from 6.37.7 to 6.38.2 (72abdfec)
  • rapier: bump three 182 (9dae6348)
  • ⚠️ rapier: remove numAdditionalFrictionIterations and bump @dimforge/rapier3d-compat (f3b6f81b)
  • soba: allow custom object for center box3d (da5a7621)
  • soba: bump three 182 (68706420)
  • soba: bump three-mesh-bvh from 0.9.1 to 0.9.4 (c52e0478)
  • soba: bump three-custom-shader-material from 6.3.7 to 6.4.0 (d7f9a30a)
  • soba: bump @monogrid/gainmap-js from 3.1.0 to 3.4.0 (a359b8b3)
  • soba: bump @pmndrs/vanilla from 1.24.1 to 1.25.0 (1a760f02)
  • soba: export Fisheye from @pmndrs/vanilla (c29786fe)
  • soba: bump stats-gl from 3.6.0 to 3.8.0 (b3383f98)
  • theatre: bump three 182 (ba8a94fa)

🩹 Fixes

  • soba: pass renderOrder properly to pivotcontrols component (fd7de0a8)

⚠️ Breaking Changes

  • rapier: remove numAdditionalFrictionIterations and bump @dimforge/rapier3d-compat (f3b6f81b) remove numAdditionalFrictionIterations input due to Rapier library dropping the property altogether

❤️ Thank You

  • Chau @nartc

4.0.0-next.115 (2025-08-17)

🩹 Fixes

❤️ Thank You

  • Chau @nartc

4.0.0-next.114 (2025-08-17)

🚀 Features

🩹 Fixes

❤️ Thank You

  • Chau @nartc

4.0.0-next.113 (2025-08-17)

🩹 Fixes

  • plugin: update gltf and init generator (79a73ea7)

❤️ Thank You

  • Chau @nartc

4.0.0-next.112 (2025-08-17)

🚀 Features

🩹 Fixes

  • core: call compute before early return in event management (90e0b259)
  • soba: adjust setUpdateRange to use start instead of offset (63c4cf8e)

❤️ Thank You

  • Chau @nartc

4.0.0-next.111 (2025-08-03)

🚀 Features

🩹 Fixes

  • core: allow using dotted path for attach array (483fd97d)
  • core: support attach in parameters input binding (2654840b)

❤️ Thank You

  • Chau @nartc

4.0.0-next.110 (2025-07-07)

🚀 Features

🩹 Fixes

  • soba: expose NgtsCameraShakeOptions (16f85abd)

❤️ Thank You

  • Chau @nartc

4.0.0-next.109 (2025-06-29)

🚀 Features

  • soba: use CameraShake from pmndrs vanilla (38dee637)

❤️ Thank You

  • Chau @nartc

4.0.0-next.108 (2025-06-18)

🚀 Features

🩹 Fixes

❤️ Thank You

  • Chau @nartc

4.0.0-next.107 (2025-06-12)

💅 Refactors

  • core: do not repeat the same obj in portal (fb2016c1)
  • core: merge setPointerEvent to defineProperties in instance (af71414f)

❤️ Thank You

  • Chau @nartc

4.0.0-next.106 (2025-05-18)

💅 Refactors

  • core: perf improvement to events (a0330e22)

❤️ Thank You

  • Chau @nartc

4.0.0-next.105 (2025-05-17)

🚀 Features

  • core: configurable max notification skip count (2554a59e)

💅 Refactors

  • core: some perf improvements (154e9b97)

❤️ Thank You

  • Chau @nartc

4.0.0-next.104 (2025-05-17)

🚀 Features

🩹 Fixes

💅 Refactors

❤️ Thank You

  • Chau @nartc

4.0.0-next.103 (2025-04-07)

🩹 Fixes

  • plugin/gltf: use new symbols for gltf generator (16492ac5)

❤️ Thank You

  • Chau

4.0.0-next.102 (2025-04-07)

🩹 Fixes

  • core: set check when resolve pierced props (5d89ae1c)
  • soba/materials: granularity with blur signals (f9726701)

❤️ Thank You

  • Chau

4.0.0-next.101 (2025-04-02)

🚀 Features

  • core/dom: expose HTMLCanvasElement and host element through template context (c56de317)

❤️ Thank You

  • Chau

4.0.0-next.100 (2025-04-02)

💅 Refactors

  • core: remove unnecessary portal injectors handling (79970722)
  • core: clean up (e60aa62c)

❤️ Thank You

  • Chau

4.0.0-next.99 (2025-03-25)

🚀 Features

  • core: fill catalogue with symbols from THREE automatically (3ce752cf)
  • core: add fn to remove keys from catalogue; extend returns a clean up fn (651cfe2b)

🩹 Fixes

  • core/testing: remove extend(THREE) from testing (de0e0db0)
  • soba/abstractions: gradienttexture extends canvas-texture instead of pure texture (1641396a)

💅 Refactors

  • soba/misc: use onCleanup to clean up fbo embedded view (771d55f2)
  • soba/misc: use computed for animations API instead of effect (3d937816)
  • soba/misc: use deeply nested signal on htmlContent (d200e3eb)

❤️ Thank You

  • nartc

4.0.0-next.98 (2025-03-22)

🚀 Features

  • core: rename injectObjectEvents to objectEvents (5a707562)
  • core: rename injectBeforeRender to beforeRender (5ab9a3e7)
  • core,soba/loaders,soba/staging: implement resources (79184dce)
  • rapier: rename joints to remove inject prefix (739041a2)
  • soba/abstractions: rename injectHelper to helper (bcfefe0a)
  • soba/cameras: rename injectCubeCamera t cubeCamera (e14e1dd1)
  • soba/loaders: rename injectProgress to progress (e2b05920)
  • soba/misc: rename inject* to just function name (450a8c7b)
  • soba/misc: rename injectIntersect to intersect (d18fa11d)
  • soba/staging: rename injectMatcapTexture to matcapTextureResource; and injectNormalTexture (5e4b6f67)

🩹 Fixes

💅 Refactors

  • soba/loaders: use fontResource in injectFont (48ba0c7a)
  • soba/loaders: use fbxResource in injectFbx (5a0ddd41)
  • soba/staging: rename injectSpotLightCommon to spotLightCommon (905dd333)
  • soba/staging: use environmentResource in injectEnvironment (eadbf535)

❤️ Thank You

  • nartc

4.0.0-next.97 (2025-03-17)

🚀 Features

  • theatre: change sheet to a Directive (99625b16)

💅 Refactors

  • soba: clean up (13815128)
  • soba/abstractions: use pierced props for extensions derivatives on grid (14a89040)
  • soba/cameras: bring makeDefault effect on top for orthographic (52a24031)
  • soba/gizmos: use injectObjectEvents for all events for optimizing CDR (for now) (7dc8b027)
  • soba/staging: use pierced props for sky (c2ad7a69)
  • soba/staging: use pierced props for spot light volumetric mesh (d03e5cdd)
  • theatre: use injectObjectEvents for transform events (ebcb6f7c)

❤️ Thank You

  • nartc

4.0.0-next.96 (2025-03-16)

🩹 Fixes

  • theatre: exportAs; expose sheetObject on transform and sync; (ac14210e)

💅 Refactors

  • soba/cameras: adjust perspective camera code (41b94287)

❤️ Thank You

  • nartc

4.0.0-next.95 (2025-03-15)

🩹 Fixes

❤️ Thank You

  • nartc

4.0.0-next.94 (2025-03-15)

🩹 Fixes

  • theatre: use studio to initialize (1b517a30)

❤️ Thank You

  • nartc

4.0.0-next.93 (2025-03-15)

🚀 Features

  • core: remove unused code, expose resolveInstanceKey in applyProps (0bdd9a7f)
  • plugin: add tweakpane to migration group (3dee9634)
  • plugin: add theatre to update groups (1b5c0559)
  • theatre: add theatrejs integration (87be9501)
  • tweakpane: rename tweakpane (54926538)

🩹 Fixes

  • core: ignore keys.indexOf in loader (need to revisit why) (f560747a)

❤️ Thank You

  • nartc

4.0.0-next.92 (2025-03-13)

🚀 Features

  • soba/controls: remove unused events input from camera controls (459fd1b0)

🩹 Fixes

  • soba/performances: hide bvh group when retrying setting up geometries (bc28579d)

❤️ Thank You

  • nartc

4.0.0-next.91 (2025-03-11)

🚀 Features

  • rapier: update peer deps on rapier3d-compat (b42e76c6)

❤️ Thank You

  • nartc

4.0.0-next.90 (2025-03-11)

💅 Refactors

  • tweakpane: rename startChangeEffect to sync (659ff189)

❤️ Thank You

  • nartc

4.0.0-next.89 (2025-03-11)

💅 Refactors

  • tweakpane: use computed for a lot of bindings stuff instead of set signal (5d77340b)

❤️ Thank You

  • nartc

4.0.0-next.88 (2025-03-11)

🩹 Fixes

  • soba/abstractions: add ngts-text-3D as selector for text3d (c7d7b5c2)
  • soba/cameras: expose fbo.texture as camera content context instead of fbo (5552d810)

💅 Refactors

  • soba/staging: use protected (efaba5b2)

❤️ Thank You

  • nartc

4.0.0-next.87 (2025-03-09)

This was a version bump only, there were no code changes.

4.0.0-next.86 (2025-03-09)

This was a version bump only, there were no code changes.

4.0.0-next.85 (2025-03-09)

🩹 Fixes

  • core: forgot to update generation (eb09c7c5)

❤️ Thank You

  • nartc

4.0.0-next.84 (2025-03-09)

🩹 Fixes

  • core: add missing skinned-mesh and bone to three types (e04fc3d5)

❤️ Thank You

  • nartc

4.0.0-next.83 (2025-03-08)

🩹 Fixes

  • core: check for handlers before trying to remove event from it (a5dfa497)

❤️ Thank You

  • nartc

4.0.0-next.82 (2025-03-08)

🩹 Fixes

  • soba/abstractions: use viewChild on Text to set NgtObjectEvents (d8780af3)

❤️ Thank You

  • nartc

4.0.0-next.81 (2025-03-08)

🩹 Fixes

  • core: check against ngt-primitive type to prepare ngt-primitive (0bfaab68)
  • soba/abstractions: set ngtObjectEvents for Text in effect (55f2a2de)

💅 Refactors

❤️ Thank You

  • nartc

4.0.0-next.80 (2025-03-08)

🚀 Features

  • soba/abstractions: expose NgtObjectEvents on Text (ed877f20)

❤️ Thank You

  • nartc

4.0.0-next.79 (2025-03-08)

🚀 Features

  • soba/controls: add TrackballControls (30ebfb70)

🩹 Fixes

  • core: make ngt_args optional (73bd8cbb)
  • soba/controls: adjust orbit controls (4bf89340)

❤️ Thank You

  • nartc

4.0.0-next.78 (2025-03-06)

🚀 Features

  • ⚠️ soba/cameras: update injectFBO usage (efb60cd4)
  • ⚠️ soba/misc: injectFBO no longer recreates the RenderTarget in a computed (12262c78)
  • ⚠️ soba/misc: injectDepthBuffer returns DepthTexture instead of Signal (53f515dd)

🩹 Fixes

  • soba/materials: update injectFBO usages (c972993e)
  • soba/staging: update injectFBO usages (6aa59172)

⚠️ Breaking Changes

  • soba/cameras: NgtsCameraContent let-texture template variable is
  • soba/misc: injectDepthBuffer returns DepthTexture | null
  • soba/misc: injectFBO now returns a WebGLRenderTarget instead

❤️ Thank You

  • nartc

4.0.0-next.77 (2025-03-05)

🩹 Fixes

  • tweakpane: add tweakpane/core to peer dep (0411bcfc)

❤️ Thank You

  • nartc

4.0.0-next.76 (2025-03-05)

🩹 Fixes

  • tweakpane: adjust how custom container works (85a767ff)

❤️ Thank You

  • nartc

4.0.0-next.75 (2025-03-05)

🚀 Features

  • core/dom: expose host element from NgtCanvasContent (fc0a6a74)
  • tweakpane: accept optional container (2422bfc7)

❤️ Thank You

  • nartc

4.0.0-next.74 (2025-03-05)

🩹 Fixes

  • soba/misc: remove deprecated TextureEncoding (cb9b676d)
  • soba/staging: remove encoding option in injectEnvironment (f3205dd6)

❤️ Thank You

  • nartc

4.0.0-next.73 (2025-03-05)

🚀 Features

  • core: allow provideNgtRenderer to accept options (2bca496b)

❤️ Thank You

  • nartc

4.0.0-next.72 (2025-03-05)

🩹 Fixes

  • soba/abstractions: edges should be segmented (064944c7)

❤️ Thank You

  • nartc

4.0.0-next.71 (2025-03-03)

🩹 Fixes

  • tweakpane: use any for binding value instead (5a09ecab)

❤️ Thank You

  • nartc

4.0.0-next.70 (2025-03-03)

🚀 Features

  • soba/abstractions: add ngts-text-3D as a selector to text3d (f048731d)

🩹 Fixes

  • soba/materials: add null to meshtransmissionmaterial background option (d377bc80)
  • soba/staging: when temporal is false, set a timeout for PLM update in accumulative shadows (e7b47551)

❤️ Thank You

  • nartc

4.0.0-next.69 (2025-03-02)

🩹 Fixes

  • rapier: convexHull collider should set shape as convexHull (9a82fcc9)

❤️ Thank You

  • nartc

4.0.0-next.68 (2025-03-02)

🚀 Features

  • core: expose meshes on loaded object graph (9a0ee1db)

🩹 Fixes

  • core: generate rawValue binding (b22e0d70)
  • core: make sure NgtThreeElements contain correct types for non-mutable props (1948b34b)
  • soba/cameras: adjust NgtsCubeCameraOptions type (3e0899d9)
  • soba/materials: adjust MeshTransmissionMaterialOptions type (8073c453)
  • soba/staging: adjust lightSource type for caustic (efe1e8ab)

❤️ Thank You

  • nartc

4.0.0-next.67 (2025-03-01)

🚀 Features

❤️ Thank You

  • nartc

4.0.0-next.66 (2025-02-28)

🚀 Features

  • rapier: add interaction groups and physics step support (8ba12fe6)
  • rapier/addons: add attractor in addons secondary entry point (c7e6e451)

🩹 Fixes

  • core: add missing geometry three elements (0f3eb989)

❤️ Thank You

  • nartc

4.0.0-next.65 (2025-02-27)

🩹 Fixes

  • rapier: make sure args and shape colliders are in sync (0bedb235)

❤️ Thank You

  • nartc

4.0.0-next.64 (2025-02-27)

🩹 Fixes

  • rapier: more inputs adjustments (757fa4c4)

❤️ Thank You

  • nartc

4.0.0-next.63 (2025-02-27)

🚀 Features

  • ⚠️ rapier: make the colliders' args the colliders name themselves (f6149ca8)

⚠️ Breaking Changes

  • rapier: this moves the [args] binding to colliders name

❤️ Thank You

  • nartc

4.0.0-next.62 (2025-02-27)

🩹 Fixes

  • rapier: adjust rigidbody and collider input types (35c25040)

❤️ Thank You

  • nartc

4.0.0-next.61 (2025-02-26)

🚀 Features

  • rapier: allow data to be a function (0dc863fe)

🩹 Fixes

  • core: add ngt-scene to three elements collection (4bdd2801)

❤️ Thank You

  • nartc

4.0.0-next.60 (2025-02-24)

🩹 Fixes

  • core: adjust NgtRendererLike to also have an optional dispose (cdd34ed5)
  • core: add created event (b9cd35aa)
  • soba/staging: dispose texture on destroy (050aee53)
  • tweakpane: use default tweakpane parent element (2d7120f8)

❤️ Thank You

  • nartc

4.0.0-next.59 (2025-02-23)

This was a version bump only, there were no code changes.

4.0.0-next.58 (2025-02-22)

🚀 Features

🩹 Fixes

  • soba/performances: adjust tracking logic in bvh effect (883e0f27)

❤️ Thank You

  • nartc

4.0.0-next.57 (2025-02-20)

🩹 Fixes

  • core: rename selection apis (52fe3404)
  • postprocessing: use renamed selection api (281931d2)

❤️ Thank You

  • nartc

4.0.0-next.56 (2025-02-18)

This was a version bump only, there were no code changes.

4.0.0-next.55 (2025-02-18)

🩹 Fixes

  • core: adjust applyProps to match r3f (0ea7a285)

❤️ Thank You

  • nartc

4.0.0-next.54 (2025-02-18)

🩹 Fixes

  • soba/cameras: assign manual on camera instance (898e9f60)

❤️ Thank You

  • nartc

4.0.0-next.53 (2025-02-18)

🩹 Fixes

  • soba/cameras: clean up cameras (2f034b73)

❤️ Thank You

  • nartc

4.0.0-next.52 (2025-02-16)

🩹 Fixes

  • soba: use elapsedTime instead of getElapsedTime() (08c8491c)

❤️ Thank You

  • nartc

4.0.0-next.51 (2025-02-16)

🩹 Fixes

  • core: track the three child on platform parent before passing off to the ancestor (18094f29)

❤️ Thank You

  • nartc

4.0.0-next.50 (2025-02-14)

🩹 Fixes

  • tweakpane: append pane as canvas child (4220b907)

❤️ Thank You

  • nartc

4.0.0-next.49 (2025-02-14)

🩹 Fixes

  • rapier: use boolean coercion (6308326a)
  • soba/abstractions: use boolean coercion (a8c842c5)
  • soba/gizmos: use boolean coercion (b91128e0)
  • soba/staging: use boolean coercions (852b7761)

❤️ Thank You

  • nartc

4.0.0-next.48 (2025-02-14)

🚀 Features

  • plugin: add tweakpane as an aux generator option (78a04ea2)
  • tweakpane: tweakpane v1 (54f2a3ef)

🩹 Fixes

  • tweakpane: expose hostDirectives as public API (c0aac2fa)

❤️ Thank You

  • nartc

4.0.0-next.47 (2025-02-13)

🚀 Features

🩹 Fixes

  • plugin: adjust migration group (32992318)

💅 Refactors

  • plugin: move generate-util outside (a378788e)

❤️ Thank You

  • nartc

4.0.0-next.46 (2025-02-13)

🩹 Fixes

  • plugin: adjust draco schema again (ed44f610)

❤️ Thank You

  • nartc

4.0.0-next.45 (2025-02-13)

🩹 Fixes

  • plugin: use string for draco (d008d2dd)

❤️ Thank You

  • nartc

4.0.0-next.44 (2025-02-13)

🩹 Fixes

  • plugin: default draco to null? (a345eee1)

❤️ Thank You

  • nartc

4.0.0-next.43 (2025-02-13)

🩹 Fixes

  • plugin: draco is optional instead of default to false (f9063a82)

❤️ Thank You

  • nartc

4.0.0-next.42 (2025-02-13)

🩹 Fixes

  • plugin: load draco based on transform (863d7db7)

❤️ Thank You

  • nartc

4.0.0-next.41 (2025-02-13)

🩹 Fixes

  • plugin: handle draco; clean up (801a8619)

❤️ Thank You

  • nartc

4.0.0-next.40 (2025-02-12)

🩹 Fixes

❤️ Thank You

  • nartc

4.0.0-next.39 (2025-02-12)

🩹 Fixes

❤️ Thank You

  • nartc

4.0.0-next.38 (2025-02-12)

🩹 Fixes

  • plugin: adjust one more time (9fde6590)

❤️ Thank You

  • nartc

4.0.0-next.37 (2025-02-12)

🩹 Fixes

❤️ Thank You

  • nartc

4.0.0-next.36 (2025-02-12)

🩹 Fixes

  • plugin: let's see if it works (6c84dc2f)

❤️ Thank You

  • nartc

4.0.0-next.35 (2025-02-12)

🩹 Fixes

  • plugin: add keep names and keep groups options (485657eb)

❤️ Thank You

  • nartc

4.0.0-next.34 (2025-02-12)

🩹 Fixes

❤️ Thank You

  • nartc

4.0.0-next.33 (2025-02-12)

🩹 Fixes

  • plugin: use let for nodes/materials; call generate; adjust node name (78af9872)

❤️ Thank You

  • nartc

4.0.0-next.32 (2025-02-12)

🩹 Fixes

  • plugin: use options modelPath (399fa40e)

❤️ Thank You

  • nartc

4.0.0-next.31 (2025-02-12)

This was a version bump only, there were no code changes.

4.0.0-next.30 (2025-02-11)

🚀 Features

❤️ Thank You

  • nartc

4.0.0-next.29 (2025-02-11)

🚀 Features

  • plugin: prep gltf generator (8e79050a)

🩹 Fixes

  • plugin: expose initGenerator (25865c20)

❤️ Thank You

  • nartc

4.0.0-next.28 (2025-02-10)

🩹 Fixes

  • plugin: get literal value of templateUrl if available (b5bd817c)

❤️ Thank You

  • nartc

4.0.0-next.27 (2025-02-10)

🩹 Fixes

  • plugin: use descendant again instead of child (a14ac5ab)

❤️ Thank You

  • nartc

4.0.0-next.26 (2025-02-10)

🩹 Fixes

  • plugin: maintain format of template literal (3f3e5fa8)

❤️ Thank You

  • nartc

4.0.0-next.25 (2025-02-10)

🩹 Fixes

  • plugin: write template properly (329bde6f)

❤️ Thank You

  • nartc

4.0.0-next.24 (2025-02-10)

🩹 Fixes

  • plugin: get template metadata via descendant (44de9464)

❤️ Thank You

  • nartc

4.0.0-next.23 (2025-02-10)

🩹 Fixes

  • plugin: look for decorators as descendants (dfd893bd)

❤️ Thank You

  • nartc

4.0.0-next.22 (2025-02-10)

🩹 Fixes

  • plugin: use tree.write instead because save() ain't enough (17c56f73)

❤️ Thank You

  • nartc

4.0.0-next.21 (2025-02-10)

🩹 Fixes

  • plugin: use next version for ngt (f33aa1b2)

❤️ Thank You

  • nartc

4.0.0-next.20 (2025-02-10)

🚀 Features

  • plugin: add angular-three-plugin (394b95c5)

❤️ Thank You

  • nartc

4.0.0-next.19 (2025-02-10)

🩹 Fixes

  • use as const array instead of module (7cbcd9b3)

❤️ Thank You

  • nartc

4.0.0-next.18 (2025-02-09)

🚀 Features

  • core: expose NgtPortal as module with portal and portalContent grouped (919a1a8f)
  • core/dom: expose NgtCanvas as a module with canvas and canvasContent grouped (bb0a9491)
  • soba/gizmos: expose NgtsGizmoHelper as module (a85cf9a9)
  • soba/misc: expose NgtsHTML as module (60df7770)
  • soba/staging: expose NgtsRenderTexture as module (c76f4f7f)

❤️ Thank You

  • nartc

4.0.0-next.17 (2025-02-09)

🩹 Fixes

  • soba: adjust orbit controls options (60b7d645)

❤️ Thank You

  • nartc

4.0.0-next.16 (2025-02-09)

🩹 Fixes

  • core: pass through defaultGLOptions instead of just canvas for NgtGLOptions (d67e2a75)
  • core: bubble up events from primitive children (fb1f73ab)

❤️ Thank You

  • nartc

4.0.0-next.15 (2025-02-08)

🩹 Fixes

  • core: use resolveRef in NgtParent (b2fc55bd)

❤️ Thank You

  • nartc

4.0.0-next.14 (2025-02-08)

🚀 Features

  • core: allow injectBeforeRender to accept priority as signal (5aad08bc)

🩹 Fixes

  • postprocessing: use injectBeforeRender with priority signal (16307f30)
  • soba: use injectBeforeRender with priority signal (c5d6e3dc)

❤️ Thank You

  • nartc

4.0.0-next.13 (2025-02-07)

🚀 Features

  • core: add change as THREE native events (e44c2b8a)

❤️ Thank You

  • nartc

4.0.0-next.12 (2025-02-07)

🚀 Features

  • core: support pierced property (e5a7285b)

❤️ Thank You

  • nartc

4.0.0-next.11 (2025-02-07)

🩹 Fixes

  • soba: use booleanAttribute for adaptive dpr pixelated input (dfb76f8b)

❤️ Thank You

  • nartc

4.0.0-next.10 (2025-02-05)

🩹 Fixes

  • core: run invalidate on canvasOtions changes (e64eccfc)
  • core: adjust after attach type (c0197de1)
  • postprocessing: expose effectComposer (726dfdbe)

❤️ Thank You

  • nartc

4.0.0-next.9 (2025-02-02)

🚀 Features

  • postprocessing: selective bloom effect (dc6b7d1a)

🩹 Fixes

  • core: applyProps assign geometry directly instead of copying (68da7aa8)
  • soba: fix billboard rotation (66eb44f9)
  • soba: gizmo rotation should respect camera up (9e92d423)

❤️ Thank You

  • nartc

4.0.0-next.8 (2025-02-01)

This was a version bump only, there were no code changes.

4.0.0-next.7 (2025-01-28)

🩹 Fixes

  • core: injectObjectEvents check for NgtInstanceNode (d92164e1)

❤️ Thank You

  • nartc

4.0.0-next.6 (2025-01-28)

🩹 Fixes

❤️ Thank You

  • nartc

4.0.0-next.5 (2025-01-28)

🩹 Fixes

  • core: assign attach directly on instance state (554dc48b)

❤️ Thank You

  • nartc

4.0.0-next.4 (2025-01-26)

🩹 Fixes

  • soba: null check for onBeforeRender in intersect (d8aa85df)

❤️ Thank You

  • nartc

4.0.0-next.3 (2025-01-26)

This was a version bump only, there were no code changes.

4.0.0-next.2 (2025-01-26)

🩹 Fixes

  • rapier: compute rotation and quaternion properly (cfd3ea56)

❤️ Thank You

  • nartc

4.0.0-next.1 (2025-01-26)

🚀 Features

🩹 Fixes

  • core: adjust portals with new renderer (f0243b93)
  • core: adjust portals with new renderer (2) (b62b21d3)
  • core: html now works (6db540b9)
  • core: adjust a lot in renderer (6869f226)
  • core: pivot controls work (43c431e6)
  • core: update testing lib (2110ec66)
  • core: adjust tests in soba (5a18452c)
  • soba: adjust html with new renderer (86ff1a7d)
  • soba,core: controls now work (96892ad1)

💅 Refactors

  • cannon: update cannon with new renderer (b73211db)
  • core: clean up renderer (04b39d4c)
  • core: clean up renderer (8c1ae6c2)
  • core: make renderer not aware of store internally (18cafe1e)
  • core: refactor more with no-store renderer (c56b03e9)
  • core: update object events (6cf56c30)
  • core: clean up more renderer code (698e2752)
  • examples: rename (371eb49b)
  • postprocessing: update postprocessing with new renderer (bfb3dbb5)
  • rapier: update rapier with new renderer (25f8ac31)
  • soba: clean up abstractions (5f40d894)
  • soba: update cameras with new renderer (cb9d2069)
  • soba: update abstractions with new renderer (441a5f0b)
  • soba: update controls with new renderer (b16d477e)
  • soba: update gizmos with new renderer (b41f1d64)
  • soba: adjust html with new renderer (155a68d2)
  • soba: adjust performances with new renderer (a83ba07c)
  • soba: adjust shaders with new renderer (d9bcca60)
  • soba: adjust staging with new renderer (d43bd2c7)
  • soba: adjust stats and vanilla exports with new renderer (41ca5f5b)
  • soba: adjust misc with new renderer (df00fb76)

❤️ Thank You

  • nartc

3.6.0 (2025-01-11)

🚀 Features

🩹 Fixes

  • core: loosen instanceof check (b7650b2)
  • core: null check first before isTexture (ebd3c3a)
  • soba: dispose texture on environment cube destroyed (4a23c73)

❤️ Thank You

  • nartc

3.5.0 (2025-01-11)

🚀 Features

  • soba: add isReady getter for animation api to help with type-narrow (3ca940d)

❤️ Thank You

  • nartc

3.4.1 (2025-01-08)

🩹 Fixes

  • postprocessing: ngtp tone mapping selector (e816059)

❤️ Thank You

  • nartc

3.4.0 (2025-01-08)

🚀 Features

  • core: add parent directive for special attach case (7f78a4c)

🩹 Fixes

  • core: make sure previousAttach exists before invoking (b5d3ae6)
  • core: adjust NgtRouterOutlet to make a new env injector with parent (ae16c92)
  • core: move resolve parent to the directive itself (0ec724a)
  • postprocessing: update tonemapping to not use CONVOLUTION (a6a7567)
  • postprocessing: export name for tone mapping (abe0100)

❤️ Thank You

  • nartc

3.3.0 (2025-01-07)

🩹 Fixes

  • soba: adjust injectGLTF generics (41b95c4)

❤️ Thank You

  • nartc

3.2.4 (2025-01-07)

🩹 Fixes

  • core: get parent in removeChild from parentNode; do not remove children if oldChild is scene (2807f68)
  • soba: move makeDefault up for controls (9d05d0c)

❤️ Thank You

  • nartc

3.2.3 (2025-01-06)

🩹 Fixes

  • core: check against previous args and do nothing if they're the same references (d24c136)
  • core: use custom equality fn for parameters (3c0cdfe)

❤️ Thank You

  • nartc

3.2.2 (2025-01-05)

🩹 Fixes

  • core: null check remove call (065efff)

❤️ Thank You

  • nartc

3.2.1 (2025-01-05)

🩹 Fixes

  • core: check for lS.parent before calling untracked on it (b4bf14d)
  • soba: setPoints should receive optional mid in quadratic bezier line (909b27c)
  • soba: bind offset to position on pivot controls instead of effect (c4128ed)

❤️ Thank You

  • nartc

3.2.0 (2025-01-05)

🩹 Fixes

  • cannon: remove standalone: true (b5e56e7)
  • cannon: remove unnecessary untracked (de8a3e9)
  • core: remove standalone true (0a38f33)
  • core: remove unnecessary untracked (a837583)
  • postprocessing: remove standalone true (195ea58)
  • rapier: remove standalone true (fa304b9)
  • rapier: remove unnecessary untracked (f994937)
  • soba: remove standalone true (f894178)
  • soba: remove unnecessary untracked (5a976ef)

❤️ Thank You

  • nartc

3.1.0 (2025-01-05)

🩹 Fixes

  • core: adjust versions for generator (746039b)

❤️ Thank You

  • nartc

3.0.0 (2025-01-05)

🚀 Features

  • ⚠️ core: remove NgtObjectEventsHostDirective short-cut (0ab2a6e)
  • core: promote core/testing to stable (d6c5421)
  • ⚠️ rapier: remove deprecated properties (be09add)
  • repo: migrate nx and angular (f91595c)
  • repo: bump peer deps (21a5f61)
  • ⚠️ soba: remove ngtspivotcontrols export from controls entry point (0db0b1e)

🩹 Fixes

  • core: routed scene should work (6e76304)
  • soba: set up an effect for setting position of gizmo instead (05ad6dc)

⚠️ Breaking Changes

  • rapier: remove erp from physics options
  • core: use host directive NgtObjectEvents explicitly
  • soba: use NgtsPivotControls from gizmos entry point

❤️ Thank You

  • nartc

2.14.0 (2025-01-02)

🚀 Features

  • repo: bump peer deps on angular (4027049)

🩹 Fixes

  • core: make sure camera and dpr is set correctly initially (ae5ec13)

❤️ Thank You

  • nartc

2.13.0 (2025-01-02)

🚀 Features

  • cannon: clean up cannon usages (23f00ca)
  • postprocessing: adjust postprocessing usages (da5de36)
  • postprocessing: make sure effect w/ ngt-primitive are disposed (e8510b9)
  • rapier: adjust rapier effect usages (3fcd150)
  • soba: adjust abstractions (5aa1b0c)
  • soba: adjust cameras (6b61706)
  • soba: controls (a88606b)
  • soba: gizmos (03dcfb8)
  • soba: loaders (b4690fc)
  • soba: materials (affed6c)
  • soba: misc (bf543ca)
  • soba: staging (3c18936)

🩹 Fixes

  • core: warn about 'routed' scenegraph (59db3ae)
  • core: adjust effect usage in core canvas (5e45354)

❤️ Thank You

  • nartc

2.12.0 (2024-12-02)

🚀 Features

  • core: deprecate outputs and inputs shortcut for ObjectEvents. Never worked (576eeaa)

🩹 Fixes

  • soba: explicit outputs for object events on rounded box (81ac40c)

❤️ Thank You

  • nartc

2.11.0 (2024-12-02)

🚀 Features

  • soba: apply objectEvents as host directive to RoundedBox (8cffded)

❤️ Thank You

  • nartc

2.10.7 (2024-12-02)

🩹 Fixes

  • soba: restart portal before render when priority changes in MeshPortalMaterial (55b3258)

❤️ Thank You

  • nartc

2.10.6 (2024-12-02)

🩹 Fixes

❤️ Thank You

  • nartc

2.10.5 (2024-12-02)

🩹 Fixes

❤️ Thank You

  • nartc

2.10.4 (2024-12-02)

🩹 Fixes

❤️ Thank You

  • nartc

2.10.3 (2024-12-02)

🩹 Fixes

  • soba: default blend to 0 for MeshPortalMaterial (daa64e4)

❤️ Thank You

  • nartc

2.10.2 (2024-12-02)

🩹 Fixes

  • soba: export new animations types as public api (00dd7db)

❤️ Thank You

  • nartc

2.10.1 (2024-12-02)

🩹 Fixes

  • soba: adjust injectAnimations to be more relaxed with animation clip typing (cca8a12)

❤️ Thank You

  • nartc

2.10.0 (2024-12-01)

🚀 Features

  • soba: add NgtsMeshPortalMaterial (use pmndrs/vanilla) (2baa76a)

🩹 Fixes

  • core: adjust NgtAttachable type to accept string | number array (for index) (447c3e1)
  • soba: add default params for injectFBO (2f2a551)

❤️ Thank You

  • nartc

2.9.0 (2024-11-30)

🚀 Features

  • cannon: bump peer dep to three 170 (3a09692)
  • core: bump peer dependency to three 170 (7493d8c)
  • postprocessing: bump peer dep to three 170 (694ca85)
  • rapier: bump peer dep to three 170 (b41385a)
  • soba: bump peer dep to three 170 and three csm to <6.3.0 (52b81f6)

❤️ Thank You

  • nartc

2.8.1 (2024-11-22)

🩹 Fixes

  • soba: address peer deps on three csm (0f155ad)

❤️ Thank You

  • nartc

2.8.0 (2024-11-14)

🚀 Features

  • postprocessing: bump peer deps (04f39dd)
  • soba: bump peer deps (d203556)

❤️ Thank You

  • nartc

2.7.0 (2024-11-01)

🚀 Features

  • core: upgrade ngxtension (with changes to resize) (07f1f1e)

❤️ Thank You

  • nartc

2.6.1 (2024-10-30)

🩹 Fixes

  • core: remove as const from object events inputs/outputs (f539c80)

❤️ Thank You

  • nartc

2.6.0 (2024-10-30)

🚀 Features

  • core: adjust internal types (dae630f)
  • rapier: deprecate erp; add contactNaturalFrequency (189be32)
  • soba: add injectFBX (8a6c79a)

🩹 Fixes

  • core: expose inputs and outputs array for NgtObjectEvents (6d3e0ed)

❤️ Thank You

  • nartc

2.5.2 (2024-10-26)

🩹 Fixes

  • core: check for uuid before comparing uuid in instance store (8e1617a)

💅 Refactors

  • core: use DOM_PARENT constant for ngt_dom_parent (800bc6d)

❤️ Thank You

  • nartc

2.5.1 (2024-09-30)

🩹 Fixes

  • plugin: bump generators versions (572477d)
  • rapier: do not track entire options object in rigid body colliders options (8c7915a)
  • soba: bump dependencies version (1c9b7cb)

❤️ Thank You

  • nartc

2.5.0 (2024-09-30)

🚀 Features

🩹 Fixes

  • core: use findIndex instead of indexOf in instance add new object (0ae843f)
  • soba: use textGeometry in effect for text3d (eaa2d17)

❤️ Thank You

  • nartc

2.4.0 (2024-09-29)

🚀 Features

  • use ngxtension (f785e1d)
  • add select to storeApi (9d5da39)
  • adjust migration (04d2924)
  • core: generate core (e1cf6c7)
  • core: upgrade nx (c3bbc46)
  • core: add experience generation (beta) (650eb26)
  • core: update nx (27ca571)
  • core: bump three 0.156 (3f847ef)
  • core: update nx (3e55988)
  • core: update ngxtension (f3bbd0c)
  • core: add selection api (NgtSelection and NgtSelect) (b3c2071)
  • core: add hexify pipe to convert various color values to hex-number (0xRRGGBBAA format) (0f2c63a)
  • core: add NgtObjectEvents directive to pass-through pointer event system (e0b575f)
  • core: add injectNonNullish$ (2eec63b)
  • core: allow raycast to accept null and assign () => null for null raycasting (44b24e8)
  • core: init nativescript entry point (413a60c)
  • core: first nativescript entry point release (8864e0b)
  • plugin: update init-soba generator to add metadata.json (6009ca0)
  • plugin: update plugin to the latest (b13ef25)
  • plugin: add soba generator (591e95a)
  • plugin: wip gltf generator (08a7baa)
  • postprocessing: add outline effect and demo (30f70ba)
  • postprocessing: add n8ao as an entry point; add tonemapping (7c73755)
  • rapier: add rapier (ff76de7)
  • rapier: add rapier (#54)
  • ⚠️ rapier: support fallback content when physics fails to load RAPIER wasm (8f336df)
  • soba: add instances (e118791)
  • soba: gizmo (8ac565c)
  • soba: allow set global decoder path (cbe0cc4)
  • soba: point material (c57dcea)
  • soba: add scale factor calculation for pivot controls (1d00903)
  • soba: add pivot controls (2729b57)
  • soba: add billboard (91c51cf)
  • soba: add NgtsMask (a60e3b7)
  • soba: add transform controls (faf6867)
  • soba: gen gizmos entry; move PivotControls and TransformControls into gizmos (9e82df2)
  • soba: add gizmo helpers (f99d043)

🩹 Fixes

  • migration migrates all the times (83ca9c6)
  • make sure to install ngxtension (6ee16a7)
  • adjust version of ngxtension (7c5b54a)
  • only get state if it's available (33aa00f)
  • ⚠️ cannon: unwrap afterNextRender from injectBody and injectConstraint (676aa16)
  • cannon: update peer deps (fc7ab35)
  • cannon: remove autoEffect in physics (7ecfb3f)
  • cannon: clean up physics (f8973c4)
  • core: make sure renderer work correctly for two DOMs elements that might contain THREE children (b1987ba)
  • core: only proceed with append logic for DOMs if render state is available (5a56e6d)
  • core: adjust createAttachFn positional type arguments (b65fe57)
  • core: adjust experience generator (fad08f6)
  • core: adjust generator sourceRoot (701b7c9)
  • core: adjust tsqueyr usage for generator (2d16772)
  • core: make sure escape template tag for generation (6a702d6)
  • core: use correct syntax for substitution generate files (4194370)
  • core: adjust template for experience component to include angular-three imports (1249f0f)
  • core: force standalone for experience generation (2b4c9fa)
  • core: rename assertInjectionContext to assertInjector (79c68aa)
  • core: update type for afterAttach (3b01ce5)
  • core: clean up ngt ref (1125c86)
  • core: fix core type for loader (9c741ea)
  • core: adjust nested effects (59f0dda)
  • core: update package target to build plugin last (1bf5884)
  • core: adjust import for selection (b118e47)
  • core: change the way NgtSelect works (50f0cea)
  • core: simplify NgtSelection API with exposing single method update (9fce320)
  • core: return early if there is namespace during createElement (610d56f)
  • core: comment out update matrix automatically (2f813fa)
  • core: use noinfer for TData on loader's onLoad (536aa05)
  • core: account for when parent is null in removeChild (08c27e5)
  • core: double check for falsy parent in removeChild (5f1a36d)
  • core: adjust removeChild logic to get THREE parent first before getting renderer parent (d97d48d)
  • core: bail if parent is null in removeChild but do clean up if there's internal child (2691fd0)
  • core: call signal for parent() in remove child (ca711d7)
  • core: handle NgtAttachFunction for ngt-value as well (b1d1006)
  • core: adjust onLoad parameter type (fd37f28)
  • core: use optional chaining for localState parent since it can be null (5eff54a)
  • core: assert any for $event (7b54fae)
  • core: use onReady event from Canvas NS (93dafef)
  • core: set size for gl in native (a560270)
  • core: optional chaining on renderer state as it can be null during nullifying state of previous object downstream (f42a9fe)
  • core: clean up NgtObjectEvents; do not use afterNextRender in injectObjectEvents (1fcf43a)
  • ⚠️ core: unwrap afterNextRender in injectLoader (d57d1cc)
  • core: adjust add soba generator to remove dup three mesh bvh peerdep (c3b68e2)
  • core: adjust loader to bail on only falsy url when multiple urls are passed in (67a6d2c)
  • core: update peer deps (ef92608)
  • core: ensure three native events (w/ EventDispatcher) work properly (2a0edd6)
  • core: assign intermediate ref to the parent store for non-three instance during applyProps (6fb9294)
  • core: add output emitter ref utilities (1457ce7)
  • core: make sure add method is available before calling (92af0e9)
  • core: use effect directly for selection (19cd21e)
  • core: clean up loader; remove allowSignalWrites in injectLoader (3c074c5)
  • core: clean up args; (86d31aa)
  • core: add geometryStamp to ngt instance (2cf9113)
  • core: adjust object events; remove afterNextRender (63d6e74)
  • core: remove autoEffect in canvas (94834a6)
  • core: clean up portal; remove autoEffect (6ad06e1)
  • core: add geometryStamp and updateGeometryStamp to types (4c730bb)
  • core: check setClearAlpha before calling (33ba160)
  • plugin: change init logic for geenrating experience (8a14c89)
  • plugin: miss a typo (994eb99)
  • plugin: trim the template when in append experience mode (2fccad0)
  • plugin: fix peer dependencies prompt for add-soba (07eca89)
  • plugin: only add metadata json path to vscode settings if it's not there (cafcf51)
  • plugin: try using esnext (2600c9e)
  • plugin: adjust add-soba generator to make sure all peer deps are installed properly (caf58a6)
  • plugin: add missing peer dep to collection (3d6362c)
  • plugin: bump threejs version (18b9a9e)
  • postprocessing: update peer deps (4d5ee21)
  • postprocessing: remove afterNextRender and autoEffect (4d0918d)
  • rapier: clean up framestepper; remove afterNextRender and autoEffect (0e27857)
  • rapier: auto colliders should still work if physicsColliders is false BUT colliders is set (07ecec0)
  • rapier: clean up rapier (9cda37b)
  • repo: align peer dependencies ranges to better control them (bcebf76)
  • soba: extend InstancedBufferAttribute (e39cdb2)
  • soba: attempt to use args for instanced buffer attribute (6862a07)
  • soba: reverse occlusion logic in HTML (17c5123)
  • soba: use texture params for progressive light maps (72fef8c)
  • soba: ensure default intensity for accumulative shadows is taking legacy lights into account (89f060f)
  • soba: add content projection for orbit controls (8a6526c)
  • soba: clean up cube camera (ce60420)
  • soba: make fbo return a Signal instead of NgtInjectedRef (6160a2e)
  • soba: clean up trail texture (e8a94c2)
  • soba: make ngtsTrail return a Signal instead of NgtInjectedRef (5d30c3a)
  • soba: match MeshTransmissionMaterial with Drei (0d09a28)
  • soba: clean up animations (90545c6)
  • soba: clean up sampler (d7426b7)
  • soba: use valid angular for caustics (70f4f32)
  • soba: adjust type for all attach input to NgtAttachable (02bbc13)
  • soba: rename directive selectors to camel case instead of kebab (ce1d543)
  • soba: adjust contact shadows (aa3d022)
  • soba: fix options type for helper (f8f93a5)
  • soba: adjust type for gltfloader onLoad and allows preLoad to pass in onLoad (7d0ad62)
  • soba: attempt to use commonjs with loadEsmModule (78060c0)
  • soba: another attempt to load injectGLTF (02ccc26)
  • soba: test gltf generator (8d4c75d)
  • soba: remove gltf generator (gonna make a separate CLI instead) (ab1603a)
  • soba: another attempt with gltf generator using node-three-gltf (5095308)
  • soba: remove gltf generator again (08dbc31)
  • ⚠️ soba: unwrap afterNextRender in injectHelper (537be01)
  • ⚠️ soba: unwrap afterNextRender in injectFBO, injectIntersect, and injectSurfaceSampler (0599c1a)
  • ⚠️ soba: unwrap afterNextRender in injectEnvironment and injectNormalTexture (47dba57)
  • soba: clean up injectAnimations (c52b925)
  • ⚠️ soba: unwrap afterNextRender in injectAnimations (c325c92)
  • soba: update peer deps (92e0e05)
  • soba: adjust orbit controls event type (877d006)
  • soba: add attach input to prism geometry (dc83f8b)
  • soba: bump pmndrs/vanilla version (2599568)
  • soba: add preload and clear to injectEnvironment (395d6bf)
  • soba: track parent nonObjects before creating decal (0091a6f)
  • soba: clean up sampler; use computed instead of setting signals in effect (f5262bc)
  • soba: also register nonObjects() for center (so geometries can be taken into account) (71d4c2c)
  • soba: clean up environment; use effect more effectively (no pun) (a8e2966)
  • soba: clean up sampler even more (88fbae4)
  • soba: clean up a lot of afterNextRender / autoEffect (d41fc91)
  • soba: clean up sampler returning the computed directly (f33136c)
  • soba: fix type for viewcube (749b97b)

💅 Refactors

  • cannon: adjust injectBody (be14df8)
  • core: use VCR from canvas element instead of host (f739b89)
  • core: nullify the ngt_dom_parent for HTML component (57c0568)
  • core: use DebugNode instead of getDebugNode (7f39e5c)
  • core: remove unnecessary untracked in noZoneRender (af5e8c6)
  • core: clean up canvas and portal (709d259)
  • core: improve hexify performance with internal instance cache (8290542)
  • soba: adjust shader material to not spread on uniforms (bbd747f)
  • soba: extract THREE.REVISION to a constant (c6a253c)
  • soba: simplify contact shadows; multiply frames to workaround race cond (224ef16)
  • soba: simplify render texture template (7a9c2be)
  • soba: use raycast=null instead of nullRaycast (c92c021)

⚠️ Breaking Changes

  • rapier: in order to support fallback content, physics content
  • cannon: This is considered a breaking change because of change
  • core: this is considered a breaking change because of timing
  • soba: this is considered a breaking change because of timing
  • soba: this is considered a breaking change because of timing
  • soba: this is considered a breaking change because of timing
  • ⚠️ soba: unwrap afterNextRender in injectAnimations (c325c92)

❤️ Thank You

  • Chau Tran
  • nartc

2.0.0-beta.41 (2023-10-04)

Features

2.0.0-beta.40 (2023-09-27)

Bug Fixes

  • core: fix core type for loader (9c741ea)

2.0.0-beta.39 (2023-09-26)

Features

2.0.0-beta.38 (2023-09-22)

Bug Fixes

  • core: clean up ngt ref (1125c86)
  • soba: clean up animations (90545c6)
  • soba: clean up cube camera (ce60420)
  • soba: clean up sampler (d7426b7)
  • soba: clean up trail texture (e8a94c2)
  • soba: make fbo return a Signal instead of NgtInjectedRef (6160a2e)
  • soba: make ngtsTrail return a Signal instead of NgtInjectedRef (5d30c3a)
  • soba: match MeshTransmissionMaterial with Drei (0d09a28)
  • soba: use valid angular for caustics (70f4f32)

Documentations

2.0.0-beta.37 (2023-09-19)

Bug Fixes

  • only get state if it's available (33aa00f)

2.0.0-beta.36 (2023-09-18)

2.0.0-beta.35 (2023-09-18)

Bug Fixes

  • adjust version of ngxtension (7c5b54a)

2.0.0-beta.34 (2023-09-18)

Bug Fixes

  • make sure to install ngxtension (6ee16a7)

2.0.0-beta.33 (2023-09-18)

Bug Fixes

  • migration migrates all the times (83ca9c6)

2.0.0-beta.32 (2023-09-18)

2.0.0-beta.31 (2023-09-18)

Features

2.0.0-beta.30 (2023-09-15)

Features

2.0.0-beta.29 (2023-09-09)

Features

Documentations

  • soba: adjust lightings on some stories (fb7f24b)
  • soba: remove useLegacyLights from accumulative shadows story (909f661)

2.0.0-beta.28 (2023-09-08)

Bug Fixes

  • core: update type for afterAttach (3b01ce5)
  • soba: add content projection for orbit controls (8a6526c)

Documentations

  • soba: add mesh transmission material story (b138255)

2.0.0-beta.27 (2023-09-06)

Features

  • core: update nx (27ca571)
  • soba: allow set global decoder path (cbe0cc4)

Bug Fixes

  • core: rename assertInjectionContext to assertInjector (79c68aa)
  • soba: ensure default intensity for accumulative shadows is taking legacy lights into account (89f060f)
  • soba: use texture params for progressive light maps (72fef8c)

2.0.0-beta.26 (2023-08-30)

Bug Fixes

  • core: force standalone for experience generation (2b4c9fa)

2.0.0-beta.25 (2023-08-29)

Bug Fixes

  • core: adjust template for experience component to include angular-three imports (1249f0f)

2.0.0-beta.24 (2023-08-29)

Bug Fixes

  • core: use correct syntax for substitution generate files (4194370)

2.0.0-beta.23 (2023-08-29)

Bug Fixes

  • core: make sure escape template tag for generation (6a702d6)

2.0.0-beta.22 (2023-08-29)

Bug Fixes

  • core: adjust tsqueyr usage for generator (2d16772)

2.0.0-beta.21 (2023-08-29)

Bug Fixes

  • core: adjust generator sourceRoot (701b7c9)

2.0.0-beta.20 (2023-08-29)

Bug Fixes

  • core: adjust experience generator (fad08f6)

2.0.0-beta.19 (2023-08-29)

Features

  • core: add experience generation (beta) (650eb26)

2.0.0-beta.18 (2023-08-28)

Features

Bug Fixes

  • soba: reverse occlusion logic in HTML (17c5123)

Documentations

2.0.0-beta.17 (2023-08-23)

Bug Fixes

  • core: adjust createAttachFn positional type arguments (b65fe57)

Documentations

  • adjust sandbox app component (15b0a27)

2.0.0-beta.16 (2023-08-16)

Features

  • plugin: update init-soba generator to add metadata.json (6009ca0)

2.0.0-beta.15 (2023-08-16)

Documentations

2.0.0-beta.14 (2023-08-15)

Bug Fixes

  • soba: attempt to use args for instanced buffer attribute (6862a07)

2.0.0-beta.13 (2023-08-15)

Bug Fixes

  • soba: extend InstancedBufferAttribute (e39cdb2)

2.0.0-beta.12 (2023-08-15)

Features

2.0.0-beta.11 (2023-08-15)

Features

Bug Fixes

  • core: only proceed with append logic for DOMs if render state is available (5a56e6d)

2.0.0-beta.10 (2023-08-15)

Bug Fixes

  • core: make sure renderer work correctly for two DOMs elements that might contain THREE children (b1987ba)

2.0.0-beta.9 (2023-08-15)

2.0.0-beta.8 (2023-08-14)

Features