@codexo/exojs 0.9.0 → 0.11.0
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/CHANGELOG.md +127 -0
- package/README.md +14 -14
- package/dist/esm/core/Application.d.ts +25 -6
- package/dist/esm/core/Application.js +42 -8
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Perf.d.ts +23 -0
- package/dist/esm/core/Perf.js +49 -0
- package/dist/esm/core/Perf.js.map +1 -0
- package/dist/esm/core/Scene.d.ts +8 -8
- package/dist/esm/core/Scene.js +7 -7
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.js +2 -2
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +0 -3
- package/dist/esm/core/SceneNode.js +0 -9
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/capabilities.d.ts +2 -0
- package/dist/esm/core/capabilities.js +15 -0
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/dev.d.ts +21 -0
- package/dist/esm/core/dev.js +18 -0
- package/dist/esm/core/dev.js.map +1 -0
- package/dist/esm/core/index.d.ts +1 -0
- package/dist/esm/core/types.d.ts +1 -1
- package/dist/esm/core/utils.d.ts +12 -0
- package/dist/esm/core/utils.js +18 -1
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/index.js +14 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/particles/ParticleSystem.d.ts +8 -5
- package/dist/esm/particles/ParticleSystem.js +9 -5
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/distributions/{Gradient.d.ts → ColorGradient.d.ts} +5 -5
- package/dist/esm/particles/distributions/{Gradient.js → ColorGradient.js} +5 -5
- package/dist/esm/particles/distributions/ColorGradient.js.map +1 -0
- package/dist/esm/particles/distributions/Distribution.d.ts +2 -2
- package/dist/esm/particles/distributions/index.d.ts +2 -2
- package/dist/esm/particles/gpu/ParticleGpuState.js +1 -1
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.d.ts +2 -2
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.js +5 -1
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ColorOverLifetime.d.ts +3 -3
- package/dist/esm/particles/modules/ColorOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ColorOverSpeed.d.ts +3 -3
- package/dist/esm/particles/modules/ColorOverSpeed.js.map +1 -1
- package/dist/esm/particles/modules/UpdateModule.d.ts +2 -2
- package/dist/esm/particles/modules/UpdateModule.js +1 -1
- package/dist/esm/particles/modules/WgslContribution.d.ts +2 -2
- package/dist/esm/rendering/Camera.d.ts +33 -0
- package/dist/esm/rendering/Camera.js +38 -0
- package/dist/esm/rendering/Camera.js.map +1 -0
- package/dist/esm/rendering/Container.d.ts +5 -24
- package/dist/esm/rendering/Container.js +8 -71
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.d.ts +8 -10
- package/dist/esm/rendering/Drawable.js +12 -20
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +18 -0
- package/dist/esm/rendering/RenderNode.d.ts +81 -8
- package/dist/esm/rendering/RenderNode.js +121 -144
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +13 -0
- package/dist/esm/rendering/RenderTarget.js +13 -0
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.js +17 -0
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/RenderingContext.d.ts +87 -0
- package/dist/esm/rendering/RenderingContext.js +157 -0
- package/dist/esm/rendering/RenderingContext.js.map +1 -0
- package/dist/esm/rendering/TransformBuffer.d.ts +82 -0
- package/dist/esm/rendering/TransformBuffer.js +180 -0
- package/dist/esm/rendering/TransformBuffer.js.map +1 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +5 -12
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/geometry/Geometry.d.ts +40 -0
- package/dist/esm/rendering/geometry/Geometry.js +228 -0
- package/dist/esm/rendering/geometry/Geometry.js.map +1 -0
- package/dist/esm/rendering/geometry/GeometryAttribute.d.ts +32 -0
- package/dist/esm/rendering/geometry/QuadGeometry.d.ts +5 -0
- package/dist/esm/rendering/gradient/Gradient.d.ts +67 -0
- package/dist/esm/rendering/gradient/Gradient.js +160 -0
- package/dist/esm/rendering/gradient/Gradient.js.map +1 -0
- package/dist/esm/rendering/gradient/LinearGradient.d.ts +18 -0
- package/dist/esm/rendering/gradient/LinearGradient.js +49 -0
- package/dist/esm/rendering/gradient/LinearGradient.js.map +1 -0
- package/dist/esm/rendering/gradient/RadialGradient.d.ts +18 -0
- package/dist/esm/rendering/gradient/RadialGradient.js +44 -0
- package/dist/esm/rendering/gradient/RadialGradient.js.map +1 -0
- package/dist/esm/rendering/index.d.ts +16 -2
- package/dist/esm/rendering/material/Material.d.ts +114 -0
- package/dist/esm/rendering/material/Material.js +111 -0
- package/dist/esm/rendering/material/Material.js.map +1 -0
- package/dist/esm/rendering/material/MaterialKey.d.ts +18 -0
- package/dist/esm/rendering/material/MaterialKey.js +82 -0
- package/dist/esm/rendering/material/MaterialKey.js.map +1 -0
- package/dist/esm/rendering/material/MeshMaterial.d.ts +16 -0
- package/dist/esm/rendering/material/MeshMaterial.js +21 -0
- package/dist/esm/rendering/material/MeshMaterial.js.map +1 -0
- package/dist/esm/rendering/{mesh/MeshShader.d.ts → material/ShaderSource.d.ts} +29 -62
- package/dist/esm/rendering/{mesh/MeshShader.js → material/ShaderSource.js} +35 -62
- package/dist/esm/rendering/material/ShaderSource.js.map +1 -0
- package/dist/esm/rendering/material/SpriteMaterial.d.ts +15 -0
- package/dist/esm/rendering/material/SpriteMaterial.js +20 -0
- package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -0
- package/dist/esm/rendering/mesh/Mesh.d.ts +29 -12
- package/dist/esm/rendering/mesh/Mesh.js +122 -3
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/pass/RenderPassCoordinator.d.ts +63 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.d.ts +48 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.js +16 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.js.map +1 -0
- package/dist/esm/rendering/plan/RenderCommand.d.ts +86 -0
- package/dist/esm/rendering/plan/RenderCommand.js +127 -0
- package/dist/esm/rendering/plan/RenderCommand.js.map +1 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts +10 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.js +159 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -0
- package/dist/esm/rendering/plan/RenderInstruction.d.ts +51 -0
- package/dist/esm/rendering/plan/RenderInstruction.js +45 -0
- package/dist/esm/rendering/plan/RenderInstruction.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlan.d.ts +23 -0
- package/dist/esm/rendering/plan/RenderPlan.js +12 -0
- package/dist/esm/rendering/plan/RenderPlan.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +31 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.js +242 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts +10 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js +180 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts +13 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.js +107 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -0
- package/dist/esm/rendering/plan/RenderScope.d.ts +70 -0
- package/dist/esm/rendering/plan/RenderScope.js +16 -0
- package/dist/esm/rendering/plan/RenderScope.js.map +1 -0
- package/dist/esm/rendering/plan/playRenderTree.d.ts +4 -0
- package/dist/esm/rendering/plan/playRenderTree.js +19 -0
- package/dist/esm/rendering/plan/playRenderTree.js.map +1 -0
- package/dist/esm/rendering/primitives/Graphics.d.ts +70 -5
- package/dist/esm/rendering/primitives/Graphics.js +172 -14
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts +22 -1
- package/dist/esm/rendering/sprite/Sprite.js +33 -2
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/spriteMaterialSources.d.ts +41 -0
- package/dist/esm/rendering/sprite/spriteMaterialSources.js +149 -0
- package/dist/esm/rendering/sprite/spriteMaterialSources.js.map +1 -0
- package/dist/esm/rendering/text/BitmapText.d.ts +2 -0
- package/dist/esm/rendering/text/BitmapText.js +8 -1
- package/dist/esm/rendering/text/BitmapText.js.map +1 -1
- package/dist/esm/rendering/text/BmFont.js +3 -0
- package/dist/esm/rendering/text/BmFont.js.map +1 -1
- package/dist/esm/rendering/text/GlyphSdf.d.ts +14 -0
- package/dist/esm/rendering/text/GlyphSdf.js +41 -11
- package/dist/esm/rendering/text/GlyphSdf.js.map +1 -1
- package/dist/esm/rendering/text/TextStyle.d.ts +6 -1
- package/dist/esm/rendering/text/TextStyle.js +1 -1
- package/dist/esm/rendering/text/TextStyle.js.map +1 -1
- package/dist/esm/rendering/texture/DataTexture.d.ts +5 -0
- package/dist/esm/rendering/texture/DataTexture.js +7 -0
- package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
- package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +3 -7
- package/dist/esm/rendering/video/Video.js +3 -8
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +62 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +352 -21
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +22 -2
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +404 -112
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +8 -0
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +8 -0
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.d.ts +57 -0
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js +79 -0
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +14 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +257 -78
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts +34 -0
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +169 -0
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts +7 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +11 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/glsl/mesh.frag.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/mesh.vert.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/sprite.vert.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text-color.frag.js +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +63 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +180 -19
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +22 -17
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +24 -0
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +524 -98
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +7 -0
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +24 -22
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +141 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +270 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +25 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +430 -76
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +57 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +257 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.d.ts +14 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.js +36 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +7 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +30 -19
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +48 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +103 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -0
- package/dist/esm/resources/JsonStore.d.ts +18 -0
- package/dist/esm/resources/JsonStore.js +62 -0
- package/dist/esm/resources/JsonStore.js.map +1 -0
- package/dist/esm/resources/Loader.js +1 -1
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/factories/ImageFactory.d.ts +14 -8
- package/dist/esm/resources/factories/ImageFactory.js +13 -6
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextureFactory.d.ts +4 -4
- package/dist/esm/resources/factories/TextureFactory.js +8 -4
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
- package/dist/esm/resources/index.d.ts +1 -0
- package/dist/exo.esm.js +6326 -2350
- package/dist/exo.esm.js.map +1 -1
- package/package.json +34 -24
- package/dist/esm/particles/distributions/Gradient.js.map +0 -1
- package/dist/esm/rendering/mesh/MeshShader.js.map +0 -1
- package/dist/esm/vendor/webgl-debug.js +0 -1160
- package/dist/esm/vendor/webgl-debug.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sprite.js","sources":["../../../../../src/rendering/sprite/Sprite.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"Sprite.js","sources":["../../../../../src/rendering/sprite/Sprite.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical engine vertex stage for the custom {@link SpriteMaterial} path.
|
|
3
|
+
*
|
|
4
|
+
* @internal — not part of the public package surface. A custom `SpriteMaterial`
|
|
5
|
+
* customizes the **fragment** stage only; the vertex stage (quad-corner
|
|
6
|
+
* expansion, affine transform, UV unpacking) is owned by the renderer and stays
|
|
7
|
+
* instancing-critical. The sprite renderers consume these constants directly:
|
|
8
|
+
* `WebGl2SpriteRenderer` pairs {@link spriteVertexGlsl} with the material's
|
|
9
|
+
* fragment (ignoring any author-supplied `glsl.vertex`), and
|
|
10
|
+
* `WebGpuSpriteRenderer` prepends {@link spriteVertexWgsl} to the material's
|
|
11
|
+
* fragment WGSL. Both pin the per-instance attribute locations and the
|
|
12
|
+
* projection binding exactly as the default sprite path does, so a custom
|
|
13
|
+
* material keeps the single `drawArraysInstanced` / `drawIndexed` batch.
|
|
14
|
+
*
|
|
15
|
+
* Both paths (locations 0, 3, 4, 5, 6) fetch each instance's world transform
|
|
16
|
+
* from the shared transform storage keyed by `a_nodeIndex` / `nodeIndex`: the
|
|
17
|
+
* WebGL2 path samples the `u_transforms` texture, the WGSL path reads the
|
|
18
|
+
* `transforms` storage buffer (group(0) binding(1)).
|
|
19
|
+
*
|
|
20
|
+
* A custom fragment receives the interpolated `v_texcoord` and premultiplied
|
|
21
|
+
* `v_color`, plus the per-batch base texture bound as `u_texture` (WebGL2 unit 0
|
|
22
|
+
* / WGSL group(1) binding 0). Material uniforms and additional textures bind on
|
|
23
|
+
* top (WebGL2 units 1..N / WGSL group(2)).
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* GLSL ES 3.00 vertex shader for the custom sprite-material path. Identical
|
|
27
|
+
* corner expansion and attribute contract to the default sprite vertex shader.
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
export declare const spriteVertexGlsl = "#version 300 es\nprecision highp float;\nprecision highp int;\n\n// Per-instance attributes (divisor = 1). Each Sprite contributes one entry\n// to the per-instance buffer; gl_VertexID 0..3 selects which corner of the\n// quad this invocation is computing.\nlayout(location = 0) in vec4 a_localBounds; // left, top, right, bottom (local space)\nlayout(location = 3) in vec4 a_uvBounds; // uMin, vMin, uMax, vMax (normalised, already flipY-swapped)\nlayout(location = 4) in vec4 a_color; // RGBA tint\nlayout(location = 5) in uint a_textureSlot;\nlayout(location = 6) in uint a_nodeIndex; // row into the shared transform buffer\n\nuniform mat3 u_projection;\nuniform sampler2D u_transforms; // shared per-frame transform buffer (3 texels/row)\n\nout vec2 v_texcoord;\nout vec4 v_color;\nflat out uint v_textureSlot;\n\nvoid main(void) {\n // gl_VertexID 0..3 \u2192 corner: 0=TL, 1=TR, 2=BL, 3=BR (TRIANGLE_STRIP order)\n int vid = gl_VertexID;\n int cornerX = vid & 1;\n int cornerY = (vid >> 1) & 1;\n\n float localX = (cornerX == 0) ? a_localBounds.x : a_localBounds.z;\n float localY = (cornerY == 0) ? a_localBounds.y : a_localBounds.w;\n\n // Fetch the per-instance world transform from the shared buffer (row =\n // a_nodeIndex): texel 0 = (a, b, c, d), texel 1 = (tx, ty, 0, 0).\n int row = int(a_nodeIndex);\n vec4 m0 = texelFetch(u_transforms, ivec2(0, row), 0);\n vec4 m1 = texelFetch(u_transforms, ivec2(1, row), 0);\n\n float worldX = (m0.x * localX) + (m0.y * localY) + m1.x;\n float worldY = (m0.z * localX) + (m0.w * localY) + m1.y;\n\n gl_Position = vec4((u_projection * vec3(worldX, worldY, 1.0)).xy, 0.0, 1.0);\n\n float u = (cornerX == 0) ? a_uvBounds.x : a_uvBounds.z;\n float v = (cornerY == 0) ? a_uvBounds.y : a_uvBounds.w;\n v_texcoord = vec2(u, v);\n\n v_color = vec4(a_color.rgb * a_color.a, a_color.a);\n v_textureSlot = a_textureSlot;\n}\n";
|
|
31
|
+
/**
|
|
32
|
+
* WGSL vertex stage + shared bindings for the custom sprite-material path.
|
|
33
|
+
* Prepend to a material's fragment WGSL: it declares the per-instance
|
|
34
|
+
* `VertexInput` (locations 0, 3, 4, 5, 6), the `VertexOutput` a custom
|
|
35
|
+
* `@fragment` consumes, the group(0) projection uniform + shared transform
|
|
36
|
+
* storage buffer, the group(1) base texture and sampler (`u_texture` /
|
|
37
|
+
* `u_sampler`), and the `vertexMain` entry point. The fragment author adds their
|
|
38
|
+
* group(2) bindings and a `fragmentMain` reading `VertexOutput`.
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export declare const spriteVertexWgsl = "\nstruct ProjectionUniforms {\n matrix: mat4x4<f32>,\n};\n\nstruct TransformSlot {\n m0: vec4<f32>,\n m1: vec4<f32>,\n m2: vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> projection: ProjectionUniforms;\n@group(0) @binding(1) var<storage, read> transforms: array<TransformSlot>;\n\n@group(1) @binding(0) var u_texture: texture_2d<f32>;\n@group(1) @binding(1) var u_sampler: sampler;\n\nstruct VertexInput {\n @location(0) localBounds: vec4<f32>,\n @location(3) uvBounds: vec4<f32>,\n @location(4) color: vec4<f32>,\n @location(5) textureSlot: u32,\n @location(6) nodeIndex: u32,\n};\n\nstruct VertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) texcoord: vec2<f32>,\n @location(1) color: vec4<f32>,\n};\n\n@vertex\nfn vertexMain(input: VertexInput, @builtin(vertex_index) vid: u32) -> VertexOutput {\n var output: VertexOutput;\n\n let cornerX = ((vid + 1u) >> 1u) & 1u;\n let cornerY = vid >> 1u;\n\n let localX = select(input.localBounds.x, input.localBounds.z, cornerX == 1u);\n let localY = select(input.localBounds.y, input.localBounds.w, cornerY == 1u);\n\n // Fetch this instance's world transform from the shared storage buffer,\n // keyed by nodeIndex: m0 = (a, b, c, d), m1 = (tx, ty, 0, 0). (m2 carries the\n // node tint, unused here \u2014 the sprite keeps its own per-instance color.)\n let slot = transforms[input.nodeIndex];\n let worldX = slot.m0.x * localX + slot.m0.y * localY + slot.m1.x;\n let worldY = slot.m0.z * localX + slot.m0.w * localY + slot.m1.y;\n\n output.position = projection.matrix * vec4<f32>(worldX, worldY, 0.0, 1.0);\n\n let u = select(input.uvBounds.x, input.uvBounds.z, cornerX == 1u);\n let v = select(input.uvBounds.y, input.uvBounds.w, cornerY == 1u);\n output.texcoord = vec2<f32>(u, v);\n\n output.color = vec4<f32>(input.color.rgb * input.color.a, input.color.a);\n\n return output;\n}\n";
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical engine vertex stage for the custom {@link SpriteMaterial} path.
|
|
3
|
+
*
|
|
4
|
+
* @internal — not part of the public package surface. A custom `SpriteMaterial`
|
|
5
|
+
* customizes the **fragment** stage only; the vertex stage (quad-corner
|
|
6
|
+
* expansion, affine transform, UV unpacking) is owned by the renderer and stays
|
|
7
|
+
* instancing-critical. The sprite renderers consume these constants directly:
|
|
8
|
+
* `WebGl2SpriteRenderer` pairs {@link spriteVertexGlsl} with the material's
|
|
9
|
+
* fragment (ignoring any author-supplied `glsl.vertex`), and
|
|
10
|
+
* `WebGpuSpriteRenderer` prepends {@link spriteVertexWgsl} to the material's
|
|
11
|
+
* fragment WGSL. Both pin the per-instance attribute locations and the
|
|
12
|
+
* projection binding exactly as the default sprite path does, so a custom
|
|
13
|
+
* material keeps the single `drawArraysInstanced` / `drawIndexed` batch.
|
|
14
|
+
*
|
|
15
|
+
* Both paths (locations 0, 3, 4, 5, 6) fetch each instance's world transform
|
|
16
|
+
* from the shared transform storage keyed by `a_nodeIndex` / `nodeIndex`: the
|
|
17
|
+
* WebGL2 path samples the `u_transforms` texture, the WGSL path reads the
|
|
18
|
+
* `transforms` storage buffer (group(0) binding(1)).
|
|
19
|
+
*
|
|
20
|
+
* A custom fragment receives the interpolated `v_texcoord` and premultiplied
|
|
21
|
+
* `v_color`, plus the per-batch base texture bound as `u_texture` (WebGL2 unit 0
|
|
22
|
+
* / WGSL group(1) binding 0). Material uniforms and additional textures bind on
|
|
23
|
+
* top (WebGL2 units 1..N / WGSL group(2)).
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* GLSL ES 3.00 vertex shader for the custom sprite-material path. Identical
|
|
27
|
+
* corner expansion and attribute contract to the default sprite vertex shader.
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
const spriteVertexGlsl = `#version 300 es
|
|
31
|
+
precision highp float;
|
|
32
|
+
precision highp int;
|
|
33
|
+
|
|
34
|
+
// Per-instance attributes (divisor = 1). Each Sprite contributes one entry
|
|
35
|
+
// to the per-instance buffer; gl_VertexID 0..3 selects which corner of the
|
|
36
|
+
// quad this invocation is computing.
|
|
37
|
+
layout(location = 0) in vec4 a_localBounds; // left, top, right, bottom (local space)
|
|
38
|
+
layout(location = 3) in vec4 a_uvBounds; // uMin, vMin, uMax, vMax (normalised, already flipY-swapped)
|
|
39
|
+
layout(location = 4) in vec4 a_color; // RGBA tint
|
|
40
|
+
layout(location = 5) in uint a_textureSlot;
|
|
41
|
+
layout(location = 6) in uint a_nodeIndex; // row into the shared transform buffer
|
|
42
|
+
|
|
43
|
+
uniform mat3 u_projection;
|
|
44
|
+
uniform sampler2D u_transforms; // shared per-frame transform buffer (3 texels/row)
|
|
45
|
+
|
|
46
|
+
out vec2 v_texcoord;
|
|
47
|
+
out vec4 v_color;
|
|
48
|
+
flat out uint v_textureSlot;
|
|
49
|
+
|
|
50
|
+
void main(void) {
|
|
51
|
+
// gl_VertexID 0..3 → corner: 0=TL, 1=TR, 2=BL, 3=BR (TRIANGLE_STRIP order)
|
|
52
|
+
int vid = gl_VertexID;
|
|
53
|
+
int cornerX = vid & 1;
|
|
54
|
+
int cornerY = (vid >> 1) & 1;
|
|
55
|
+
|
|
56
|
+
float localX = (cornerX == 0) ? a_localBounds.x : a_localBounds.z;
|
|
57
|
+
float localY = (cornerY == 0) ? a_localBounds.y : a_localBounds.w;
|
|
58
|
+
|
|
59
|
+
// Fetch the per-instance world transform from the shared buffer (row =
|
|
60
|
+
// a_nodeIndex): texel 0 = (a, b, c, d), texel 1 = (tx, ty, 0, 0).
|
|
61
|
+
int row = int(a_nodeIndex);
|
|
62
|
+
vec4 m0 = texelFetch(u_transforms, ivec2(0, row), 0);
|
|
63
|
+
vec4 m1 = texelFetch(u_transforms, ivec2(1, row), 0);
|
|
64
|
+
|
|
65
|
+
float worldX = (m0.x * localX) + (m0.y * localY) + m1.x;
|
|
66
|
+
float worldY = (m0.z * localX) + (m0.w * localY) + m1.y;
|
|
67
|
+
|
|
68
|
+
gl_Position = vec4((u_projection * vec3(worldX, worldY, 1.0)).xy, 0.0, 1.0);
|
|
69
|
+
|
|
70
|
+
float u = (cornerX == 0) ? a_uvBounds.x : a_uvBounds.z;
|
|
71
|
+
float v = (cornerY == 0) ? a_uvBounds.y : a_uvBounds.w;
|
|
72
|
+
v_texcoord = vec2(u, v);
|
|
73
|
+
|
|
74
|
+
v_color = vec4(a_color.rgb * a_color.a, a_color.a);
|
|
75
|
+
v_textureSlot = a_textureSlot;
|
|
76
|
+
}
|
|
77
|
+
`;
|
|
78
|
+
/**
|
|
79
|
+
* WGSL vertex stage + shared bindings for the custom sprite-material path.
|
|
80
|
+
* Prepend to a material's fragment WGSL: it declares the per-instance
|
|
81
|
+
* `VertexInput` (locations 0, 3, 4, 5, 6), the `VertexOutput` a custom
|
|
82
|
+
* `@fragment` consumes, the group(0) projection uniform + shared transform
|
|
83
|
+
* storage buffer, the group(1) base texture and sampler (`u_texture` /
|
|
84
|
+
* `u_sampler`), and the `vertexMain` entry point. The fragment author adds their
|
|
85
|
+
* group(2) bindings and a `fragmentMain` reading `VertexOutput`.
|
|
86
|
+
* @internal
|
|
87
|
+
*/
|
|
88
|
+
const spriteVertexWgsl = `
|
|
89
|
+
struct ProjectionUniforms {
|
|
90
|
+
matrix: mat4x4<f32>,
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
struct TransformSlot {
|
|
94
|
+
m0: vec4<f32>,
|
|
95
|
+
m1: vec4<f32>,
|
|
96
|
+
m2: vec4<f32>,
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
@group(0) @binding(0) var<uniform> projection: ProjectionUniforms;
|
|
100
|
+
@group(0) @binding(1) var<storage, read> transforms: array<TransformSlot>;
|
|
101
|
+
|
|
102
|
+
@group(1) @binding(0) var u_texture: texture_2d<f32>;
|
|
103
|
+
@group(1) @binding(1) var u_sampler: sampler;
|
|
104
|
+
|
|
105
|
+
struct VertexInput {
|
|
106
|
+
@location(0) localBounds: vec4<f32>,
|
|
107
|
+
@location(3) uvBounds: vec4<f32>,
|
|
108
|
+
@location(4) color: vec4<f32>,
|
|
109
|
+
@location(5) textureSlot: u32,
|
|
110
|
+
@location(6) nodeIndex: u32,
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
struct VertexOutput {
|
|
114
|
+
@builtin(position) position: vec4<f32>,
|
|
115
|
+
@location(0) texcoord: vec2<f32>,
|
|
116
|
+
@location(1) color: vec4<f32>,
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
@vertex
|
|
120
|
+
fn vertexMain(input: VertexInput, @builtin(vertex_index) vid: u32) -> VertexOutput {
|
|
121
|
+
var output: VertexOutput;
|
|
122
|
+
|
|
123
|
+
let cornerX = ((vid + 1u) >> 1u) & 1u;
|
|
124
|
+
let cornerY = vid >> 1u;
|
|
125
|
+
|
|
126
|
+
let localX = select(input.localBounds.x, input.localBounds.z, cornerX == 1u);
|
|
127
|
+
let localY = select(input.localBounds.y, input.localBounds.w, cornerY == 1u);
|
|
128
|
+
|
|
129
|
+
// Fetch this instance's world transform from the shared storage buffer,
|
|
130
|
+
// keyed by nodeIndex: m0 = (a, b, c, d), m1 = (tx, ty, 0, 0). (m2 carries the
|
|
131
|
+
// node tint, unused here — the sprite keeps its own per-instance color.)
|
|
132
|
+
let slot = transforms[input.nodeIndex];
|
|
133
|
+
let worldX = slot.m0.x * localX + slot.m0.y * localY + slot.m1.x;
|
|
134
|
+
let worldY = slot.m0.z * localX + slot.m0.w * localY + slot.m1.y;
|
|
135
|
+
|
|
136
|
+
output.position = projection.matrix * vec4<f32>(worldX, worldY, 0.0, 1.0);
|
|
137
|
+
|
|
138
|
+
let u = select(input.uvBounds.x, input.uvBounds.z, cornerX == 1u);
|
|
139
|
+
let v = select(input.uvBounds.y, input.uvBounds.w, cornerY == 1u);
|
|
140
|
+
output.texcoord = vec2<f32>(u, v);
|
|
141
|
+
|
|
142
|
+
output.color = vec4<f32>(input.color.rgb * input.color.a, input.color.a);
|
|
143
|
+
|
|
144
|
+
return output;
|
|
145
|
+
}
|
|
146
|
+
`;
|
|
147
|
+
|
|
148
|
+
export { spriteVertexGlsl, spriteVertexWgsl };
|
|
149
|
+
//# sourceMappingURL=spriteMaterialSources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spriteMaterialSources.js","sources":["../../../../../src/rendering/sprite/spriteMaterialSources.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AAEH;;;;AAIG;AACI,MAAM,gBAAgB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDhC;;;;;;;;;AASG;AACI,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -35,6 +35,8 @@ export declare class BmFontAdapter implements GlyphProvider {
|
|
|
35
35
|
private readonly _scale;
|
|
36
36
|
/** Fallback advance for characters not present in the font (≈ ½ line height). */
|
|
37
37
|
private readonly _fallbackAdvance;
|
|
38
|
+
/** Identifier used as part of the warnOnce key — derived from the first page filename. */
|
|
39
|
+
private readonly _fontId;
|
|
38
40
|
constructor(fontData: BmFontData, textures: readonly Texture[], scale: number);
|
|
39
41
|
getGlyph(char: string, _fontSize: number): GlyphInfo;
|
|
40
42
|
getKerning(prev: string, next: string, _fontSize: number): number;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { warnOnce, assert } from '../../core/dev.js';
|
|
1
2
|
import { AbstractText } from './AbstractText.js';
|
|
2
3
|
import { layoutText, buildTextPageQuads } from './TextLayout.js';
|
|
3
4
|
import { TextStyle } from './TextStyle.js';
|
|
@@ -19,11 +20,14 @@ class BmFontAdapter {
|
|
|
19
20
|
_scale;
|
|
20
21
|
/** Fallback advance for characters not present in the font (≈ ½ line height). */
|
|
21
22
|
_fallbackAdvance;
|
|
23
|
+
/** Identifier used as part of the warnOnce key — derived from the first page filename. */
|
|
24
|
+
_fontId;
|
|
22
25
|
constructor(fontData, textures, scale) {
|
|
23
26
|
this._fontData = fontData;
|
|
24
27
|
this._textures = textures;
|
|
25
28
|
this._scale = scale;
|
|
26
29
|
this._fallbackAdvance = fontData.lineHeight * scale * 0.5;
|
|
30
|
+
this._fontId = fontData.pages[0] ?? 'unknown';
|
|
27
31
|
}
|
|
28
32
|
getGlyph(char, _fontSize) {
|
|
29
33
|
const cp = char.codePointAt(0) ?? 0;
|
|
@@ -32,7 +36,9 @@ class BmFontAdapter {
|
|
|
32
36
|
const lh = this._fontData.lineHeight;
|
|
33
37
|
const base = this._fontData.base;
|
|
34
38
|
if (g === undefined) {
|
|
35
|
-
// Unknown glyph —
|
|
39
|
+
// Unknown glyph — warn once per font + codepoint, then return an invisible
|
|
40
|
+
// placeholder with a cursor advance so layout still makes progress.
|
|
41
|
+
warnOnce(`bitmaptext:${this._fontId}:${cp}`, `BitmapText: missing glyph U+${cp.toString(16).toUpperCase().padStart(4, '0')} ('${char}') in "${this._fontId}"`);
|
|
36
42
|
return {
|
|
37
43
|
x: 0,
|
|
38
44
|
y: 0,
|
|
@@ -47,6 +53,7 @@ class BmFontAdapter {
|
|
|
47
53
|
uvBottom: 0,
|
|
48
54
|
};
|
|
49
55
|
}
|
|
56
|
+
assert(g.page < this._textures.length, `BitmapText: glyph page index ${g.page} is out of range — font "${this._fontId}" has ${this._textures.length} page(s)`);
|
|
50
57
|
const texW = this._textures[g.page]?.width ?? 1;
|
|
51
58
|
const texH = this._textures[g.page]?.height ?? 1;
|
|
52
59
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitmapText.js","sources":["../../../../../src/rendering/text/BitmapText.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BitmapText.js","sources":["../../../../../src/rendering/text/BitmapText.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { assert } from '../../core/dev.js';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* A loaded BMFont asset: the parsed descriptor plus all page textures.
|
|
3
5
|
*
|
|
@@ -15,6 +17,7 @@ class BmFont {
|
|
|
15
17
|
fontData;
|
|
16
18
|
textures;
|
|
17
19
|
constructor(fontData, textures) {
|
|
20
|
+
assert(textures.length === fontData.pages.length, `BmFont: texture count (${textures.length}) must match page count (${fontData.pages.length})`);
|
|
18
21
|
this.fontData = fontData;
|
|
19
22
|
this.textures = textures;
|
|
20
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BmFont.js","sources":["../../../../../src/rendering/text/BmFont.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BmFont.js","sources":["../../../../../src/rendering/text/BmFont.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAoCA;;;;;;;;;;;;AAYG;MACU,MAAM,CAAA;AACD,IAAA,QAAQ;AACR,IAAA,QAAQ;IAExB,WAAA,CAAmB,QAAoB,EAAE,QAA4B,EAAA;QACnE,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,0BAA0B,QAAQ,CAAC,MAAM,CAAA,yBAAA,EAA4B,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAA,CAAA,CAAG,CAAC;AAChJ,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC1B;AACD;;;;"}
|
|
@@ -69,6 +69,10 @@ export declare class GlyphSdf {
|
|
|
69
69
|
private readonly _radius;
|
|
70
70
|
private readonly _cutoff;
|
|
71
71
|
private readonly _font;
|
|
72
|
+
private readonly _fontSize;
|
|
73
|
+
private _fontAscent;
|
|
74
|
+
private _fontDescent;
|
|
75
|
+
private _metricsReady;
|
|
72
76
|
private _canvasW;
|
|
73
77
|
private _canvasH;
|
|
74
78
|
private readonly _canvas;
|
|
@@ -88,5 +92,15 @@ export declare class GlyphSdf {
|
|
|
88
92
|
* fresh `Uint8ClampedArray`; the caller may hold a reference to it safely
|
|
89
93
|
* across subsequent `draw()` calls.
|
|
90
94
|
*/
|
|
95
|
+
/**
|
|
96
|
+
* Ensure font-level ascent/descent are measured. Called once per GlyphSdf
|
|
97
|
+
* instance — deferred to the first draw() so the canvas context is ready.
|
|
98
|
+
* Uses `fontBoundingBoxAscent/Descent` when available; falls back to
|
|
99
|
+
* `actualBoundingBoxAscent/Descent` measured from a reference string that
|
|
100
|
+
* covers ascenders ('H'), descenders ('g'), and diacritics ('É').
|
|
101
|
+
* Either way the same values are used for EVERY glyph so all tiles share a
|
|
102
|
+
* consistent height and a consistent baseline position within the tile.
|
|
103
|
+
*/
|
|
104
|
+
private _ensureFontMetrics;
|
|
91
105
|
draw(char: string): GlyphSdfResult;
|
|
92
106
|
}
|
|
@@ -25,6 +25,14 @@ class GlyphSdf {
|
|
|
25
25
|
_radius;
|
|
26
26
|
_cutoff;
|
|
27
27
|
_font;
|
|
28
|
+
_fontSize;
|
|
29
|
+
// Font-level ascent/descent — measured once from a reference string so that
|
|
30
|
+
// all glyph tiles share the same height and baseline position. This avoids
|
|
31
|
+
// the per-glyph actualBoundingBoxAscent variation that causes baseline jumps
|
|
32
|
+
// when fontBoundingBoxAscent is unavailable (common for loaded web fonts).
|
|
33
|
+
_fontAscent = 0;
|
|
34
|
+
_fontDescent = 0;
|
|
35
|
+
_metricsReady = false;
|
|
28
36
|
_canvasW = 0;
|
|
29
37
|
_canvasH = 0;
|
|
30
38
|
_canvas;
|
|
@@ -41,18 +49,19 @@ class GlyphSdf {
|
|
|
41
49
|
this._buffer = options.buffer ?? 8;
|
|
42
50
|
this._radius = options.radius ?? this._buffer;
|
|
43
51
|
this._cutoff = options.cutoff ?? 0.5;
|
|
52
|
+
this._fontSize = options.fontSize;
|
|
44
53
|
const stylePart = options.fontStyle && options.fontStyle !== 'normal' ? `${options.fontStyle} ` : '';
|
|
45
54
|
const weight = options.fontWeight ?? 'normal';
|
|
46
55
|
this._font = `${stylePart}${weight} ${options.fontSize}px ${options.fontFamily}`;
|
|
47
56
|
if (typeof OffscreenCanvas !== 'undefined') {
|
|
48
57
|
const c = new OffscreenCanvas(1, 1);
|
|
49
58
|
this._canvas = c;
|
|
50
|
-
this._ctx = c.getContext('2d');
|
|
59
|
+
this._ctx = c.getContext('2d', { willReadFrequently: true });
|
|
51
60
|
}
|
|
52
61
|
else {
|
|
53
62
|
const c = document.createElement('canvas');
|
|
54
63
|
this._canvas = c;
|
|
55
|
-
this._ctx = c.getContext('2d');
|
|
64
|
+
this._ctx = c.getContext('2d', { willReadFrequently: true });
|
|
56
65
|
}
|
|
57
66
|
}
|
|
58
67
|
/**
|
|
@@ -62,7 +71,28 @@ class GlyphSdf {
|
|
|
62
71
|
* fresh `Uint8ClampedArray`; the caller may hold a reference to it safely
|
|
63
72
|
* across subsequent `draw()` calls.
|
|
64
73
|
*/
|
|
74
|
+
/**
|
|
75
|
+
* Ensure font-level ascent/descent are measured. Called once per GlyphSdf
|
|
76
|
+
* instance — deferred to the first draw() so the canvas context is ready.
|
|
77
|
+
* Uses `fontBoundingBoxAscent/Descent` when available; falls back to
|
|
78
|
+
* `actualBoundingBoxAscent/Descent` measured from a reference string that
|
|
79
|
+
* covers ascenders ('H'), descenders ('g'), and diacritics ('É').
|
|
80
|
+
* Either way the same values are used for EVERY glyph so all tiles share a
|
|
81
|
+
* consistent height and a consistent baseline position within the tile.
|
|
82
|
+
*/
|
|
83
|
+
_ensureFontMetrics() {
|
|
84
|
+
if (this._metricsReady)
|
|
85
|
+
return;
|
|
86
|
+
const ctx = this._ctx;
|
|
87
|
+
ctx.font = this._font;
|
|
88
|
+
ctx.textBaseline = 'alphabetic';
|
|
89
|
+
const m = ctx.measureText('HgjpqyÉÅ');
|
|
90
|
+
this._fontAscent = Math.max(1, Math.ceil(m.fontBoundingBoxAscent ?? m.actualBoundingBoxAscent ?? this._fontSize * 0.8));
|
|
91
|
+
this._fontDescent = Math.max(1, Math.ceil(m.fontBoundingBoxDescent ?? m.actualBoundingBoxDescent ?? this._fontSize * 0.2));
|
|
92
|
+
this._metricsReady = true;
|
|
93
|
+
}
|
|
65
94
|
draw(char) {
|
|
95
|
+
this._ensureFontMetrics();
|
|
66
96
|
const ctx = this._ctx;
|
|
67
97
|
const buf = this._buffer;
|
|
68
98
|
// ── Measure ──────────────────────────────────────────────────────────
|
|
@@ -70,20 +100,20 @@ class GlyphSdf {
|
|
|
70
100
|
ctx.textBaseline = 'alphabetic';
|
|
71
101
|
const m = ctx.measureText(char);
|
|
72
102
|
const advance = m.width;
|
|
103
|
+
// Width uses per-glyph actual bounds — each glyph has a different width.
|
|
73
104
|
// Canvas 2D `actualBoundingBoxLeft` is the distance from the text's
|
|
74
105
|
// left-alignment point going LEFT to the left edge of the glyph bounding
|
|
75
106
|
// box. For most LTR characters this is 0; italic fonts may have a small
|
|
76
107
|
// positive value (left overhang).
|
|
77
108
|
const bbLeft = Math.max(0, Math.ceil(m.actualBoundingBoxLeft ?? 0));
|
|
78
109
|
const bbRight = Math.max(0, Math.ceil(m.actualBoundingBoxRight ?? advance));
|
|
79
|
-
const bbAscent = Math.max(0, Math.ceil(m.fontBoundingBoxAscent ??
|
|
80
|
-
m.actualBoundingBoxAscent ??
|
|
81
|
-
0));
|
|
82
|
-
const bbDescent = Math.max(0, Math.ceil(m.fontBoundingBoxDescent ??
|
|
83
|
-
m.actualBoundingBoxDescent ??
|
|
84
|
-
0));
|
|
85
110
|
const glyphWidth = Math.max(1, bbLeft + bbRight);
|
|
86
|
-
|
|
111
|
+
// Height uses font-level metrics — same for every glyph of this font/size
|
|
112
|
+
// so that all tiles are the same height and the baseline is always at
|
|
113
|
+
// buf + _fontAscent from the tile top. If per-glyph actualBoundingBoxAscent
|
|
114
|
+
// were used here instead, different glyphs would have their baselines at
|
|
115
|
+
// different positions in world space (the visual baseline-jump bug).
|
|
116
|
+
const glyphHeight = this._fontAscent + this._fontDescent;
|
|
87
117
|
const tileW = glyphWidth + 2 * buf;
|
|
88
118
|
const tileH = glyphHeight + 2 * buf;
|
|
89
119
|
// ── Resize canvas if the tile dimensions changed ───────────────────────
|
|
@@ -96,8 +126,8 @@ class GlyphSdf {
|
|
|
96
126
|
// ── Rasterize white glyph on transparent background ───────────────────
|
|
97
127
|
ctx.clearRect(0, 0, tileW, tileH);
|
|
98
128
|
ctx.fillStyle = '#ffffff';
|
|
99
|
-
//
|
|
100
|
-
ctx.fillText(char, buf + bbLeft, buf +
|
|
129
|
+
// Baseline at buf + _fontAscent — consistent across all glyphs.
|
|
130
|
+
ctx.fillText(char, buf + bbLeft, buf + this._fontAscent);
|
|
101
131
|
const rgba = ctx.getImageData(0, 0, tileW, tileH).data;
|
|
102
132
|
const n = tileW * tileH;
|
|
103
133
|
// ── Grow working arrays lazily ────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlyphSdf.js","sources":["../../../../../src/rendering/text/GlyphSdf.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;;;;AAYG;AAEH,MAAM,GAAG,GAAG,IAAI;AAuDhB;;;;;;;AAOG;MACU,QAAQ,CAAA;AACF,IAAA,OAAO;AACP,IAAA,OAAO;AACP,IAAA,OAAO;AACP,IAAA,KAAK;
|
|
1
|
+
{"version":3,"file":"GlyphSdf.js","sources":["../../../../../src/rendering/text/GlyphSdf.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ export type FontWeight = 'normal' | 'bold' | '100' | '200' | '300' | '400' | '50
|
|
|
20
20
|
* ```ts
|
|
21
21
|
* declare module 'exojs' {
|
|
22
22
|
* interface FontRegistry {
|
|
23
|
-
* '
|
|
23
|
+
* 'Kenney Future': true;
|
|
24
24
|
* }
|
|
25
25
|
* }
|
|
26
26
|
* ```
|
|
@@ -54,6 +54,11 @@ export interface TextStyleOptions {
|
|
|
54
54
|
*/
|
|
55
55
|
font?: FontFace;
|
|
56
56
|
fontFamily?: FontFamily;
|
|
57
|
+
/**
|
|
58
|
+
* CSS font-weight. Defaults to `'normal'` so that single-weight custom fonts
|
|
59
|
+
* render without browser-synthesised bold artefacts. Set explicitly to
|
|
60
|
+
* `'bold'` for display / title text that intentionally requires bold.
|
|
61
|
+
*/
|
|
57
62
|
fontWeight?: FontWeight;
|
|
58
63
|
fontStyle?: 'normal' | 'italic';
|
|
59
64
|
fontSize?: number;
|
|
@@ -47,7 +47,7 @@ class TextStyle {
|
|
|
47
47
|
constructor(options = {}) {
|
|
48
48
|
const explicitFace = typeof FontFace !== 'undefined' && options.font instanceof FontFace ? options.font : null;
|
|
49
49
|
this._fontFamily = explicitFace ? explicitFace.family : (options.fontFamily ?? 'Arial');
|
|
50
|
-
this._fontWeight = options.fontWeight ?? '
|
|
50
|
+
this._fontWeight = options.fontWeight ?? 'normal';
|
|
51
51
|
this._fontStyle = options.fontStyle ?? 'normal';
|
|
52
52
|
this._fontSize = options.fontSize ?? 20;
|
|
53
53
|
this._fillColor = options.fillColor ? options.fillColor.clone() : Color.white.clone();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextStyle.js","sources":["../../../../../src/rendering/text/TextStyle.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAeA,SAAS,SAAS,CAAC,CAAkB,EAAE,CAAkB,EAAA;AACvD,IAAA,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM;AAAE,QAAA,OAAO,MAAM;AAC/C,IAAA,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ;AAAE,QAAA,OAAO,QAAQ;AACrD,IAAA,OAAO,MAAM;AACf;
|
|
1
|
+
{"version":3,"file":"TextStyle.js","sources":["../../../../../src/rendering/text/TextStyle.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -90,6 +90,11 @@ export declare class DataTexture<F extends DataTextureFormat = DataTextureFormat
|
|
|
90
90
|
constructor(options: DataTextureOptions & {
|
|
91
91
|
format: F;
|
|
92
92
|
});
|
|
93
|
+
/**
|
|
94
|
+
* DataTexture has no external image source. Override the base implementation
|
|
95
|
+
* so Sprite/Mesh texture assignment does not collapse dimensions to 0x0.
|
|
96
|
+
*/
|
|
97
|
+
updateSource(): this;
|
|
93
98
|
/**
|
|
94
99
|
* Mark the entire buffer for re-upload on next backend sync. Call after
|
|
95
100
|
* mutating `buffer` contents to flush changes to the GPU.
|
|
@@ -108,6 +108,13 @@ class DataTexture extends Texture {
|
|
|
108
108
|
// Mark fully dirty so the first sync uploads the whole buffer.
|
|
109
109
|
this._dirty = { full: true, x: 0, y: 0, width, height };
|
|
110
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* DataTexture has no external image source. Override the base implementation
|
|
113
|
+
* so Sprite/Mesh texture assignment does not collapse dimensions to 0x0.
|
|
114
|
+
*/
|
|
115
|
+
updateSource() {
|
|
116
|
+
return this.commit();
|
|
117
|
+
}
|
|
111
118
|
/**
|
|
112
119
|
* Mark the entire buffer for re-upload on next backend sync. Call after
|
|
113
120
|
* mutating `buffer` contents to flush changes to the GPU.
|