Skip to content

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

0.52.0 (2024-11-11)

Features

  • BatchedText: Support remaining visual properties (60c5e93)

0.51.1 (2024-11-11)

Bug Fixes

  • troika-worker-utils: Avoid no-workers log errors when forcing main thread (d396e51), closes #337

0.51.0 (2024-11-10)

Bug Fixes

  • BatchedText: Fix texel read for taller data texture (57f3b0b)
  • troika-three-text: Fix error when first character is whitespace #313 (f71679e)

Features

  • BatchedText: support fillOpacity, and color now sets the diffuse uniform (8f83424)
  • troika-three-text: Add config to disable web worker (86023ec), closes #337
  • troika-worker-utils: Add a handle to force running worker modules on main thread (4f8bc13)

0.50.3 (2024-11-01)

Bug Fixes

  • ensure high precision sampling of batched text data texture (f8bd307)
  • Error in derived materials in Three r170 (2402026)

0.50.2 (2024-10-21)

Bug Fixes

  • troika-three-text: BatchedText: increase number of batch members (449957d)
  • BatchedText3DFacade: child texts now trigger renders on update (f2c6e0d)

0.50.1 (2024-10-12)

Bug Fixes

  • troika-three-text: fix error when using BatchedText material color (7f8c845)
  • troika-three-text: remove DoubleSide double draw hack in favor of forceSinglePass flag (7818d05)

0.50.0 (2024-10-11)

