All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
0.52.2 (2024-11-21)
0.52.1 (2024-11-21)
- BatchedText: Fix removing text instances via .remove() (d99549f)
0.52.0 (2024-11-11)
- BatchedText: Support remaining visual properties (60c5e93)
0.51.1 (2024-11-11)
0.51.0 (2024-11-10)
- BatchedText: Fix texel read for taller data texture (57f3b0b)
- troika-three-text: Fix error when first character is whitespace #313 (f71679e)
- 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)
- ensure high precision sampling of batched text data texture (f8bd307)
- Error in derived materials in Three r170 (2402026)
0.50.2 (2024-10-21)
- 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)
- 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)
- troika-three-utils: add
colorspace_fragment
(introduced in Three r154) to the list of fragment shaders to process inupgradeShaders()
(#325) (9169ebf) - change JSDoc for createDerivedMaterial params to be optional (#307) (6969e85)
- 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)
- 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)
- support opentype ccmp substitutions (glyph compositions) (1e358b2)
- add support for positioning of diacritic marks (e.g. Thai) (301c34c)
0.48.1 (2023-10-02)
0.48.0 (2023-09-09)
- troika-three-text: add fallback font loading for full Unicode support (#279) (6fb8061), closes #13 #65
0.47.2 (2023-05-15)
- 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)
0.47.0 (2022-12-15)
- 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)
- 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)
0.46.2 (2022-03-06)
- troika-three-text: fix SDF texture resizing in Three r136+ (0fab679)
0.46.1 (2022-03-05)
- remove console.log (3518689)
0.46.0 (2022-03-05)
- 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)
- createDerivedMaterial: propagate the base material's customProgramCacheKey (9c8c6b1)
- troika-three-text: SDFs for all fonts are now stored in the same texture (7e871f7)
- 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)
- 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)
- troika-three-text: fix font parsing failures in iOS Safari (a542b42)
0.43.0 (2021-09-20)
- InstancedUniformsMesh: reuse same derived material instance when uniform names change (bd7cea6), closes #154
- remove warnings about many open worker module requests (164fb8f), closes #156
- 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
- troika-three-text: parallelize SDF generation with multiple worker threads (c2bf886)
0.42.0 (2021-05-17)
- add three to peerDependencies in all leaf packages (0a11ab6)
- open up 'three' peer dependency to include future versions (d4a5b23)
0.41.2 (2021-05-05)
- update bidi-js for its ES5 build files (49ce5f2)
0.41.1 (2021-04-26)
- update bidi-js for fix removing type:module from package.json (394c371)
0.41.0 (2021-04-19)
- 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)
- 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)
- prune some unused functions out of the Typr build (26e669f)
0.40.0 (2021-02-28)
- troika-three-text: fix boundingBox, boundingSphere, and raycasting with curveRadius (7cc7c82), closes #103
- 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)
0.39.1 (2021-02-17)
0.39.0 (2021-02-15)
- restore compatibility with three versions <0.113.0 by copying MathUtils.generateUUID (35856b5)
- 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)
- 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)
- move InstancedUniformsMesh to its own three-instanced-uniforms-mesh package (f623b1f)
0.37.0 (2021-01-18)
- troika-three-text: added inner stroke and outline blur capabilities (e004b9d)
- add InstancedUniformsMesh class for setting shader uniforms per instance (5fd4d79)
- troika-three-text: swap tiny-inflate to fflate for minor speed boost on woff fonts (2ae29fa)
0.36.1 (2020-12-16)
- 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)
- 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)
0.35.0 (2020-11-16)
- 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)
- 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)
0.34.0 (2020-10-19)
- 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)
- troika-three-text: expose blockBounds and visibleBounds in textRenderInfo (f3340ec)
- troika-three-text: text outline and better antialiasing at small sizes (3836809)
- 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)
- 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)
- 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)
- troika-three-utils: make derived material methods writable+configurable (4d4bfbc), closes react-spring/drei#121
- mutate boundingBox and set depth to 0 (1f9b6be)
- added boundingBox calculation (140e9e8)
0.31.0 (2020-08-11)
- troika-3d-ui: remove stray circular import (06be563)
- move Three.js peerDependency from troika-3d to troika-three-utils (96b6fc8)
- troika-3d: expose some new props for scene background and color management (5209f66)
0.30.2 (2020-07-22)
- troika-three-text: prevent unbound buffer errors when disposing a GlyphsGeometry (e860eac), closes #69 react-spring/drei#62
0.30.1 (2020-07-19)
- 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)
- troika-worker-utils: decrease main thread message level from warn to log (d7cee6d)
- 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)
- troika-three-utils: fix program switching when double-deriving materials (89ed2f8)
- troika-xr: ensure correct initial transform of gltf objects on load (49287f3)
- 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)
- 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
0.28.0 (2020-06-09)
- troika-3d-text: fix cloning of TextMesh (13df49b), closes #60
- troika-3d-text: prevent double-derivation of text material (ef8cffa), closes #59
0.27.1 (2020-06-05)
- troika-3d-text: fix shader error when casting shadows from text (0c9277d)
0.27.0 (2020-06-02)
- 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)
- troika-worker-modules: silence fallback warning in non-browser environments (3dedb8f)
0.26.0 (2020-05-24)
- 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)
- 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)
- 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)
- troika-3d-text: improve speed of glyph SDF generation by ~15-20% (3718997)
0.24.1 (2020-05-04)
0.24.0 (2020-04-27)
- 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)
- troika-3d-text: add
preloadFont
utility (acedd3c), closes #39 - troika-3d-text: add enhanced
anchorX
andanchorY
config properties (b58f7b9), closes #38 - troika-3d-text: add some useful font metrics to textRenderInfo result (c7b14b8)
- 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)
- 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
- troika-3d-ui: add onAfterFlexLayoutApplied hook for
FlexNode
s (912f95c) - troika-3d-ui: allow overriding DatSelect dropdown styles/config (bf78e79)
- troika-worker-modules: improve rehydration of functions in worker (8f63090), closes #31
- troika-3d-ui: make bg/border layers instanced, and move clipping to vertex shader (f7526f4)
0.22.0 (2020-04-02)
- 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)
- 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)
- 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)
- troika-3d-ui: fix scrollbars sometimes appearing inappropriately (010be47)
- troika-3d-ui: update children when first exiting clip rect (294f341)
- 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)
- skip updating children of inactive wrist-mounted ui (c1b93f1)
0.19.0 (2020-02-28)
- troika-xr: disable buggy experimental clickOnPoke feature (46cff53)
- 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)
- honor MeshFacade.autoDispose* when geometry or material changes (f478a47)
- 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)
- the PlaneFacade's geometry now faces up (cb1bb1b)