@lightningjs/renderer 3.0.0-beta3 → 3.0.0-beta4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/COPYING +1 -0
- package/LICENSE +202 -202
- package/NOTICE +3 -3
- package/README.md +147 -147
- package/dist/src/core/CoreNode.d.ts +3 -2
- package/dist/src/core/CoreNode.js +13 -7
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +2 -0
- package/dist/src/core/CoreTextNode.js +7 -0
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +2 -0
- package/dist/src/core/CoreTextureManager.js +7 -5
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +5 -0
- package/dist/src/core/Stage.js +10 -5
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +37 -0
- package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
- package/dist/src/core/platforms/Platform.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatform.d.ts +9 -0
- package/dist/src/core/platforms/web/WebPlatform.js +58 -0
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
- package/dist/src/core/renderers/CoreRenderer.d.ts +3 -1
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +3 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +86 -60
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +35 -35
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +45 -45
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +62 -62
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +6 -6
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +22 -22
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +28 -28
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +10 -10
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
- package/dist/src/core/shaders/webgl/Border.js +59 -59
- package/dist/src/core/shaders/webgl/Default.js +47 -47
- package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
- package/dist/src/core/shaders/webgl/HolePunch.js +32 -32
- package/dist/src/core/shaders/webgl/LinearGradient.js +36 -36
- package/dist/src/core/shaders/webgl/RadialGradient.js +33 -33
- package/dist/src/core/shaders/webgl/Rounded.js +71 -71
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +66 -66
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +79 -79
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +54 -54
- package/dist/src/core/shaders/webgl/SdfShader.js +62 -62
- package/dist/src/core/shaders/webgl/Shadow.js +83 -83
- package/dist/src/core/temp.js +77 -0
- package/dist/src/core/temp.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +5 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +50 -2
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +6 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +66 -8
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +13 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +3 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +1 -0
- package/dist/src/core/textures/ImageTexture.js +5 -3
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +9 -2
- package/dist/src/core/textures/Texture.js +18 -6
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +12 -0
- package/dist/src/main-api/Renderer.js +14 -2
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/canvas-shaders.ts +28 -28
- package/exports/canvas.ts +45 -45
- package/exports/index.ts +90 -90
- package/exports/inspector.ts +24 -24
- package/exports/utils.ts +44 -44
- package/exports/webgl-shaders.ts +28 -28
- package/exports/webgl.ts +50 -50
- package/package.json +1 -2
- package/scripts/please-use-pnpm.js +13 -13
- package/src/common/CommonTypes.ts +146 -146
- package/src/common/EventEmitter.ts +77 -77
- package/src/common/IAnimationController.ts +92 -92
- package/src/common/IEventEmitter.ts +28 -28
- package/src/core/CoreNode.test.ts +203 -203
- package/src/core/CoreNode.ts +2494 -2486
- package/src/core/CoreShaderManager.ts +188 -188
- package/src/core/CoreTextNode.ts +448 -439
- package/src/core/CoreTextureManager.ts +601 -597
- package/src/core/Stage.ts +754 -738
- package/src/core/TextureMemoryManager.ts +395 -395
- package/src/core/animations/AnimationManager.ts +38 -38
- package/src/core/animations/CoreAnimation.ts +284 -284
- package/src/core/animations/CoreAnimationController.ts +157 -157
- package/src/core/lib/ContextSpy.ts +41 -41
- package/src/core/lib/ImageWorker.ts +280 -280
- package/src/core/lib/Matrix3d.ts +244 -244
- package/src/core/lib/RenderCoords.ts +71 -71
- package/src/core/lib/WebGlContextWrapper.ts +1374 -1374
- package/src/core/lib/textureCompression.ts +152 -152
- package/src/core/lib/textureSvg.ts +78 -78
- package/src/core/lib/utils.ts +386 -386
- package/src/core/lib/validateImageBitmap.ts +87 -76
- package/src/core/platform.ts +64 -64
- package/src/core/platforms/Platform.ts +77 -0
- package/src/core/platforms/web/WebPlatform.ts +84 -0
- package/src/core/renderers/CoreContextTexture.ts +43 -43
- package/src/core/renderers/CoreRenderOp.ts +22 -22
- package/src/core/renderers/CoreRenderer.ts +109 -107
- package/src/core/renderers/CoreShaderNode.ts +165 -165
- package/src/core/renderers/CoreShaderProgram.ts +23 -23
- package/src/core/renderers/canvas/CanvasRenderer.ts +298 -298
- package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -99
- package/src/core/renderers/canvas/CanvasTexture.ts +156 -156
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +220 -220
- package/src/core/renderers/canvas/internal/ColorUtils.ts +85 -85
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +86 -86
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -50
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +301 -301
- package/src/core/renderers/webgl/WebGlRenderOp.ts +161 -161
- package/src/core/renderers/webgl/WebGlRenderer.ts +750 -720
- package/src/core/renderers/webgl/WebGlShaderNode.ts +437 -437
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +318 -318
- package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
- package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -281
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
- package/src/core/shaders/canvas/Border.ts +78 -78
- package/src/core/shaders/canvas/HolePunch.ts +62 -62
- package/src/core/shaders/canvas/LinearGradient.ts +69 -69
- package/src/core/shaders/canvas/RadialGradient.ts +113 -113
- package/src/core/shaders/canvas/Rounded.ts +55 -55
- package/src/core/shaders/canvas/RoundedWithBorder.ts +68 -68
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -88
- package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -69
- package/src/core/shaders/canvas/Shadow.ts +52 -52
- package/src/core/shaders/canvas/utils/render.ts +151 -151
- package/src/core/shaders/templates/BorderTemplate.ts +115 -115
- package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
- package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
- package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -81
- package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
- package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
- package/src/core/shaders/templates/shaderUtils.ts +47 -47
- package/src/core/shaders/webgl/Border.ts +96 -96
- package/src/core/shaders/webgl/Default.ts +89 -89
- package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
- package/src/core/shaders/webgl/HolePunch.ts +78 -78
- package/src/core/shaders/webgl/LinearGradient.ts +81 -81
- package/src/core/shaders/webgl/RadialGradient.ts +84 -84
- package/src/core/shaders/webgl/Rounded.ts +117 -117
- package/src/core/shaders/webgl/RoundedWithBorder.ts +114 -114
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +133 -133
- package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -98
- package/src/core/shaders/webgl/SdfShader.ts +134 -134
- package/src/core/shaders/webgl/Shadow.ts +115 -115
- package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
- package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
- package/src/core/text-rendering/TrFontManager.ts +183 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -176
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -94
- package/src/core/text-rendering/font-face-types/utils.ts +39 -39
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +514 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +863 -815
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +846 -840
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +497 -408
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +567 -550
- package/src/core/textures/ColorTexture.ts +102 -102
- package/src/core/textures/ImageTexture.ts +410 -399
- package/src/core/textures/NoiseTexture.ts +104 -104
- package/src/core/textures/RenderTexture.ts +85 -85
- package/src/core/textures/SubTexture.ts +205 -205
- package/src/core/textures/Texture.ts +358 -337
- package/src/core/utils.ts +227 -227
- package/src/env.d.ts +7 -7
- package/src/main-api/INode.ts +100 -100
- package/src/main-api/Inspector.ts +522 -522
- package/src/main-api/Renderer.ts +675 -649
- package/src/main-api/utils.ts +45 -45
- package/src/utils.ts +267 -267
- package/dist/exports/core-api.d.ts +0 -74
- package/dist/exports/core-api.js +0 -96
- package/dist/exports/core-api.js.map +0 -1
- package/dist/exports/main-api.d.ts +0 -30
- package/dist/exports/main-api.js +0 -45
- package/dist/exports/main-api.js.map +0 -1
- package/dist/src/core/CoreExtension.d.ts +0 -12
- package/dist/src/core/CoreExtension.js +0 -29
- package/dist/src/core/CoreExtension.js.map +0 -1
- package/dist/src/core/CoreStuff.js +0 -138
- package/dist/src/core/CoreStuff.js.map +0 -1
- package/dist/src/core/CoreTexturizer.d.ts +0 -14
- package/dist/src/core/CoreTexturizer.js +0 -47
- package/dist/src/core/CoreTexturizer.js.map +0 -1
- package/dist/src/core/LngNode.d.ts +0 -736
- package/dist/src/core/LngNode.js +0 -1174
- package/dist/src/core/LngNode.js.map +0 -1
- package/dist/src/core/Matrix2DContext.d.ts +0 -15
- package/dist/src/core/Matrix2DContext.js +0 -45
- package/dist/src/core/Matrix2DContext.js.map +0 -1
- package/dist/src/core/ShaderNode.d.ts +0 -10
- package/dist/src/core/ShaderNode.js +0 -30
- package/dist/src/core/ShaderNode.js.map +0 -1
- package/dist/src/core/TextNode.d.ts +0 -103
- package/dist/src/core/TextNode.js +0 -331
- package/dist/src/core/TextNode.js.map +0 -1
- package/dist/src/core/lib/Coords.d.ts +0 -14
- package/dist/src/core/lib/Coords.js +0 -55
- package/dist/src/core/lib/Coords.js.map +0 -1
- package/dist/src/core/lib/glm/common.d.ts +0 -162
- package/dist/src/core/lib/glm/common.js +0 -81
- package/dist/src/core/lib/glm/common.js.map +0 -1
- package/dist/src/core/lib/glm/index.d.ts +0 -11
- package/dist/src/core/lib/glm/index.js +0 -30
- package/dist/src/core/lib/glm/index.js.map +0 -1
- package/dist/src/core/lib/glm/mat2.d.ts +0 -219
- package/dist/src/core/lib/glm/mat2.js +0 -396
- package/dist/src/core/lib/glm/mat2.js.map +0 -1
- package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
- package/dist/src/core/lib/glm/mat2d.js +0 -442
- package/dist/src/core/lib/glm/mat2d.js.map +0 -1
- package/dist/src/core/lib/glm/mat3.d.ts +0 -283
- package/dist/src/core/lib/glm/mat3.js +0 -680
- package/dist/src/core/lib/glm/mat3.js.map +0 -1
- package/dist/src/core/lib/glm/mat4.d.ts +0 -550
- package/dist/src/core/lib/glm/mat4.js +0 -1802
- package/dist/src/core/lib/glm/mat4.js.map +0 -1
- package/dist/src/core/lib/glm/quat.d.ts +0 -363
- package/dist/src/core/lib/glm/quat.js +0 -693
- package/dist/src/core/lib/glm/quat.js.map +0 -1
- package/dist/src/core/lib/glm/quat2.d.ts +0 -356
- package/dist/src/core/lib/glm/quat2.js +0 -754
- package/dist/src/core/lib/glm/quat2.js.map +0 -1
- package/dist/src/core/lib/glm/vec2.d.ts +0 -365
- package/dist/src/core/lib/glm/vec2.js +0 -569
- package/dist/src/core/lib/glm/vec2.js.map +0 -1
- package/dist/src/core/lib/glm/vec3.d.ts +0 -406
- package/dist/src/core/lib/glm/vec3.js +0 -720
- package/dist/src/core/lib/glm/vec3.js.map +0 -1
- package/dist/src/core/lib/glm/vec4.d.ts +0 -330
- package/dist/src/core/lib/glm/vec4.js +0 -608
- package/dist/src/core/lib/glm/vec4.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
- package/dist/src/core/renderers/CoreShaderManager.js +0 -33
- package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
- package/dist/src/core/scene/Scene.d.ts +0 -59
- package/dist/src/core/scene/Scene.js +0 -106
- package/dist/src/core/scene/Scene.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
- package/dist/src/main-api/ICoreDriver.d.ts +0 -27
- package/dist/src/main-api/ICoreDriver.js +0 -20
- package/dist/src/main-api/ICoreDriver.js.map +0 -1
- package/dist/src/main-api/IRenderDriver.d.ts +0 -20
- package/dist/src/main-api/IRenderDriver.js.map +0 -1
- package/dist/src/main-api/IShaderController.d.ts +0 -14
- package/dist/src/main-api/IShaderController.js +0 -30
- package/dist/src/main-api/IShaderController.js.map +0 -1
- package/dist/src/main-api/IShaderNode.d.ts +0 -17
- package/dist/src/main-api/IShaderNode.js +0 -19
- package/dist/src/main-api/IShaderNode.js.map +0 -1
- package/dist/src/main-api/RendererMain.d.ts +0 -375
- package/dist/src/main-api/RendererMain.js +0 -365
- package/dist/src/main-api/RendererMain.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
- package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
- package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
- package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
- package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
- package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
- package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
- package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
- package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
- package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
- package/dist/src/render-drivers/utils.d.ts +0 -12
- package/dist/src/render-drivers/utils.js +0 -69
- package/dist/src/render-drivers/utils.js.map +0 -1
- /package/dist/src/core/{CoreStuff.d.ts → temp.d.ts} +0 -0
|
@@ -1,754 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
import { EPSILON, getMatrixArrayType, } from './common.js';
|
|
20
|
-
import * as quat from './quat.js';
|
|
21
|
-
import * as mat4 from './mat4.js';
|
|
22
|
-
/**
|
|
23
|
-
* Dual Quaternion<br>
|
|
24
|
-
* Format: [real, dual]<br>
|
|
25
|
-
* Quaternion format: XYZW<br>
|
|
26
|
-
* Make sure to have normalized dual quaternions, otherwise the functions may not work as intended.<br>
|
|
27
|
-
* @module quat2
|
|
28
|
-
*/
|
|
29
|
-
/**
|
|
30
|
-
* Creates a new identity dual quat
|
|
31
|
-
*
|
|
32
|
-
* @returns {quat2} a new dual quaternion [real -> rotation, dual -> translation]
|
|
33
|
-
*/
|
|
34
|
-
export function create() {
|
|
35
|
-
const dq = getMatrixArrayType(8);
|
|
36
|
-
if (!(dq instanceof Float32Array)) {
|
|
37
|
-
dq[0] = 0;
|
|
38
|
-
dq[1] = 0;
|
|
39
|
-
dq[2] = 0;
|
|
40
|
-
dq[4] = 0;
|
|
41
|
-
dq[5] = 0;
|
|
42
|
-
dq[6] = 0;
|
|
43
|
-
dq[7] = 0;
|
|
44
|
-
}
|
|
45
|
-
dq[3] = 1;
|
|
46
|
-
return dq;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Creates a new quat initialized with values from an existing quaternion
|
|
50
|
-
*
|
|
51
|
-
* @param {Quat2} a dual quaternion to clone
|
|
52
|
-
* @returns {quat2} new dual quaternion
|
|
53
|
-
* @function
|
|
54
|
-
*/
|
|
55
|
-
export function clone(a) {
|
|
56
|
-
const dq = getMatrixArrayType(8);
|
|
57
|
-
dq[0] = a[0];
|
|
58
|
-
dq[1] = a[1];
|
|
59
|
-
dq[2] = a[2];
|
|
60
|
-
dq[3] = a[3];
|
|
61
|
-
dq[4] = a[4];
|
|
62
|
-
dq[5] = a[5];
|
|
63
|
-
dq[6] = a[6];
|
|
64
|
-
dq[7] = a[7];
|
|
65
|
-
return dq;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Creates a new dual quat initialized with the given values
|
|
69
|
-
*
|
|
70
|
-
* @param {Number} x1 X component
|
|
71
|
-
* @param {Number} y1 Y component
|
|
72
|
-
* @param {Number} z1 Z component
|
|
73
|
-
* @param {Number} w1 W component
|
|
74
|
-
* @param {Number} x2 X component
|
|
75
|
-
* @param {Number} y2 Y component
|
|
76
|
-
* @param {Number} z2 Z component
|
|
77
|
-
* @param {Number} w2 W component
|
|
78
|
-
* @returns {quat2} new dual quaternion
|
|
79
|
-
* @function
|
|
80
|
-
*/
|
|
81
|
-
export function fromValues(x1, y1, z1, w1, x2, y2, z2, w2) {
|
|
82
|
-
const dq = getMatrixArrayType(8);
|
|
83
|
-
dq[0] = x1;
|
|
84
|
-
dq[1] = y1;
|
|
85
|
-
dq[2] = z1;
|
|
86
|
-
dq[3] = w1;
|
|
87
|
-
dq[4] = x2;
|
|
88
|
-
dq[5] = y2;
|
|
89
|
-
dq[6] = z2;
|
|
90
|
-
dq[7] = w2;
|
|
91
|
-
return dq;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Creates a new dual quat from the given values (quat and translation)
|
|
95
|
-
*
|
|
96
|
-
* @param {Number} x1 X component
|
|
97
|
-
* @param {Number} y1 Y component
|
|
98
|
-
* @param {Number} z1 Z component
|
|
99
|
-
* @param {Number} w1 W component
|
|
100
|
-
* @param {Number} x2 X component (translation)
|
|
101
|
-
* @param {Number} y2 Y component (translation)
|
|
102
|
-
* @param {Number} z2 Z component (translation)
|
|
103
|
-
* @returns {quat2} new dual quaternion
|
|
104
|
-
* @function
|
|
105
|
-
*/
|
|
106
|
-
export function fromRotationTranslationValues(x1, y1, z1, w1, x2, y2, z2) {
|
|
107
|
-
const dq = getMatrixArrayType(8);
|
|
108
|
-
dq[0] = x1;
|
|
109
|
-
dq[1] = y1;
|
|
110
|
-
dq[2] = z1;
|
|
111
|
-
dq[3] = w1;
|
|
112
|
-
const ax = x2 * 0.5, ay = y2 * 0.5, az = z2 * 0.5;
|
|
113
|
-
dq[4] = ax * w1 + ay * z1 - az * y1;
|
|
114
|
-
dq[5] = ay * w1 + az * x1 - ax * z1;
|
|
115
|
-
dq[6] = az * w1 + ax * y1 - ay * x1;
|
|
116
|
-
dq[7] = -ax * x1 - ay * y1 - az * z1;
|
|
117
|
-
return dq;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Creates a dual quat from a quaternion and a translation
|
|
121
|
-
*
|
|
122
|
-
* @param {Quat2} out quaternion receiving operation result
|
|
123
|
-
* @param {Quat} q a normalized quaternion
|
|
124
|
-
* @param {Vec3} t translation vector
|
|
125
|
-
* @returns {quat2} dual quaternion receiving operation result
|
|
126
|
-
* @function
|
|
127
|
-
*/
|
|
128
|
-
export function fromRotationTranslation(out, q, t) {
|
|
129
|
-
const ax = t[0] * 0.5, ay = t[1] * 0.5, az = t[2] * 0.5, bx = q[0], by = q[1], bz = q[2], bw = q[3];
|
|
130
|
-
out[0] = bx;
|
|
131
|
-
out[1] = by;
|
|
132
|
-
out[2] = bz;
|
|
133
|
-
out[3] = bw;
|
|
134
|
-
out[4] = ax * bw + ay * bz - az * by;
|
|
135
|
-
out[5] = ay * bw + az * bx - ax * bz;
|
|
136
|
-
out[6] = az * bw + ax * by - ay * bx;
|
|
137
|
-
out[7] = -ax * bx - ay * by - az * bz;
|
|
138
|
-
return out;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Creates a dual quat from a translation
|
|
142
|
-
*
|
|
143
|
-
* @param {Quat2} dual quaternion receiving operation result
|
|
144
|
-
* @param {Vec3} t translation vector
|
|
145
|
-
* @returns {quat2} dual quaternion receiving operation result
|
|
146
|
-
* @function
|
|
147
|
-
*/
|
|
148
|
-
export function fromTranslation(out, t) {
|
|
149
|
-
out[0] = 0;
|
|
150
|
-
out[1] = 0;
|
|
151
|
-
out[2] = 0;
|
|
152
|
-
out[3] = 1;
|
|
153
|
-
out[4] = t[0] * 0.5;
|
|
154
|
-
out[5] = t[1] * 0.5;
|
|
155
|
-
out[6] = t[2] * 0.5;
|
|
156
|
-
out[7] = 0;
|
|
157
|
-
return out;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Creates a dual quat from a quaternion
|
|
161
|
-
*
|
|
162
|
-
* @param {Quat2} dual quaternion receiving operation result
|
|
163
|
-
* @param {Quat} q the quaternion
|
|
164
|
-
* @returns {quat2} dual quaternion receiving operation result
|
|
165
|
-
* @function
|
|
166
|
-
*/
|
|
167
|
-
export function fromRotation(out, q) {
|
|
168
|
-
out[0] = q[0];
|
|
169
|
-
out[1] = q[1];
|
|
170
|
-
out[2] = q[2];
|
|
171
|
-
out[3] = q[3];
|
|
172
|
-
out[4] = 0;
|
|
173
|
-
out[5] = 0;
|
|
174
|
-
out[6] = 0;
|
|
175
|
-
out[7] = 0;
|
|
176
|
-
return out;
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Creates a new dual quat from a matrix (4x4)
|
|
180
|
-
*
|
|
181
|
-
* @param {quat2} out the dual quaternion
|
|
182
|
-
* @param {Mat4} a the matrix
|
|
183
|
-
* @returns {quat2} dual quat receiving operation result
|
|
184
|
-
* @function
|
|
185
|
-
*/
|
|
186
|
-
export function fromMat4(out, a) {
|
|
187
|
-
//TODO Optimize this
|
|
188
|
-
const outer = quat.create();
|
|
189
|
-
mat4.getRotation(outer, a);
|
|
190
|
-
const t = getMatrixArrayType(3);
|
|
191
|
-
mat4.getTranslation(t, a);
|
|
192
|
-
fromRotationTranslation(out, outer, t);
|
|
193
|
-
return out;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Copy the values from one dual quat to another
|
|
197
|
-
*
|
|
198
|
-
* @param {quat2} out the receiving dual quaternion
|
|
199
|
-
* @param {Quat2} a the source dual quaternion
|
|
200
|
-
* @returns {quat2} out
|
|
201
|
-
* @function
|
|
202
|
-
*/
|
|
203
|
-
export function copy(out, a) {
|
|
204
|
-
out[0] = a[0];
|
|
205
|
-
out[1] = a[1];
|
|
206
|
-
out[2] = a[2];
|
|
207
|
-
out[3] = a[3];
|
|
208
|
-
out[4] = a[4];
|
|
209
|
-
out[5] = a[5];
|
|
210
|
-
out[6] = a[6];
|
|
211
|
-
out[7] = a[7];
|
|
212
|
-
return out;
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Set a dual quat to the identity dual quaternion
|
|
216
|
-
*
|
|
217
|
-
* @param {quat2} out the receiving quaternion
|
|
218
|
-
* @returns {quat2} out
|
|
219
|
-
*/
|
|
220
|
-
export function identity(out) {
|
|
221
|
-
out[0] = 0;
|
|
222
|
-
out[1] = 0;
|
|
223
|
-
out[2] = 0;
|
|
224
|
-
out[3] = 1;
|
|
225
|
-
out[4] = 0;
|
|
226
|
-
out[5] = 0;
|
|
227
|
-
out[6] = 0;
|
|
228
|
-
out[7] = 0;
|
|
229
|
-
return out;
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Set the components of a dual quat to the given values
|
|
233
|
-
*
|
|
234
|
-
* @param {quat2} out the receiving quaternion
|
|
235
|
-
* @param {Number} x1 X component
|
|
236
|
-
* @param {Number} y1 Y component
|
|
237
|
-
* @param {Number} z1 Z component
|
|
238
|
-
* @param {Number} w1 W component
|
|
239
|
-
* @param {Number} x2 X component
|
|
240
|
-
* @param {Number} y2 Y component
|
|
241
|
-
* @param {Number} z2 Z component
|
|
242
|
-
* @param {Number} w2 W component
|
|
243
|
-
* @returns {quat2} out
|
|
244
|
-
* @function
|
|
245
|
-
*/
|
|
246
|
-
export function set(out, x1, y1, z1, w1, x2, y2, z2, w2) {
|
|
247
|
-
out[0] = x1;
|
|
248
|
-
out[1] = y1;
|
|
249
|
-
out[2] = z1;
|
|
250
|
-
out[3] = w1;
|
|
251
|
-
out[4] = x2;
|
|
252
|
-
out[5] = y2;
|
|
253
|
-
out[6] = z2;
|
|
254
|
-
out[7] = w2;
|
|
255
|
-
return out;
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Gets the real part of a dual quat
|
|
259
|
-
* @param {quat} out real part
|
|
260
|
-
* @param {Quat2} a Dual Quaternion
|
|
261
|
-
* @return {quat} real part
|
|
262
|
-
*/
|
|
263
|
-
export const getReal = quat.copy;
|
|
264
|
-
/**
|
|
265
|
-
* Gets the dual part of a dual quat
|
|
266
|
-
* @param {quat} out dual part
|
|
267
|
-
* @param {Quat2} a Dual Quaternion
|
|
268
|
-
* @return {quat} dual part
|
|
269
|
-
*/
|
|
270
|
-
export function getDual(out, a) {
|
|
271
|
-
out[0] = a[4];
|
|
272
|
-
out[1] = a[5];
|
|
273
|
-
out[2] = a[6];
|
|
274
|
-
out[3] = a[7];
|
|
275
|
-
return out;
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Set the real component of a dual quat to the given quaternion
|
|
279
|
-
*
|
|
280
|
-
* @param {quat2} out the receiving quaternion
|
|
281
|
-
* @param {Quat} q a quaternion representing the real part
|
|
282
|
-
* @returns {quat2} out
|
|
283
|
-
* @function
|
|
284
|
-
*/
|
|
285
|
-
export const setReal = quat.copy;
|
|
286
|
-
/**
|
|
287
|
-
* Set the dual component of a dual quat to the given quaternion
|
|
288
|
-
*
|
|
289
|
-
* @param {quat2} out the receiving quaternion
|
|
290
|
-
* @param {Quat} q a quaternion representing the dual part
|
|
291
|
-
* @returns {quat2} out
|
|
292
|
-
* @function
|
|
293
|
-
*/
|
|
294
|
-
export function setDual(out, q) {
|
|
295
|
-
out[4] = q[0];
|
|
296
|
-
out[5] = q[1];
|
|
297
|
-
out[6] = q[2];
|
|
298
|
-
out[7] = q[3];
|
|
299
|
-
return out;
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* Gets the translation of a normalized dual quat
|
|
303
|
-
* @param {Vec3} out translation
|
|
304
|
-
* @param {Quat2} a Dual Quaternion to be decomposed
|
|
305
|
-
* @return {Vec3} translation
|
|
306
|
-
*/
|
|
307
|
-
export function getTranslation(out, a) {
|
|
308
|
-
const ax = a[4], ay = a[5], az = a[6], aw = a[7], bx = -a[0], by = -a[1], bz = -a[2], bw = a[3];
|
|
309
|
-
out[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;
|
|
310
|
-
out[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;
|
|
311
|
-
out[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;
|
|
312
|
-
return out;
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* Translates a dual quat by the given vector
|
|
316
|
-
*
|
|
317
|
-
* @param {quat2} out the receiving dual quaternion
|
|
318
|
-
* @param {Quat2} a the dual quaternion to translate
|
|
319
|
-
* @param {Vec3} v vector to translate by
|
|
320
|
-
* @returns {quat2} out
|
|
321
|
-
*/
|
|
322
|
-
export function translate(out, a, v) {
|
|
323
|
-
const ax1 = a[0], ay1 = a[1], az1 = a[2], aw1 = a[3], bx1 = v[0] * 0.5, by1 = v[1] * 0.5, bz1 = v[2] * 0.5, ax2 = a[4], ay2 = a[5], az2 = a[6], aw2 = a[7];
|
|
324
|
-
out[0] = ax1;
|
|
325
|
-
out[1] = ay1;
|
|
326
|
-
out[2] = az1;
|
|
327
|
-
out[3] = aw1;
|
|
328
|
-
out[4] = aw1 * bx1 + ay1 * bz1 - az1 * by1 + ax2;
|
|
329
|
-
out[5] = aw1 * by1 + az1 * bx1 - ax1 * bz1 + ay2;
|
|
330
|
-
out[6] = aw1 * bz1 + ax1 * by1 - ay1 * bx1 + az2;
|
|
331
|
-
out[7] = -ax1 * bx1 - ay1 * by1 - az1 * bz1 + aw2;
|
|
332
|
-
return out;
|
|
333
|
-
}
|
|
334
|
-
/**
|
|
335
|
-
* Rotates a dual quat around the X axis
|
|
336
|
-
*
|
|
337
|
-
* @param {quat2} out the receiving dual quaternion
|
|
338
|
-
* @param {Quat2} a the dual quaternion to rotate
|
|
339
|
-
* @param {number} rad how far should the rotation be
|
|
340
|
-
* @returns {quat2} out
|
|
341
|
-
*/
|
|
342
|
-
export function rotateX(out, a, rad) {
|
|
343
|
-
let bx = -a[0], by = -a[1], bz = -a[2], bw = a[3];
|
|
344
|
-
const ax = a[4], ay = a[5], az = a[6], aw = a[7], ax1 = ax * bw + aw * bx + ay * bz - az * by, ay1 = ay * bw + aw * by + az * bx - ax * bz, az1 = az * bw + aw * bz + ax * by - ay * bx, aw1 = aw * bw - ax * bx - ay * by - az * bz;
|
|
345
|
-
quat.rotateX(out, a, rad);
|
|
346
|
-
bx = out[0];
|
|
347
|
-
by = out[1];
|
|
348
|
-
bz = out[2];
|
|
349
|
-
bw = out[3];
|
|
350
|
-
out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;
|
|
351
|
-
out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;
|
|
352
|
-
out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;
|
|
353
|
-
out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;
|
|
354
|
-
return out;
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* Rotates a dual quat around the Y axis
|
|
358
|
-
*
|
|
359
|
-
* @param {quat2} out the receiving dual quaternion
|
|
360
|
-
* @param {Quat2} a the dual quaternion to rotate
|
|
361
|
-
* @param {number} rad how far should the rotation be
|
|
362
|
-
* @returns {quat2} out
|
|
363
|
-
*/
|
|
364
|
-
export function rotateY(out, a, rad) {
|
|
365
|
-
let bx = -a[0], by = -a[1], bz = -a[2], bw = a[3];
|
|
366
|
-
const ax = a[4], ay = a[5], az = a[6], aw = a[7], ax1 = ax * bw + aw * bx + ay * bz - az * by, ay1 = ay * bw + aw * by + az * bx - ax * bz, az1 = az * bw + aw * bz + ax * by - ay * bx, aw1 = aw * bw - ax * bx - ay * by - az * bz;
|
|
367
|
-
quat.rotateY(out, a, rad);
|
|
368
|
-
bx = out[0];
|
|
369
|
-
by = out[1];
|
|
370
|
-
bz = out[2];
|
|
371
|
-
bw = out[3];
|
|
372
|
-
out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;
|
|
373
|
-
out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;
|
|
374
|
-
out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;
|
|
375
|
-
out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;
|
|
376
|
-
return out;
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* Rotates a dual quat around the Z axis
|
|
380
|
-
*
|
|
381
|
-
* @param {quat2} out the receiving dual quaternion
|
|
382
|
-
* @param {Quat2} a the dual quaternion to rotate
|
|
383
|
-
* @param {number} rad how far should the rotation be
|
|
384
|
-
* @returns {quat2} out
|
|
385
|
-
*/
|
|
386
|
-
export function rotateZ(out, a, rad) {
|
|
387
|
-
let bx = -a[0], by = -a[1], bz = -a[2], bw = a[3];
|
|
388
|
-
const ax = a[4], ay = a[5], az = a[6], aw = a[7], ax1 = ax * bw + aw * bx + ay * bz - az * by, ay1 = ay * bw + aw * by + az * bx - ax * bz, az1 = az * bw + aw * bz + ax * by - ay * bx, aw1 = aw * bw - ax * bx - ay * by - az * bz;
|
|
389
|
-
quat.rotateZ(out, a, rad);
|
|
390
|
-
bx = out[0];
|
|
391
|
-
by = out[1];
|
|
392
|
-
bz = out[2];
|
|
393
|
-
bw = out[3];
|
|
394
|
-
out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;
|
|
395
|
-
out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;
|
|
396
|
-
out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;
|
|
397
|
-
out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;
|
|
398
|
-
return out;
|
|
399
|
-
}
|
|
400
|
-
/**
|
|
401
|
-
* Rotates a dual quat by a given quaternion (a * q)
|
|
402
|
-
*
|
|
403
|
-
* @param {quat2} out the receiving dual quaternion
|
|
404
|
-
* @param {Quat2} a the dual quaternion to rotate
|
|
405
|
-
* @param {Quat} q quaternion to rotate by
|
|
406
|
-
* @returns {quat2} out
|
|
407
|
-
*/
|
|
408
|
-
export function rotateByQuatAppend(out, a, q) {
|
|
409
|
-
const qx = q[0], qy = q[1], qz = q[2], qw = q[3];
|
|
410
|
-
let ax = a[0], ay = a[1], az = a[2], aw = a[3];
|
|
411
|
-
out[0] = ax * qw + aw * qx + ay * qz - az * qy;
|
|
412
|
-
out[1] = ay * qw + aw * qy + az * qx - ax * qz;
|
|
413
|
-
out[2] = az * qw + aw * qz + ax * qy - ay * qx;
|
|
414
|
-
out[3] = aw * qw - ax * qx - ay * qy - az * qz;
|
|
415
|
-
ax = a[4];
|
|
416
|
-
ay = a[5];
|
|
417
|
-
az = a[6];
|
|
418
|
-
aw = a[7];
|
|
419
|
-
out[4] = ax * qw + aw * qx + ay * qz - az * qy;
|
|
420
|
-
out[5] = ay * qw + aw * qy + az * qx - ax * qz;
|
|
421
|
-
out[6] = az * qw + aw * qz + ax * qy - ay * qx;
|
|
422
|
-
out[7] = aw * qw - ax * qx - ay * qy - az * qz;
|
|
423
|
-
return out;
|
|
424
|
-
}
|
|
425
|
-
/**
|
|
426
|
-
* Rotates a dual quat by a given quaternion (q * a)
|
|
427
|
-
*
|
|
428
|
-
* @param {quat2} out the receiving dual quaternion
|
|
429
|
-
* @param {Quat} q quaternion to rotate by
|
|
430
|
-
* @param {Quat2} a the dual quaternion to rotate
|
|
431
|
-
* @returns {quat2} out
|
|
432
|
-
*/
|
|
433
|
-
export function rotateByQuatPrepend(out, q, a) {
|
|
434
|
-
const qx = q[0], qy = q[1], qz = q[2], qw = q[3];
|
|
435
|
-
let bx = a[0], by = a[1], bz = a[2], bw = a[3];
|
|
436
|
-
out[0] = qx * bw + qw * bx + qy * bz - qz * by;
|
|
437
|
-
out[1] = qy * bw + qw * by + qz * bx - qx * bz;
|
|
438
|
-
out[2] = qz * bw + qw * bz + qx * by - qy * bx;
|
|
439
|
-
out[3] = qw * bw - qx * bx - qy * by - qz * bz;
|
|
440
|
-
bx = a[4];
|
|
441
|
-
by = a[5];
|
|
442
|
-
bz = a[6];
|
|
443
|
-
bw = a[7];
|
|
444
|
-
out[4] = qx * bw + qw * bx + qy * bz - qz * by;
|
|
445
|
-
out[5] = qy * bw + qw * by + qz * bx - qx * bz;
|
|
446
|
-
out[6] = qz * bw + qw * bz + qx * by - qy * bx;
|
|
447
|
-
out[7] = qw * bw - qx * bx - qy * by - qz * bz;
|
|
448
|
-
return out;
|
|
449
|
-
}
|
|
450
|
-
/**
|
|
451
|
-
* Rotates a dual quat around a given axis. Does the normalisation automatically
|
|
452
|
-
*
|
|
453
|
-
* @param {quat2} out the receiving dual quaternion
|
|
454
|
-
* @param {Quat2} a the dual quaternion to rotate
|
|
455
|
-
* @param {Vec3} axis the axis to rotate around
|
|
456
|
-
* @param {Number} rad how far the rotation should be
|
|
457
|
-
* @returns {quat2} out
|
|
458
|
-
*/
|
|
459
|
-
export function rotateAroundAxis(out, a, axis, rad) {
|
|
460
|
-
//Special case for rad = 0
|
|
461
|
-
if (Math.abs(rad) < EPSILON) {
|
|
462
|
-
return copy(out, a);
|
|
463
|
-
}
|
|
464
|
-
const axisLength = Math.hypot(axis[0], axis[1], axis[2]);
|
|
465
|
-
rad = rad * 0.5;
|
|
466
|
-
const s = Math.sin(rad);
|
|
467
|
-
const bx = (s * axis[0]) / axisLength;
|
|
468
|
-
const by = (s * axis[1]) / axisLength;
|
|
469
|
-
const bz = (s * axis[2]) / axisLength;
|
|
470
|
-
const bw = Math.cos(rad);
|
|
471
|
-
const ax1 = a[0], ay1 = a[1], az1 = a[2], aw1 = a[3];
|
|
472
|
-
out[0] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;
|
|
473
|
-
out[1] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;
|
|
474
|
-
out[2] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;
|
|
475
|
-
out[3] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;
|
|
476
|
-
const ax = a[4], ay = a[5], az = a[6], aw = a[7];
|
|
477
|
-
out[4] = ax * bw + aw * bx + ay * bz - az * by;
|
|
478
|
-
out[5] = ay * bw + aw * by + az * bx - ax * bz;
|
|
479
|
-
out[6] = az * bw + aw * bz + ax * by - ay * bx;
|
|
480
|
-
out[7] = aw * bw - ax * bx - ay * by - az * bz;
|
|
481
|
-
return out;
|
|
482
|
-
}
|
|
483
|
-
/**
|
|
484
|
-
* Adds two dual quat's
|
|
485
|
-
*
|
|
486
|
-
* @param {quat2} out the receiving dual quaternion
|
|
487
|
-
* @param {Quat2} a the first operand
|
|
488
|
-
* @param {Quat2} b the second operand
|
|
489
|
-
* @returns {quat2} out
|
|
490
|
-
* @function
|
|
491
|
-
*/
|
|
492
|
-
export function add(out, a, b) {
|
|
493
|
-
out[0] = a[0] + b[0];
|
|
494
|
-
out[1] = a[1] + b[1];
|
|
495
|
-
out[2] = a[2] + b[2];
|
|
496
|
-
out[3] = a[3] + b[3];
|
|
497
|
-
out[4] = a[4] + b[4];
|
|
498
|
-
out[5] = a[5] + b[5];
|
|
499
|
-
out[6] = a[6] + b[6];
|
|
500
|
-
out[7] = a[7] + b[7];
|
|
501
|
-
return out;
|
|
502
|
-
}
|
|
503
|
-
/**
|
|
504
|
-
* Multiplies two dual quat's
|
|
505
|
-
*
|
|
506
|
-
* @param {quat2} out the receiving dual quaternion
|
|
507
|
-
* @param {Quat2} a the first operand
|
|
508
|
-
* @param {Quat2} b the second operand
|
|
509
|
-
* @returns {quat2} out
|
|
510
|
-
*/
|
|
511
|
-
export function multiply(out, a, b) {
|
|
512
|
-
const ax0 = a[0], ay0 = a[1], az0 = a[2], aw0 = a[3], bx1 = b[4], by1 = b[5], bz1 = b[6], bw1 = b[7], ax1 = a[4], ay1 = a[5], az1 = a[6], aw1 = a[7], bx0 = b[0], by0 = b[1], bz0 = b[2], bw0 = b[3];
|
|
513
|
-
out[0] = ax0 * bw0 + aw0 * bx0 + ay0 * bz0 - az0 * by0;
|
|
514
|
-
out[1] = ay0 * bw0 + aw0 * by0 + az0 * bx0 - ax0 * bz0;
|
|
515
|
-
out[2] = az0 * bw0 + aw0 * bz0 + ax0 * by0 - ay0 * bx0;
|
|
516
|
-
out[3] = aw0 * bw0 - ax0 * bx0 - ay0 * by0 - az0 * bz0;
|
|
517
|
-
out[4] =
|
|
518
|
-
ax0 * bw1 +
|
|
519
|
-
aw0 * bx1 +
|
|
520
|
-
ay0 * bz1 -
|
|
521
|
-
az0 * by1 +
|
|
522
|
-
ax1 * bw0 +
|
|
523
|
-
aw1 * bx0 +
|
|
524
|
-
ay1 * bz0 -
|
|
525
|
-
az1 * by0;
|
|
526
|
-
out[5] =
|
|
527
|
-
ay0 * bw1 +
|
|
528
|
-
aw0 * by1 +
|
|
529
|
-
az0 * bx1 -
|
|
530
|
-
ax0 * bz1 +
|
|
531
|
-
ay1 * bw0 +
|
|
532
|
-
aw1 * by0 +
|
|
533
|
-
az1 * bx0 -
|
|
534
|
-
ax1 * bz0;
|
|
535
|
-
out[6] =
|
|
536
|
-
az0 * bw1 +
|
|
537
|
-
aw0 * bz1 +
|
|
538
|
-
ax0 * by1 -
|
|
539
|
-
ay0 * bx1 +
|
|
540
|
-
az1 * bw0 +
|
|
541
|
-
aw1 * bz0 +
|
|
542
|
-
ax1 * by0 -
|
|
543
|
-
ay1 * bx0;
|
|
544
|
-
out[7] =
|
|
545
|
-
aw0 * bw1 -
|
|
546
|
-
ax0 * bx1 -
|
|
547
|
-
ay0 * by1 -
|
|
548
|
-
az0 * bz1 +
|
|
549
|
-
aw1 * bw0 -
|
|
550
|
-
ax1 * bx0 -
|
|
551
|
-
ay1 * by0 -
|
|
552
|
-
az1 * bz0;
|
|
553
|
-
return out;
|
|
554
|
-
}
|
|
555
|
-
/**
|
|
556
|
-
* Alias for {@link multiply}
|
|
557
|
-
* @function
|
|
558
|
-
*/
|
|
559
|
-
export const mul = multiply;
|
|
560
|
-
/**
|
|
561
|
-
* Scales a dual quat by a scalar number
|
|
562
|
-
*
|
|
563
|
-
* @param {quat2} out the receiving dual quat
|
|
564
|
-
* @param {Quat2} a the dual quat to scale
|
|
565
|
-
* @param {Number} b amount to scale the dual quat by
|
|
566
|
-
* @returns {quat2} out
|
|
567
|
-
* @function
|
|
568
|
-
*/
|
|
569
|
-
export function scale(out, a, b) {
|
|
570
|
-
out[0] = a[0] * b;
|
|
571
|
-
out[1] = a[1] * b;
|
|
572
|
-
out[2] = a[2] * b;
|
|
573
|
-
out[3] = a[3] * b;
|
|
574
|
-
out[4] = a[4] * b;
|
|
575
|
-
out[5] = a[5] * b;
|
|
576
|
-
out[6] = a[6] * b;
|
|
577
|
-
out[7] = a[7] * b;
|
|
578
|
-
return out;
|
|
579
|
-
}
|
|
580
|
-
/**
|
|
581
|
-
* Calculates the dot product of two dual quat's (The dot product of the real parts)
|
|
582
|
-
*
|
|
583
|
-
* @param {Quat2} a the first operand
|
|
584
|
-
* @param {Quat2} b the second operand
|
|
585
|
-
* @returns {Number} dot product of a and b
|
|
586
|
-
* @function
|
|
587
|
-
*/
|
|
588
|
-
export const dot = quat.dot;
|
|
589
|
-
/**
|
|
590
|
-
* Performs a linear interpolation between two dual quats's
|
|
591
|
-
* NOTE: The resulting dual quaternions won't always be normalized (The error is most noticeable when t = 0.5)
|
|
592
|
-
*
|
|
593
|
-
* @param {quat2} out the receiving dual quat
|
|
594
|
-
* @param {Quat2} a the first operand
|
|
595
|
-
* @param {Quat2} b the second operand
|
|
596
|
-
* @param {Number} t interpolation amount, in the range [0-1], between the two inputs
|
|
597
|
-
* @returns {quat2} out
|
|
598
|
-
*/
|
|
599
|
-
export function lerp(out, a, b, t) {
|
|
600
|
-
const mt = 1 - t;
|
|
601
|
-
if (dot(a, b) < 0)
|
|
602
|
-
t = -t;
|
|
603
|
-
out[0] = a[0] * mt + b[0] * t;
|
|
604
|
-
out[1] = a[1] * mt + b[1] * t;
|
|
605
|
-
out[2] = a[2] * mt + b[2] * t;
|
|
606
|
-
out[3] = a[3] * mt + b[3] * t;
|
|
607
|
-
out[4] = a[4] * mt + b[4] * t;
|
|
608
|
-
out[5] = a[5] * mt + b[5] * t;
|
|
609
|
-
out[6] = a[6] * mt + b[6] * t;
|
|
610
|
-
out[7] = a[7] * mt + b[7] * t;
|
|
611
|
-
return out;
|
|
612
|
-
}
|
|
613
|
-
/**
|
|
614
|
-
* Calculates the inverse of a dual quat. If they are normalized, conjugate is cheaper
|
|
615
|
-
*
|
|
616
|
-
* @param {quat2} out the receiving dual quaternion
|
|
617
|
-
* @param {Quat2} a dual quat to calculate inverse of
|
|
618
|
-
* @returns {quat2} out
|
|
619
|
-
*/
|
|
620
|
-
export function invert(out, a) {
|
|
621
|
-
const sqlen = squaredLength(a);
|
|
622
|
-
out[0] = -a[0] / sqlen;
|
|
623
|
-
out[1] = -a[1] / sqlen;
|
|
624
|
-
out[2] = -a[2] / sqlen;
|
|
625
|
-
out[3] = a[3] / sqlen;
|
|
626
|
-
out[4] = -a[4] / sqlen;
|
|
627
|
-
out[5] = -a[5] / sqlen;
|
|
628
|
-
out[6] = -a[6] / sqlen;
|
|
629
|
-
out[7] = a[7] / sqlen;
|
|
630
|
-
return out;
|
|
631
|
-
}
|
|
632
|
-
/**
|
|
633
|
-
* Calculates the conjugate of a dual quat
|
|
634
|
-
* If the dual quaternion is normalized, this function is faster than quat2.inverse and produces the same result.
|
|
635
|
-
*
|
|
636
|
-
* @param {quat2} out the receiving quaternion
|
|
637
|
-
* @param {Quat2} a quat to calculate conjugate of
|
|
638
|
-
* @returns {quat2} out
|
|
639
|
-
*/
|
|
640
|
-
export function conjugate(out, a) {
|
|
641
|
-
out[0] = -a[0];
|
|
642
|
-
out[1] = -a[1];
|
|
643
|
-
out[2] = -a[2];
|
|
644
|
-
out[3] = a[3];
|
|
645
|
-
out[4] = -a[4];
|
|
646
|
-
out[5] = -a[5];
|
|
647
|
-
out[6] = -a[6];
|
|
648
|
-
out[7] = a[7];
|
|
649
|
-
return out;
|
|
650
|
-
}
|
|
651
|
-
/**
|
|
652
|
-
* Calculates the length of a dual quat
|
|
653
|
-
*
|
|
654
|
-
* @param {Quat2} a dual quat to calculate length of
|
|
655
|
-
* @returns {Number} length of a
|
|
656
|
-
* @function
|
|
657
|
-
*/
|
|
658
|
-
export const length = quat.length;
|
|
659
|
-
/**
|
|
660
|
-
* Alias for {@link length}
|
|
661
|
-
* @function
|
|
662
|
-
*/
|
|
663
|
-
export const len = length;
|
|
664
|
-
/**
|
|
665
|
-
* Calculates the squared length of a dual quat
|
|
666
|
-
*
|
|
667
|
-
* @param {Quat2} a dual quat to calculate squared length of
|
|
668
|
-
* @returns {Number} squared length of a
|
|
669
|
-
* @function
|
|
670
|
-
*/
|
|
671
|
-
export const squaredLength = quat.squaredLength;
|
|
672
|
-
/**
|
|
673
|
-
* Alias for {@link quat2.squaredLength}
|
|
674
|
-
* @function
|
|
675
|
-
*/
|
|
676
|
-
export const sqrLen = squaredLength;
|
|
677
|
-
/**
|
|
678
|
-
* Normalize a dual quat
|
|
679
|
-
*
|
|
680
|
-
* @param {quat2} out the receiving dual quaternion
|
|
681
|
-
* @param {Quat2} a dual quaternion to normalize
|
|
682
|
-
* @returns {quat2} out
|
|
683
|
-
* @function
|
|
684
|
-
*/
|
|
685
|
-
export function normalize(out, a) {
|
|
686
|
-
let magnitude = squaredLength(a);
|
|
687
|
-
if (magnitude > 0) {
|
|
688
|
-
magnitude = Math.sqrt(magnitude);
|
|
689
|
-
const a0 = a[0] / magnitude;
|
|
690
|
-
const a1 = a[1] / magnitude;
|
|
691
|
-
const a2 = a[2] / magnitude;
|
|
692
|
-
const a3 = a[3] / magnitude;
|
|
693
|
-
const b0 = a[4];
|
|
694
|
-
const b1 = a[5];
|
|
695
|
-
const b2 = a[6];
|
|
696
|
-
const b3 = a[7];
|
|
697
|
-
const a_dot_b = a0 * b0 + a1 * b1 + a2 * b2 + a3 * b3;
|
|
698
|
-
out[0] = a0;
|
|
699
|
-
out[1] = a1;
|
|
700
|
-
out[2] = a2;
|
|
701
|
-
out[3] = a3;
|
|
702
|
-
out[4] = (b0 - a0 * a_dot_b) / magnitude;
|
|
703
|
-
out[5] = (b1 - a1 * a_dot_b) / magnitude;
|
|
704
|
-
out[6] = (b2 - a2 * a_dot_b) / magnitude;
|
|
705
|
-
out[7] = (b3 - a3 * a_dot_b) / magnitude;
|
|
706
|
-
}
|
|
707
|
-
return out;
|
|
708
|
-
}
|
|
709
|
-
/**
|
|
710
|
-
* Returns a string representation of a dual quaternion
|
|
711
|
-
*
|
|
712
|
-
* @param {Quat2} a dual quaternion to represent as a string
|
|
713
|
-
* @returns {String} string representation of the dual quat
|
|
714
|
-
*/
|
|
715
|
-
export function str(a) {
|
|
716
|
-
return `quat2(${a[0]}, ${a[1]}, ${a[2]}, ${a[3]}, ${a[4]}, ${a[5]}, ${a[6]}, ${a[7]})`;
|
|
717
|
-
}
|
|
718
|
-
/**
|
|
719
|
-
* Returns whether or not the dual quaternions have exactly the same elements in the same position (when compared with ===)
|
|
720
|
-
*
|
|
721
|
-
* @param {Quat2} a the first dual quaternion.
|
|
722
|
-
* @param {Quat2} b the second dual quaternion.
|
|
723
|
-
* @returns {Boolean} true if the dual quaternions are equal, false otherwise.
|
|
724
|
-
*/
|
|
725
|
-
export function exactEquals(a, b) {
|
|
726
|
-
return (a[0] === b[0] &&
|
|
727
|
-
a[1] === b[1] &&
|
|
728
|
-
a[2] === b[2] &&
|
|
729
|
-
a[3] === b[3] &&
|
|
730
|
-
a[4] === b[4] &&
|
|
731
|
-
a[5] === b[5] &&
|
|
732
|
-
a[6] === b[6] &&
|
|
733
|
-
a[7] === b[7]);
|
|
734
|
-
}
|
|
735
|
-
/**
|
|
736
|
-
* Returns whether or not the dual quaternions have approximately the same elements in the same position.
|
|
737
|
-
*
|
|
738
|
-
* @param {Quat2} a the first dual quat.
|
|
739
|
-
* @param {Quat2} b the second dual quat.
|
|
740
|
-
* @returns {Boolean} true if the dual quats are equal, false otherwise.
|
|
741
|
-
*/
|
|
742
|
-
export function equals(a, b) {
|
|
743
|
-
const a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];
|
|
744
|
-
const b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7];
|
|
745
|
-
return (Math.abs(a0 - b0) <= EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&
|
|
746
|
-
Math.abs(a1 - b1) <= EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&
|
|
747
|
-
Math.abs(a2 - b2) <= EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&
|
|
748
|
-
Math.abs(a3 - b3) <= EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) &&
|
|
749
|
-
Math.abs(a4 - b4) <= EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) &&
|
|
750
|
-
Math.abs(a5 - b5) <= EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) &&
|
|
751
|
-
Math.abs(a6 - b6) <= EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) &&
|
|
752
|
-
Math.abs(a7 - b7) <= EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)));
|
|
753
|
-
}
|
|
754
|
-
//# sourceMappingURL=quat2.js.map
|