Bug Fixes

  • troika-three-utils: add colorspace_fragment (introduced in Three r154) to the list of fragment shaders to process in upgradeShaders() (#325) (9169ebf)
  • change JSDoc for createDerivedMaterial params to be optional (#307) (6969e85)

Features

  • troika-three-text: allow overriding text material derivation (9a48e0c)
  • troika-three-text: ALPHA: BatchedText for batching many Text instances in a single draw call (79c9c50)
  • troika-three-utils: add isDerivedFrom method to derived materials (a4a2fcd)

0.49.1 (2024-04-09)

Bug Fixes

  • instanced-uniforms-mesh: remove listener on dispose (#284) (336075d)
  • troika-three-text: Fix anchorY bottom-baseline. Closes #309 (3457b03)

0.49.0 (2023-10-08)

Bug Fixes

  • support opentype ccmp substitutions (glyph compositions) (1e358b2)

Features

  • add support for positioning of diacritic marks (e.g. Thai) (301c34c)

0.48.1 (2023-10-02)

Bug Fixes

  • improve font resolution in CJK (8d9ac64)
  • korean/japanese fonts now resolve correctly (207a5e0)

0.48.0 (2023-09-09)

Features

  • troika-three-text: add fallback font loading for full Unicode support (#279) (6fb8061), closes #13 #65

0.47.2 (2023-05-15)

Bug Fixes

  • troika-three-utils: pass renderer argument to base material's onBeforeCompile (3a23a8e)
  • troika-three-utils: vertexTransform now handles MAP_UV token introduced in Three r152 (d8c32ed)

0.47.1 (2022-12-15)

Bug Fixes

  • troika-three-text: update Typr.ts to get kerning fix (#228) (a45db5d)

0.47.0 (2022-12-15)

Bug Fixes

  • add compatibility up to ThreeJS r127 (03640a0)
  • troika-three-text: remove IIFEs for tree-shaking (#224) (2e688f0)
  • Remove incomplete ShaderFloatArray utility to fix build (ddf712a)
  • troika-three-text: include lineGap value from the font in 'normal' line-height calculation (c278118)
  • troika-three-text: update Typr to fix doubled kerning in some fonts (#196) (1fab9a2)
  • troika-three-text: use sTypoAscender/Descender from OS/2 font table if available (f5c244c)
  • troika-three-text: work around Safari<15 bug using SDF canvas as a texture (#199) (fca9aae)

Features

  • raise three min version to r125 and fix BufferGeometry references (#225) (f2ef803)
  • three-instanced-uniforms-mesh: add typescript definition file (#217) (cef3564)
  • troika-three-text: add 'top-cap' and 'top-ex' as keywords for anchorY (#193) (c6a10ae)
  • troika-three-text: include capHeight and xHeight font metrics in textRenderInfo (3459fd5)
  • troika-three-text: remove deprecated totalBounds/totalBlockSize properties from textRenderInfo (2b87308)
  • remove custom Thenable polyfill in favor of native promises (7af402e)
  • troika-three-text: remove long-deprecated anchor array property (752e302)

0.46.3 (2022-03-11)

Bug Fixes

  • troika-three-text: update Typr to fix doubled kerning in some fonts (#196) (080119a)

0.46.2 (2022-03-06)

Bug Fixes

  • troika-three-text: fix SDF texture resizing in Three r136+ (0fab679)

0.46.1 (2022-03-05)

Bug Fixes

0.46.0 (2022-03-05)

Features

  • troika-three-text: add a gpuAccelerateSDF property for opting out of webgl sdf generation (d436ffd)
  • troika-three-text: integrate webgl-sdf-generator for GPU-accelerated SDF generation (b5c9138)

0.45.0 (2022-01-02)

Bug Fixes

  • createDerivedMaterial: propagate the base material's customProgramCacheKey (9c8c6b1)

Features

  • troika-three-text: SDFs for all fonts are now stored in the same texture (7e871f7)

Performance Improvements

  • troika-three-text: avoid extra draw call on double sided materials as of Three r130 (6222ef3)
  • troika-three-text: make the glyphColors buffer transferable (c8c92fa)

0.44.0 (2021-11-14)

Bug Fixes

  • troika-three-text: fill in missing caret positions when the final glyph is a ligature - #165 (ad2eda6)

0.43.1-alpha.0 (2021-10-24)

Bug Fixes

  • troika-three-text: fix font parsing failures in iOS Safari (a542b42)

0.43.0 (2021-09-20)

Bug Fixes

  • InstancedUniformsMesh: reuse same derived material instance when uniform names change (bd7cea6), closes #154
  • remove warnings about many open worker module requests (164fb8f), closes #156

Features

  • troika-three-text: allow line wrapping after some common non-whitespace chars like hyphens (1b20e34), closes #136
  • troika-worker-utils: add a terminateWorker function (33b8455)
  • don't transpile UMD build files, fixing usage with Three.js r128 (e380b0d), closes #130

Performance Improvements

  • troika-three-text: parallelize SDF generation with multiple worker threads (c2bf886)

0.42.0 (2021-05-17)

Bug Fixes

  • add three to peerDependencies in all leaf packages (0a11ab6)

Features

  • open up 'three' peer dependency to include future versions (d4a5b23)

0.41.2 (2021-05-05)

Bug Fixes

  • update bidi-js for its ES5 build files (49ce5f2)

0.41.1 (2021-04-26)

Bug Fixes

  • update bidi-js for fix removing type:module from package.json (394c371)

0.41.0 (2021-04-19)

Bug Fixes

  • troika-core: set animation/transition first when using .update() (8ebf59d)
  • troika-three-text: fix Arabic word position letter forms (480ee97)
  • troika-three-text: formatting characters no longer produce visible glyphs (c0d28e8)
  • troika-three-text: more correct impl for character joining types (2ce519a)
  • troika-three-text: prevent mutation of input to worldPositionToTextCoords method (d487b8a)

Features

  • update support up to threejs r127 (5b512f0)
  • troika-three-text: add full bidi text support (3fde850)
  • troika-three-text: simple bidi layout support, using explicit LRO/RLO/PDF chars only (d511655)
  • troika-three-text: very basic support for right-to-left text layout (ce887be)

Performance Improvements

  • prune some unused functions out of the Typr build (26e669f)

0.40.0 (2021-02-28)

Bug Fixes

  • troika-three-text: fix boundingBox, boundingSphere, and raycasting with curveRadius (7cc7c82), closes #103

Features

  • troika-3d: add initThreeObject lifecycle method to Object3DFacade (230a87d)
  • troika-3d: remove need for manually defining material.instanceUniforms (a234f8c)

0.39.2 (2021-02-18)

Bug Fixes

  • troika-three-text: fix shader error in WebGL1 (cdbc7dc), closes #108

0.39.1 (2021-02-17)

Bug Fixes

  • troika-three-text: selection rects no longer clip off trailing whitespace (158305c), closes #78

0.39.0 (2021-02-15)

Bug Fixes

  • restore compatibility with three versions <0.113.0 by copying MathUtils.generateUUID (35856b5)

Features

  • troika-core: add requestRender method as nicer shortcut (c79254c)
  • troika-three-text: add curveRadius for applying cylindrical curvature (6fdfbbf)
  • troika-three-text: export a function for debugging SDF textures (3fb0c23)
  • troika-three-text: pack SDFs using all 4 color channels, to increase max glyphs in a texture (d236caf)
  • troika-xr: add basic TeleportControls (319ed29)

0.38.1 (2021-02-03)

Bug Fixes

  • hoist vertexTransform defs to top of the shader to prevent errors in chained derivations (889ed38)
  • update to support up to Three r125 (4edff04)
  • three-instanced-uniforms-mesh: prevent creation of multiple derived geometries (94a7f67)
  • three-instanced-uniforms-mesh: the derived material is now prototype-chained to its base (bf45d01)
  • troika-worker-utils: properly track open requests count (a01d903)
  • make derived material's customProgramCacheKey function writable (10289dd)
  • troika-three-text: prevent copy() from sharing geometry between instances (8c3ba2d)
  • add new text props to UI blocks (a2d631f)

0.38.0 (2021-01-24)

Bug Fixes

  • troika-three-text: allow negative percentages for outlineOffsetX/Y (3a274f0), closes #100

Features

  • move InstancedUniformsMesh to its own three-instanced-uniforms-mesh package (f623b1f)

0.37.0 (2021-01-18)

Features

  • troika-three-text: added inner stroke and outline blur capabilities (e004b9d)
  • add InstancedUniformsMesh class for setting shader uniforms per instance (5fd4d79)

Performance Improvements

  • troika-three-text: swap tiny-inflate to fflate for minor speed boost on woff fonts (2ae29fa)

0.36.1 (2020-12-16)

Bug Fixes

  • troika-three-text: soften Typr.ts console warnings to debug level (50d951f)
  • troika-xr: destroy WristMountedUI contents when hidden (5589ee2)

0.36.0 (2020-12-04)

Bug Fixes

  • fix font parser build scripts (e2d88fa)
  • prevent error in WristMountedUI when gripPose is null (755d560)
  • use combined frustum for XR camera, using setProjectionFromUnion from three.js (ff1b9ae)
  • troika-three-text: fix wrong caret position for collapsed ligature characters (f220035)

Features

  • troika-three-text: fix kerning by updating from Typr.js to Typr.ts (43144cf), closes #70

0.35.0 (2020-11-16)

Features

  • troika-xr: allow configuring framebufferScaleFactor, incl. ratios based on native (f63c160)
  • initial support for spring physics-based transitions (5e05bc8)

0.34.2 (2020-11-09)

Bug Fixes

  • troika-3d: prevent tree getting in bad state due to removal of orphanable children (8121425)
  • troika-three-text: dispose the outline material when the base material is disposed (68bd2c8)
  • troika-three-text: fix error when disposing the base material with outlines enabled (73a51f5)

0.34.1 (2020-10-20)

Bug Fixes

  • check for process env 'test' (4f7f8f2)
  • check if process is undefined (2b6d56a)

0.34.0 (2020-10-19)

Bug Fixes

  • troika-three-text: clipRect is no longer clamped to the text block's bounds (15edbd9)
  • troika-three-text: fix text baseline being positioned too low (596d8ca)
  • troika-worker-utils: pre-transpile the .esm build - issue #84 (98248b6)

Features

  • troika-three-text: expose blockBounds and visibleBounds in textRenderInfo (f3340ec)
  • troika-three-text: text outline and better antialiasing at small sizes (3836809)

Performance Improvements

  • micro-optimization of sdf texture insertion loop (995c2a6)

0.33.1 (2020-10-02)

Note: Version bump only for package troika

0.33.0 (2020-10-02)

Bug Fixes

  • add "sideEffects":false to package.json files to assist treeshaking (61109b2)
  • add PURE annotations to make troika-three-text treeshakeable (8e76b5c)
  • remove redundant "browser" and defunct "jsnext:main" fields from package.json files (0abec40)
  • troika-three-text: make color prop only apply to that instance when sharing a base material (da0f995)

Features

  • troika-three-text: modifications to the base material are now picked up automatically (fc81d3a)
  • troika-three-utils: add chained option to createDerivedMaterial (2bfaa9c)

0.32.0 (2020-09-16)

Bug Fixes

Features

  • added boundingBox calculation (140e9e8)

0.31.0 (2020-08-11)

Bug Fixes

  • troika-3d-ui: remove stray circular import (06be563)
  • move Three.js peerDependency from troika-3d to troika-three-utils (96b6fc8)

Features

  • troika-3d: expose some new props for scene background and color management (5209f66)

0.30.2 (2020-07-22)

Bug Fixes

0.30.1 (2020-07-19)

Bug Fixes

  • troika-3d-ui: fix inheritable props on text nodes, and add textIndent (0650c59)
  • troika-three-text: fix changing text length in ThreeJS r117+ (a7ef945), closes #69

0.30.0 (2020-07-16)

Bug Fixes

  • troika-worker-utils: decrease main thread message level from warn to log (d7cee6d)

Features

  • troika-three-text: add support for textIndent (b689c0c)
  • extract flexbox layout logic to a new troika-flex-layout package (1b52fc9), closes #53

0.29.0 (2020-07-06)

Bug Fixes

  • troika-three-utils: fix program switching when double-deriving materials (89ed2f8)
  • troika-xr: ensure correct initial transform of gltf objects on load (49287f3)

Features

  • troika-3d-text: add sdfGlyphSize option on TextMesh (978ef53), closes #58
  • troika-three-text: promote standalone text to a new troika-three-text package (995f2eb), closes #47

0.28.1 (2020-06-17)

Bug Fixes

  • troika-3d-text: don't dispose derived materials on base material switch (3d88475), closes #59
  • troika-3d-text: set correct object in TextMesh raycast intersections (9f3eaa7), closes #62

Performance Improvements

  • troika-three-utils: increase chance of program reuse in createDerivedMaterial (56daf65), closes #59

0.28.0 (2020-06-09)

Bug Fixes

  • troika-3d-text: fix cloning of TextMesh (13df49b), closes #60
  • troika-3d-text: prevent double-derivation of text material (ef8cffa), closes #59

Features

  • troika-3d-text: add glyphGeometryDetail parameter (1f7a11f), closes #52

0.27.1 (2020-06-05)

Bug Fixes

  • troika-3d-text: fix shader error when casting shadows from text (0c9277d)

0.27.0 (2020-06-02)

Bug Fixes

  • troika-3d-text: prevent error when transpiling down to es5 (7264b0c), closes #51

Features

  • troika-3d: add three.js r117 to supported version range (2761f39)
  • troika-core: add update convenience method to all facades (7403be1)
  • troika-examples: flexbox example: globe pokes through bg, add scrollable lists (074c620)

0.26.1 (2020-05-26)

Bug Fixes

  • troika-worker-modules: silence fallback warning in non-browser environments (3dedb8f)

0.26.0 (2020-05-24)

Bug Fixes

  • troika-3d-text: #46 fix error on script load when document not present (1b005ec)

Features

  • examples: add example showing a resizable flexbox layout (8f4d50d)
  • troika-3d-text: experimental colorRanges feature (c4971c3)
  • troika-worker-utils: add main thread fallback when web workers are not allowed (c754d0b)

0.25.0 (2020-05-19)

Bug Fixes

  • troika-3d: fix error in InstancingManager on uniforms with default value of 0 (8d2cc83)
  • troika-3d: fix errors due to excessively deep BoundingSphereOctrees (a4b5797), closes #42
  • troika-3d-text: avoid error if something tries to set textMaterial.shadowSide (c09a3c1)

Features

  • troika-3d-text: add events fired on text sync start and completion (3e7d4e0)
  • troika-3d-text: add original input parameters to textRenderInfo object (e1ef963)
  • troika-3d-text: publicly expose getCaretAtPoint and getSelectionRects functions (669b256)

Performance Improvements

  • troika-3d-text: improve speed of glyph SDF generation by ~15-20% (3718997)

0.24.1 (2020-05-04)

Bug Fixes

  • troika-3d-text: fix error parsing fonts with CFF glyph outlines; fixes #40 (0114ea6)

0.24.0 (2020-04-27)

Bug Fixes

  • troika-3d: default Plane and Circle primitives' side and shadowSide to DoubleSide (7704b0a)
  • troika-3d-text: change GlyphSegmentsQuadtree to not use class (7e4db6c)
  • troika-three-utils: allow use of the timeUniform within glsl functions (7354b9e)

Features

  • troika-3d-text: add preloadFont utility (acedd3c), closes #39
  • troika-3d-text: add enhanced anchorX and anchorY config properties (b58f7b9), closes #38
  • troika-3d-text: add some useful font metrics to textRenderInfo result (c7b14b8)

Performance Improvements

  • troika-3d-text: major speed/memory improvement in text layout (1b65b33)
  • troika-3d-text: micro optimizations in text layout (c786397)
  • troika-3d-text: optimize rendering of very long clipped text blocks (c66fbec)

0.23.0 (2020-04-16)

Bug Fixes

  • troika-3d-text: selection range rects now honor clipRect, and are instanced (ba86004)
  • troika-3d-ui: allow canceling drag-scroll behavior with e.preventDefault() (eca5f15)
  • troika-3d-ui: prevent sync of text nodes before flex layout finishes (4769cac)
  • troika-three-utils: fragmentColorTransform is now inserted prior to postprocessing chunks (97cd9ac), closes #20

Features

  • troika-3d-ui: add onAfterFlexLayoutApplied hook for FlexNodes (912f95c)
  • troika-3d-ui: allow overriding DatSelect dropdown styles/config (bf78e79)
  • troika-worker-modules: improve rehydration of functions in worker (8f63090), closes #31

Performance Improvements

  • troika-3d-ui: make bg/border layers instanced, and move clipping to vertex shader (f7526f4)

0.22.0 (2020-04-02)

Bug Fixes

  • examples: fix transparency of globe (8886bc1)
  • examples: make bezier material doublesided (163b3e0)
  • troika-3d-text: letterSpacing no longer applied after newlines (61cb4f8), closes #33
  • troika-xr: fix TargetRay transparency by rendering last w/o depth testing (045ec27)

Features

  • troika-3d-text: add 'orientation' parameter for defining default layout plane (f2c0c76), closes #34

Performance Improvements

  • troika-3d-text: move clipping logic from fragment to vertex shader (1accf78)
  • troika-xr: avoid full update pass every frame in WristMountedUI (4a4cd16)
  • troika-xr: avoid setting grip material colors every frame (d3f1246)

0.21.0 (2020-03-27)

Features

  • examples: beziers: add instanceable version of the beziers, and add point light option (0739f4d)
  • troika-3d: instancing now supports custom derived materials (bad5e02)
  • troika-3d: reduce instancing batch size to 128 (dc4bd8a)
  • troika-3d: update ThreeJS support up to r115 (531ff6a)
  • troika-three-utils: added new options for createDerivedMaterial (d67bb4a)
  • troika-three-utils: derived shadow material uniforms are now synced automatically (7843f23)

0.20.0 (2020-03-16)

Bug Fixes

  • troika-3d-ui: fix scrollbars sometimes appearing inappropriately (010be47)
  • troika-3d-ui: update children when first exiting clip rect (294f341)

Features

  • troika-3d-ui: allow dat-gui items to declare their own onUpdate (a707fd5)
  • troika-3d-ui: enable shadow casting by UI block bg/border layers (d2c056c)
  • troika-worker-utils: export function for stringifying functions (977634b)

Performance Improvements

  • skip updating children of inactive wrist-mounted ui (c1b93f1)

0.19.0 (2020-02-28)

Bug Fixes

  • troika-xr: disable buggy experimental clickOnPoke feature (46cff53)

Features

  • examples: example configurators are standardized and work in XR (cec6f63)
  • troika-xr: improved default target ray appearance (3798d9e)

0.19.0-alpha.0 (2020-02-22)

Bug Fixes

  • honor MeshFacade.autoDispose* when geometry or material changes (f478a47)

Features

  • add a CircleFacade primitive (d73ae87)
  • troika-3d-ui: add DatGuiFacade and supporting widgets (c463198)
  • troika-xr: add WristMountedUI component (74f5b10)

0.18.0 (2020-02-21)

Bug Fixes

  • the PlaneFacade's geometry now faces up (cb1bb1b)

Features

  • Add a set of facades for common primitive meshes, using shared geometries and with setters for builtin material properties. (d4b309b)
  • Add memoize function in utils (16efb01)
  • troika-3d: allow passing a Vector3 instance to getCameraPosition (f686483)

Last update: 2024-11-11