babylonjs-addons 8.8.5 → 8.9.1

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.
@@ -1,7 +1,7 @@
1
1
 
2
2
  declare module "babylonjs-addons/index" {
3
- export * from "babylonjs-addons/htmlMesh";
4
- export * from "babylonjs-addons/msdfText";
3
+ export * from "babylonjs-addons/htmlMesh/index";
4
+ export * from "babylonjs-addons/msdfText/index";
5
5
 
6
6
  }
7
7
  declare module "babylonjs-addons/msdfText/textRenderer" {
@@ -10,13 +10,12 @@ import { IDisposable } from "babylonjs/scene";
10
10
  import { Nullable } from "babylonjs/types";
11
11
  import { FontAsset } from "babylonjs-addons/msdfText/fontAsset";
12
12
  import { ParagraphOptions } from "babylonjs-addons/msdfText/paragraphOptions";
13
- import { ThinMatrix } from "babylonjs/Maths/ThinMaths/thinMath.matrix";
14
- import { IColor4Like, IMatrixLike } from "babylonjs/Maths";
13
+ import { IColor4Like, IMatrixLike } from "babylonjs/Maths/math.like";
15
14
  /**
16
15
  * Abstract Node class from Babylon.js
17
16
  */
18
17
  export interface INodeLike {
19
- getWorldMatrix(): ThinMatrix;
18
+ getWorldMatrix(): IMatrixLike;
20
19
  }
21
20
  /**
22
21
  * Class used to render text using MSDF (Multi-channel Signed Distance Field) technique
@@ -26,6 +25,7 @@ export interface INodeLike {
26
25
  * With metrics: #6RLCWP#35
27
26
  * Thickness: #IABMEZ#3
28
27
  * Solar system: #9YCDYC#9
28
+ * Stroke: #6RLCWP#37
29
29
  */
30
30
  export class TextRenderer implements IDisposable {
31
31
  private readonly _useVAO;
@@ -52,11 +52,22 @@ export class TextRenderer implements IDisposable {
52
52
  private _finalMatrix;
53
53
  private _lineMatrix;
54
54
  private _parentWorldMatrix;
55
- private _storedTranslation;
56
55
  /**
57
56
  * Gets or sets the color of the text
58
57
  */
59
58
  color: IColor4Like;
59
+ /**
60
+ * Gets or sets the color of the stroke around the text
61
+ */
62
+ strokeColor: IColor4Like;
63
+ /**
64
+ * Gets or sets the width of the stroke around the text (inset)
65
+ */
66
+ strokeInsetWidth: number;
67
+ /**
68
+ * Gets or sets the width of the stroke around the text (outset)
69
+ */
70
+ strokeOutsetWidth: number;
60
71
  /**
61
72
  * Gets or sets the thickness of the text (0 means as defined in the font)
62
73
  * Value must be between -0.5 and 0.5
@@ -68,14 +79,32 @@ export class TextRenderer implements IDisposable {
68
79
  */
69
80
  get parent(): Nullable<INodeLike>;
70
81
  set parent(value: Nullable<INodeLike>);
82
+ private _transformMatrix;
83
+ /**
84
+ * Gets or sets the transform matrix of the text renderer
85
+ * It will be applied in that order:
86
+ * parent x transform x paragraph world
87
+ */
88
+ get transformMatrix(): IMatrixLike;
89
+ set transformMatrix(value: IMatrixLike);
71
90
  /**
72
91
  * Gets or sets if the text is billboarded
73
92
  */
74
93
  isBillboard: boolean;
94
+ /**
95
+ * Gets or sets if the text is screen projected
96
+ * This will work only if the text is billboarded
97
+ */
98
+ isBillboardScreenProjected: boolean;
75
99
  /**
76
100
  * Gets the number of characters in the text renderer
77
101
  */
78
102
  get characterCount(): number;
103
+ /**
104
+ * Gets or sets if the text renderer should ignore the depth buffer
105
+ * Default is false
106
+ */
107
+ ignoreDepthBuffer: boolean;
79
108
  private constructor();
80
109
  private _resizeBuffers;
81
110
  private _setShaders;
@@ -107,7 +136,7 @@ export class TextRenderer implements IDisposable {
107
136
 
108
137
  }
109
138
  declare module "babylonjs-addons/msdfText/paragraphOptions" {
110
- import { Vector2 } from "babylonjs/Maths/math.vector";
139
+ import { IVector2Like } from "babylonjs/Maths";
111
140
  /** @internal */
112
141
  export type ParagraphOptions = {
113
142
  maxWidth: number;
@@ -116,7 +145,7 @@ export type ParagraphOptions = {
116
145
  tabSize: number;
117
146
  whiteSpace: "pre-line";
118
147
  textAlign: "left" | "right" | "center";
119
- translate: Vector2 | undefined;
148
+ translate: IVector2Like | undefined;
120
149
  };
121
150
  /** @internal */
122
151
  export const DefaultParagraphOptions: ParagraphOptions;
@@ -126,16 +155,22 @@ declare module "babylonjs-addons/msdfText/index" {
126
155
  export * from "babylonjs-addons/msdfText/fontAsset";
127
156
  export * from "babylonjs-addons/msdfText/paragraphOptions";
128
157
  export * from "babylonjs-addons/msdfText/textRenderer";
158
+ export * from "babylonjs-addons/msdfText/sdf/index";
159
+ export * from "babylonjs-addons/msdfText/shaders/msdf.vertex";
160
+ export * from "babylonjs-addons/msdfText/shaders/msdf.fragment";
161
+ export * from "babylonjs-addons/msdfText/shadersWGSL/msdf.vertex";
162
+ export * from "babylonjs-addons/msdfText/shadersWGSL/msdf.fragment";
129
163
 
130
164
  }
131
165
  declare module "babylonjs-addons/msdfText/fontAsset" {
166
+ import { IDisposable, Scene } from "babylonjs/scene";
132
167
  import { BMFontChar } from "babylonjs-addons/msdfText/sdf/bmFont";
133
168
  import { SdfFont } from "babylonjs-addons/msdfText/sdf/font";
134
169
  import { Texture } from "babylonjs/Materials/Textures/texture";
135
170
  /**
136
171
  * Class representing a font asset for SDF (Signed Distance Field) rendering.
137
172
  */
138
- export class FontAsset {
173
+ export class FontAsset implements IDisposable {
139
174
  private readonly _chars;
140
175
  private readonly _charsRegex;
141
176
  private readonly _kernings;
@@ -153,8 +188,10 @@ export class FontAsset {
153
188
  * Creates a new FontAsset instance.
154
189
  * @param definitionData defines the font data in JSON format.
155
190
  * @param textureUrl defines the url of the texture to use for the font.
191
+ * @param scene defines the hosting scene.
156
192
  */
157
- constructor(definitionData: string, textureUrl: string);
193
+ constructor(definitionData: string, textureUrl: string, scene?: Scene);
194
+ dispose(): void;
158
195
  private _updateFallbacks;
159
196
  /** @internal */
160
197
  _getChar(charCode: number): BMFontChar;
@@ -165,23 +202,23 @@ export class FontAsset {
165
202
  }
166
203
 
167
204
  }
168
- declare module "babylonjs-addons/msdfText/webgpu/vertex" {
205
+ declare module "babylonjs-addons/msdfText/shadersWGSL/msdf.vertex" {
169
206
  /** @internal */
170
- export const msdfVertexShader: {
207
+ export const msdfVertexShaderWGSL: {
171
208
  name: string;
172
209
  shader: string;
173
210
  };
174
211
 
175
212
  }
176
- declare module "babylonjs-addons/msdfText/webgpu/fragment" {
213
+ declare module "babylonjs-addons/msdfText/shadersWGSL/msdf.fragment" {
177
214
  /** @internal */
178
- export const msdfFragmentShader: {
215
+ export const msdfPixelShaderWGSL: {
179
216
  name: string;
180
217
  shader: string;
181
218
  };
182
219
 
183
220
  }
184
- declare module "babylonjs-addons/msdfText/webgl/vertex" {
221
+ declare module "babylonjs-addons/msdfText/shaders/msdf.vertex" {
185
222
  /** @internal */
186
223
  export const msdfVertexShader: {
187
224
  name: string;
@@ -189,9 +226,9 @@ export const msdfVertexShader: {
189
226
  };
190
227
 
191
228
  }
192
- declare module "babylonjs-addons/msdfText/webgl/fragment" {
229
+ declare module "babylonjs-addons/msdfText/shaders/msdf.fragment" {
193
230
  /** @internal */
194
- export const msdfFragmentShader: {
231
+ export const msdfPixelShader: {
195
232
  name: string;
196
233
  shader: string;
197
234
  };
@@ -232,6 +269,14 @@ export type SdfTextLine = {
232
269
  width: number;
233
270
  };
234
271
 
272
+ }
273
+ declare module "babylonjs-addons/msdfText/sdf/index" {
274
+ export * from "babylonjs-addons/msdfText/sdf/bmFont";
275
+ export * from "babylonjs-addons/msdfText/sdf/font";
276
+ export * from "babylonjs-addons/msdfText/sdf/glyph";
277
+ export * from "babylonjs-addons/msdfText/sdf/line";
278
+ export * from "babylonjs-addons/msdfText/sdf/paragraph";
279
+
235
280
  }
236
281
  declare module "babylonjs-addons/msdfText/sdf/glyph" {
237
282
  import { BMFontChar } from "babylonjs-addons/msdfText/sdf/bmFont";
@@ -706,7 +751,7 @@ declare module ADDONS {
706
751
  * Abstract Node class from Babylon.js
707
752
  */
708
753
  export interface INodeLike {
709
- getWorldMatrix(): BABYLON.ThinMatrix;
754
+ getWorldMatrix(): BABYLON.IMatrixLike;
710
755
  }
711
756
  /**
712
757
  * Class used to render text using MSDF (Multi-channel Signed Distance Field) technique
@@ -716,6 +761,7 @@ declare module ADDONS {
716
761
  * With metrics: #6RLCWP#35
717
762
  * Thickness: #IABMEZ#3
718
763
  * Solar system: #9YCDYC#9
764
+ * Stroke: #6RLCWP#37
719
765
  */
720
766
  export class TextRenderer implements BABYLON.IDisposable {
721
767
  private readonly _useVAO;
@@ -742,11 +788,22 @@ declare module ADDONS {
742
788
  private _finalMatrix;
743
789
  private _lineMatrix;
744
790
  private _parentWorldMatrix;
745
- private _storedTranslation;
746
791
  /**
747
792
  * Gets or sets the color of the text
748
793
  */
749
794
  color: BABYLON.IColor4Like;
795
+ /**
796
+ * Gets or sets the color of the stroke around the text
797
+ */
798
+ strokeColor: BABYLON.IColor4Like;
799
+ /**
800
+ * Gets or sets the width of the stroke around the text (inset)
801
+ */
802
+ strokeInsetWidth: number;
803
+ /**
804
+ * Gets or sets the width of the stroke around the text (outset)
805
+ */
806
+ strokeOutsetWidth: number;
750
807
  /**
751
808
  * Gets or sets the thickness of the text (0 means as defined in the font)
752
809
  * Value must be between -0.5 and 0.5
@@ -758,14 +815,32 @@ declare module ADDONS {
758
815
  */
759
816
  get parent(): BABYLON.Nullable<INodeLike>;
760
817
  set parent(value: BABYLON.Nullable<INodeLike>);
818
+ private _transformMatrix;
819
+ /**
820
+ * Gets or sets the transform matrix of the text renderer
821
+ * It will be applied in that order:
822
+ * parent x transform x paragraph world
823
+ */
824
+ get transformMatrix(): BABYLON.IMatrixLike;
825
+ set transformMatrix(value: BABYLON.IMatrixLike);
761
826
  /**
762
827
  * Gets or sets if the text is billboarded
763
828
  */
764
829
  isBillboard: boolean;
830
+ /**
831
+ * Gets or sets if the text is screen projected
832
+ * This will work only if the text is billboarded
833
+ */
834
+ isBillboardScreenProjected: boolean;
765
835
  /**
766
836
  * Gets the number of characters in the text renderer
767
837
  */
768
838
  get characterCount(): number;
839
+ /**
840
+ * Gets or sets if the text renderer should ignore the depth buffer
841
+ * Default is false
842
+ */
843
+ ignoreDepthBuffer: boolean;
769
844
  private constructor();
770
845
  private _resizeBuffers;
771
846
  private _setShaders;
@@ -804,7 +879,7 @@ declare module ADDONS {
804
879
  tabSize: number;
805
880
  whiteSpace: "pre-line";
806
881
  textAlign: "left" | "right" | "center";
807
- translate: BABYLON.Vector2 | undefined;
882
+ translate: BABYLON.IVector2Like | undefined;
808
883
  };
809
884
  /** @internal */
810
885
  export var DefaultParagraphOptions: ParagraphOptions;
@@ -815,7 +890,7 @@ declare module ADDONS {
815
890
  /**
816
891
  * Class representing a font asset for SDF (Signed Distance Field) rendering.
817
892
  */
818
- export class FontAsset {
893
+ export class FontAsset implements BABYLON.IDisposable {
819
894
  private readonly _chars;
820
895
  private readonly _charsRegex;
821
896
  private readonly _kernings;
@@ -833,8 +908,10 @@ declare module ADDONS {
833
908
  * Creates a new FontAsset instance.
834
909
  * @param definitionData defines the font data in JSON format.
835
910
  * @param textureUrl defines the url of the texture to use for the font.
911
+ * @param scene defines the hosting scene.
836
912
  */
837
- constructor(definitionData: string, textureUrl: string);
913
+ constructor(definitionData: string, textureUrl: string, scene?: BABYLON.Scene);
914
+ dispose(): void;
838
915
  private _updateFallbacks;
839
916
  /** @internal */
840
917
  _getChar(charCode: number): BMFontChar;
@@ -846,14 +923,14 @@ declare module ADDONS {
846
923
 
847
924
 
848
925
  /** @internal */
849
- export var msdfVertexShader: {
926
+ export var msdfVertexShaderWGSL: {
850
927
  name: string;
851
928
  shader: string;
852
929
  };
853
930
 
854
931
 
855
932
  /** @internal */
856
- export var msdfFragmentShader: {
933
+ export var msdfPixelShaderWGSL: {
857
934
  name: string;
858
935
  shader: string;
859
936
  };
@@ -867,7 +944,7 @@ declare module ADDONS {
867
944
 
868
945
 
869
946
  /** @internal */
870
- export var msdfFragmentShader: {
947
+ export var msdfPixelShader: {
871
948
  name: string;
872
949
  shader: string;
873
950
  };
@@ -902,6 +979,8 @@ declare module ADDONS {
902
979
  };
903
980
 
904
981
 
982
+
983
+
905
984
  /** @internal */
906
985
  export type SdfGlyph = {
907
986
  char: BMFontChar;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "babylonjs-addons",
3
- "version": "8.8.5",
3
+ "version": "8.9.1",
4
4
  "main": "babylonjs.addons.js",
5
5
  "types": "babylonjs.addons.module.d.ts",
6
6
  "files": [
@@ -15,7 +15,7 @@
15
15
  "test:escheck": "es-check es6 ./babylonjs.addons.js"
16
16
  },
17
17
  "dependencies": {
18
- "babylonjs": "^8.8.5"
18
+ "babylonjs": "^8.9.1"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@dev/build-tools": "1.0.0",
package/138.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";(("undefined"!=typeof self?self:"undefined"!=typeof global?global:this).webpackChunkADDONS=("undefined"!=typeof self?self:"undefined"!=typeof global?global:this).webpackChunkADDONS||[]).push([[138],{138:(e,n,t)=>{t.r(n),t.d(n,{msdfFragmentShader:()=>f});var f={name:"msdfFragmentShader",shader:"\nvar fontAtlas: texture_2d<f32>;\nvar fontAtlasSampler: sampler;\nuniform unitRange: vec2f;\nuniform texelSize: vec2f;\nuniform uColor: vec4f;\nuniform thickness: f32;\n\nvarying atlasUV: vec2f;\n\nfn median(msdf: vec3<f32>) -> f32 {\n let a = min(msdf.r, msdf.g);\n let b = max(msdf.r, msdf.g);\n return max(a, min(b, msdf.b));\n}\n\n@fragment\nfn main(input: FragmentInputs) -> FragmentOutputs {\n let uv = input.atlasUV;\n\n // Sample center and neighbors\n let sdfCenter = textureSample(fontAtlas, fontAtlasSampler, uv).rgb;\n let sdfLeft = textureSample(fontAtlas, fontAtlasSampler, uv - vec2<f32>(uniforms.texelSize.x, 0.0)).rgb;\n let sdfRight = textureSample(fontAtlas, fontAtlasSampler, uv + vec2<f32>(uniforms.texelSize.x, 0.0)).rgb;\n let sdfTop = textureSample(fontAtlas, fontAtlasSampler, uv - vec2<f32>(0.0, uniforms.texelSize.y)).rgb;\n let sdfBottom = textureSample(fontAtlas, fontAtlasSampler, uv + vec2<f32>(0.0, uniforms.texelSize.y)).rgb;\n\n let sdf = (sdfCenter + sdfLeft + sdfRight + sdfTop + sdfBottom) / 5.0;\n\n let dist = median(sdfCenter);\n\n // Estimate pixel range in screen space\n let dx = dpdx(uv);\n let dy = dpdy(uv);\n let screenTexSize = vec2<f32>(1.0) / vec2<f32>(length(dx), length(dy));\n let pxRange = max(0.5 * dot(uniforms.unitRange, screenTexSize), 1.0);\n\n let pxDist = pxRange * (dist - 0.5 + uniforms.thickness);\n let alpha = clamp(pxDist / length(dpdx(pxDist)) + 0.5, 0.0, 1.0);\n\n fragmentOutputs.color = vec4<f32>(uniforms.uColor.rgb, alpha * uniforms.uColor.a);\n}"}}}]);
2
- //# sourceMappingURL=138.js.map
package/138.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"138.js","mappings":"2QACA,IA6CaA,EAAqB,CAAEC,KA7CvB,qBA6C6BC,OA5C3B,qjD","sources":["webpack://ADDONS/../../../dev/addons/src/msdfText/webgpu/fragment.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nconst name = \"msdfFragmentShader\";\r\nconst shader = `\r\nvar fontAtlas: texture_2d<f32>;\r\nvar fontAtlasSampler: sampler;\r\nuniform unitRange: vec2f;\r\nuniform texelSize: vec2f;\r\nuniform uColor: vec4f;\r\nuniform thickness: f32;\r\n\r\nvarying atlasUV: vec2f;\r\n\r\nfn median(msdf: vec3<f32>) -> f32 {\r\n let a = min(msdf.r, msdf.g);\r\n let b = max(msdf.r, msdf.g);\r\n return max(a, min(b, msdf.b));\r\n}\r\n\r\n@fragment\r\nfn main(input: FragmentInputs) -> FragmentOutputs {\r\n let uv = input.atlasUV;\r\n\r\n // Sample center and neighbors\r\n let sdfCenter = textureSample(fontAtlas, fontAtlasSampler, uv).rgb;\r\n let sdfLeft = textureSample(fontAtlas, fontAtlasSampler, uv - vec2<f32>(uniforms.texelSize.x, 0.0)).rgb;\r\n let sdfRight = textureSample(fontAtlas, fontAtlasSampler, uv + vec2<f32>(uniforms.texelSize.x, 0.0)).rgb;\r\n let sdfTop = textureSample(fontAtlas, fontAtlasSampler, uv - vec2<f32>(0.0, uniforms.texelSize.y)).rgb;\r\n let sdfBottom = textureSample(fontAtlas, fontAtlasSampler, uv + vec2<f32>(0.0, uniforms.texelSize.y)).rgb;\r\n\r\n let sdf = (sdfCenter + sdfLeft + sdfRight + sdfTop + sdfBottom) / 5.0;\r\n\r\n let dist = median(sdfCenter);\r\n\r\n // Estimate pixel range in screen space\r\n let dx = dpdx(uv);\r\n let dy = dpdy(uv);\r\n let screenTexSize = vec2<f32>(1.0) / vec2<f32>(length(dx), length(dy));\r\n let pxRange = max(0.5 * dot(uniforms.unitRange, screenTexSize), 1.0);\r\n\r\n let pxDist = pxRange * (dist - 0.5 + uniforms.thickness);\r\n let alpha = clamp(pxDist / length(dpdx(pxDist)) + 0.5, 0.0, 1.0);\r\n\r\n fragmentOutputs.color = vec4<f32>(uniforms.uColor.rgb, alpha * uniforms.uColor.a);\r\n}`;\r\n\r\n/** @internal */\r\nexport const msdfFragmentShader = { name, shader };\r\n"],"names":["msdfFragmentShader","name","shader"],"sourceRoot":""}
package/205.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";(("undefined"!=typeof self?self:"undefined"!=typeof global?global:this).webpackChunkADDONS=("undefined"!=typeof self?self:"undefined"!=typeof global?global:this).webpackChunkADDONS||[]).push([[205],{205:(e,n,t)=>{t.r(n),t.d(n,{msdfFragmentShader:()=>a});var a={name:"msdfFragmentShader",shader:"\n#extension GL_OES_standard_derivatives : enable\n\nprecision highp float;\n\nuniform sampler2D fontAtlas;\nuniform vec2 unitRange;\nuniform vec2 texelSize;\nuniform vec4 uColor;\nuniform float thickness;\n\nvarying vec2 atlasUV;\n\nfloat median(vec3 msdf) {\n return max(min(msdf.r, msdf.g), min(max(msdf.r, msdf.g), msdf.b));\n}\n \nfloat screenPxRange(sampler2D tex) {\n vec2 screenTexSize = vec2(1.0) / fwidth(atlasUV);\n return max(0.5 * dot(unitRange, screenTexSize), 1.0);\n}\n\nvoid main(void)\n{\n vec3 sdfCenter = texture2D(fontAtlas, atlasUV).rgb;\n vec3 sdfLeft = texture2D(fontAtlas, atlasUV - vec2(texelSize.x, 0.0)).rgb;\n vec3 sdfRight = texture2D(fontAtlas, atlasUV + vec2(texelSize.x, 0.0)).rgb;\n vec3 sdfTop = texture2D(fontAtlas, atlasUV - vec2(0.0, texelSize.y)).rgb;\n vec3 sdfBottom = texture2D(fontAtlas, atlasUV + vec2(0.0, texelSize.y)).rgb;\n\n vec3 sdf = (sdfCenter + sdfLeft + sdfRight + sdfTop + sdfBottom) / 5.0;\n\n float dist = median(sdfCenter);\n\n float pxRange = screenPxRange(fontAtlas);\n float pxDist = pxRange * (dist - 0.5 + thickness);\n float alpha = clamp(pxDist / fwidth(pxDist) + 0.5, 0.0, 1.0);\n\n gl_FragColor = vec4(uColor.rgb, alpha * uColor.a);\n}"}}}]);
2
- //# sourceMappingURL=205.js.map
package/205.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"205.js","mappings":"2QACA,IA2CaA,EAAqB,CAAEC,KA3CvB,qBA2C6BC,OA1C3B,guC","sources":["webpack://ADDONS/../../../dev/addons/src/msdfText/webgl/fragment.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nconst name = \"msdfFragmentShader\";\r\nconst shader = `\r\n#extension GL_OES_standard_derivatives : enable\r\n\r\nprecision highp float;\r\n\r\nuniform sampler2D fontAtlas;\r\nuniform vec2 unitRange;\r\nuniform vec2 texelSize;\r\nuniform vec4 uColor;\r\nuniform float thickness;\r\n\r\nvarying vec2 atlasUV;\r\n\r\nfloat median(vec3 msdf) {\r\n return max(min(msdf.r, msdf.g), min(max(msdf.r, msdf.g), msdf.b));\r\n}\r\n \r\nfloat screenPxRange(sampler2D tex) {\r\n vec2 screenTexSize = vec2(1.0) / fwidth(atlasUV);\r\n return max(0.5 * dot(unitRange, screenTexSize), 1.0);\r\n}\r\n\r\nvoid main(void)\r\n{\r\n vec3 sdfCenter = texture2D(fontAtlas, atlasUV).rgb;\r\n vec3 sdfLeft = texture2D(fontAtlas, atlasUV - vec2(texelSize.x, 0.0)).rgb;\r\n vec3 sdfRight = texture2D(fontAtlas, atlasUV + vec2(texelSize.x, 0.0)).rgb;\r\n vec3 sdfTop = texture2D(fontAtlas, atlasUV - vec2(0.0, texelSize.y)).rgb;\r\n vec3 sdfBottom = texture2D(fontAtlas, atlasUV + vec2(0.0, texelSize.y)).rgb;\r\n\r\n vec3 sdf = (sdfCenter + sdfLeft + sdfRight + sdfTop + sdfBottom) / 5.0;\r\n\r\n float dist = median(sdfCenter);\r\n\r\n float pxRange = screenPxRange(fontAtlas);\r\n float pxDist = pxRange * (dist - 0.5 + thickness);\r\n float alpha = clamp(pxDist / fwidth(pxDist) + 0.5, 0.0, 1.0);\r\n\r\n gl_FragColor = vec4(uColor.rgb, alpha * uColor.a);\r\n}`;\r\n\r\n/** @internal */\r\nexport const msdfFragmentShader = { name, shader };\r\n"],"names":["msdfFragmentShader","name","shader"],"sourceRoot":""}
package/315.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";(("undefined"!=typeof self?self:"undefined"!=typeof global?global:this).webpackChunkADDONS=("undefined"!=typeof self?self:"undefined"!=typeof global?global:this).webpackChunkADDONS||[]).push([[315],{315:(e,t,n)=>{n.r(t),n.d(t,{msdfVertexShader:()=>o});var o={name:"msdfVertexShader",shader:"\nattribute vec2 offsets;\nattribute vec4 world0;\nattribute vec4 world1;\nattribute vec4 world2;\nattribute vec4 world3;\nattribute vec4 uvs;\n\nuniform mat4 parentWorld;\nuniform mat4 view;\nuniform mat4 projection;\n\nvarying vec2 atlasUV;\n\nvoid main(void) {\n mat4 world = mat4(world0, world1, world2, world3);\n vec3 viewPos = (view * parentWorld * world * vec4(offsets.xy - vec2(0.5, 0.5), 0., 1.0)).xyz; \n gl_Position = projection * vec4(viewPos,1.0); \n atlasUV = vec2(uvs.x + offsets.x * uvs.z, uvs.y + (1.0 - offsets.y) * uvs.w);\n}"}}}]);
2
- //# sourceMappingURL=315.js.map
package/315.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"315.js","mappings":"yQACA,IAuBaA,EAAmB,CAAEC,KAvBrB,mBAuB2BC,OAtBzB,ijB","sources":["webpack://ADDONS/../../../dev/addons/src/msdfText/webgl/vertex.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nconst name = \"msdfVertexShader\";\r\nconst shader = `\r\nattribute vec2 offsets;\r\nattribute vec4 world0;\r\nattribute vec4 world1;\r\nattribute vec4 world2;\r\nattribute vec4 world3;\r\nattribute vec4 uvs;\r\n\r\nuniform mat4 parentWorld;\r\nuniform mat4 view;\r\nuniform mat4 projection;\r\n\r\nvarying vec2 atlasUV;\r\n\r\nvoid main(void) {\r\n mat4 world = mat4(world0, world1, world2, world3);\r\n vec3 viewPos = (view * parentWorld * world * vec4(offsets.xy - vec2(0.5, 0.5), 0., 1.0)).xyz; \r\n gl_Position = projection * vec4(viewPos,1.0); \r\n atlasUV = vec2(uvs.x + offsets.x * uvs.z, uvs.y + (1.0 - offsets.y) * uvs.w);\r\n}`;\r\n\r\n/** @internal */\r\nexport const msdfVertexShader = { name, shader };\r\n"],"names":["msdfVertexShader","name","shader"],"sourceRoot":""}
package/372.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";(("undefined"!=typeof self?self:"undefined"!=typeof global?global:this).webpackChunkADDONS=("undefined"!=typeof self?self:"undefined"!=typeof global?global:this).webpackChunkADDONS||[]).push([[372],{372:(t,e,n)=>{n.r(e),n.d(e,{msdfVertexShader:()=>f});var f={name:"msdfVertexShader",shader:"\nattribute offsets: vec2f;\nattribute world0: vec4f;\nattribute world1: vec4f;\nattribute world2: vec4f;\nattribute world3: vec4f;\nattribute uvs: vec4f;\n\nuniform parentWorld: mat4x4f;\nuniform view: mat4x4f;\nuniform projection: mat4x4f;\n\nvarying atlasUV: vec2f;\n\n@vertex\nfn main(input: VertexInputs) -> FragmentInputs {\n let world = mat4x4<f32>(input.world0, input.world1, input.world2, input.world3);\n let localOffset = vec4<f32>(input.offsets - vec2<f32>(0.5, 0.5), 0.0, 1.0);\n let viewPos = (uniforms.view * uniforms.parentWorld * world * localOffset).xyz;\n vertexOutputs.position = uniforms.projection * vec4<f32>(viewPos, 1.0);\n\n vertexOutputs.atlasUV = vec2<f32>(\n input.uvs.x + input.offsets.x * input.uvs.z,\n input.uvs.y + (1.0 - input.offsets.y) * input.uvs.w\n );\n}"}}}]);
2
- //# sourceMappingURL=372.js.map
package/372.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"372.js","mappings":"yQACA,IA6BaA,EAAmB,CAAEC,KA7BrB,mBA6B2BC,OA5BzB,6zB","sources":["webpack://ADDONS/../../../dev/addons/src/msdfText/webgpu/vertex.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nconst name = \"msdfVertexShader\";\r\nconst shader = `\r\nattribute offsets: vec2f;\r\nattribute world0: vec4f;\r\nattribute world1: vec4f;\r\nattribute world2: vec4f;\r\nattribute world3: vec4f;\r\nattribute uvs: vec4f;\r\n\r\nuniform parentWorld: mat4x4f;\r\nuniform view: mat4x4f;\r\nuniform projection: mat4x4f;\r\n\r\nvarying atlasUV: vec2f;\r\n\r\n@vertex\r\nfn main(input: VertexInputs) -> FragmentInputs {\r\n let world = mat4x4<f32>(input.world0, input.world1, input.world2, input.world3);\r\n let localOffset = vec4<f32>(input.offsets - vec2<f32>(0.5, 0.5), 0.0, 1.0);\r\n let viewPos = (uniforms.view * uniforms.parentWorld * world * localOffset).xyz;\r\n vertexOutputs.position = uniforms.projection * vec4<f32>(viewPos, 1.0);\r\n\r\n vertexOutputs.atlasUV = vec2<f32>(\r\n input.uvs.x + input.offsets.x * input.uvs.z,\r\n input.uvs.y + (1.0 - input.offsets.y) * input.uvs.w\r\n );\r\n}`;\r\n\r\n/** @internal */\r\nexport const msdfVertexShader = { name, shader };\r\n"],"names":["msdfVertexShader","name","shader"],"sourceRoot":""}
@@ -1,24 +0,0 @@
1
- "use strict";
2
- ((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this)["webpackChunkADDONS"] = (typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this)["webpackChunkADDONS"] || []).push([["dev_addons_src_msdfText_webgl_fragment_ts"],{
3
-
4
- /***/ "../../../dev/addons/src/msdfText/webgl/fragment.ts":
5
- /*!**********************************************************!*\
6
- !*** ../../../dev/addons/src/msdfText/webgl/fragment.ts ***!
7
- \**********************************************************/
8
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
-
10
- __webpack_require__.r(__webpack_exports__);
11
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
- /* harmony export */ msdfFragmentShader: () => (/* binding */ msdfFragmentShader)
13
- /* harmony export */ });
14
- /* eslint-disable @typescript-eslint/naming-convention */
15
- var name = "msdfFragmentShader";
16
- var shader = "\n#extension GL_OES_standard_derivatives : enable\n\nprecision highp float;\n\nuniform sampler2D fontAtlas;\nuniform vec2 unitRange;\nuniform vec2 texelSize;\nuniform vec4 uColor;\nuniform float thickness;\n\nvarying vec2 atlasUV;\n\nfloat median(vec3 msdf) {\n return max(min(msdf.r, msdf.g), min(max(msdf.r, msdf.g), msdf.b));\n}\n \nfloat screenPxRange(sampler2D tex) {\n vec2 screenTexSize = vec2(1.0) / fwidth(atlasUV);\n return max(0.5 * dot(unitRange, screenTexSize), 1.0);\n}\n\nvoid main(void)\n{\n vec3 sdfCenter = texture2D(fontAtlas, atlasUV).rgb;\n vec3 sdfLeft = texture2D(fontAtlas, atlasUV - vec2(texelSize.x, 0.0)).rgb;\n vec3 sdfRight = texture2D(fontAtlas, atlasUV + vec2(texelSize.x, 0.0)).rgb;\n vec3 sdfTop = texture2D(fontAtlas, atlasUV - vec2(0.0, texelSize.y)).rgb;\n vec3 sdfBottom = texture2D(fontAtlas, atlasUV + vec2(0.0, texelSize.y)).rgb;\n\n vec3 sdf = (sdfCenter + sdfLeft + sdfRight + sdfTop + sdfBottom) / 5.0;\n\n float dist = median(sdfCenter);\n\n float pxRange = screenPxRange(fontAtlas);\n float pxDist = pxRange * (dist - 0.5 + thickness);\n float alpha = clamp(pxDist / fwidth(pxDist) + 0.5, 0.0, 1.0);\n\n gl_FragColor = vec4(uColor.rgb, alpha * uColor.a);\n}";
17
- /** @internal */
18
- var msdfFragmentShader = { name: name, shader: shader };
19
-
20
-
21
- /***/ })
22
-
23
- }]);
24
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2X2FkZG9uc19zcmNfbXNkZlRleHRfd2ViZ2xfZnJhZ21lbnRfdHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQXlDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQURET05TLy4uLy4uLy4uL2Rldi9hZGRvbnMvc3JjL21zZGZUZXh0L3dlYmdsL2ZyYWdtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xyXG5jb25zdCBuYW1lID0gXCJtc2RmRnJhZ21lbnRTaGFkZXJcIjtcclxuY29uc3Qgc2hhZGVyID0gYFxyXG4jZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZVxyXG5cclxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xyXG5cclxudW5pZm9ybSBzYW1wbGVyMkQgZm9udEF0bGFzO1xyXG51bmlmb3JtIHZlYzIgdW5pdFJhbmdlO1xyXG51bmlmb3JtIHZlYzIgdGV4ZWxTaXplO1xyXG51bmlmb3JtIHZlYzQgdUNvbG9yO1xyXG51bmlmb3JtIGZsb2F0IHRoaWNrbmVzcztcclxuXHJcbnZhcnlpbmcgdmVjMiBhdGxhc1VWO1xyXG5cclxuZmxvYXQgbWVkaWFuKHZlYzMgbXNkZikge1xyXG4gICAgcmV0dXJuIG1heChtaW4obXNkZi5yLCBtc2RmLmcpLCBtaW4obWF4KG1zZGYuciwgbXNkZi5nKSwgbXNkZi5iKSk7XHJcbn1cclxuICBcclxuZmxvYXQgc2NyZWVuUHhSYW5nZShzYW1wbGVyMkQgdGV4KSB7XHJcbiAgICB2ZWMyIHNjcmVlblRleFNpemUgPSB2ZWMyKDEuMCkgLyBmd2lkdGgoYXRsYXNVVik7XHJcbiAgICByZXR1cm4gbWF4KDAuNSAqIGRvdCh1bml0UmFuZ2UsIHNjcmVlblRleFNpemUpLCAxLjApO1xyXG59XHJcblxyXG52b2lkIG1haW4odm9pZClcclxue1xyXG4gICAgdmVjMyBzZGZDZW50ZXIgPSB0ZXh0dXJlMkQoZm9udEF0bGFzLCBhdGxhc1VWKS5yZ2I7XHJcbiAgICB2ZWMzIHNkZkxlZnQgPSB0ZXh0dXJlMkQoZm9udEF0bGFzLCBhdGxhc1VWIC0gdmVjMih0ZXhlbFNpemUueCwgMC4wKSkucmdiO1xyXG4gICAgdmVjMyBzZGZSaWdodCA9IHRleHR1cmUyRChmb250QXRsYXMsIGF0bGFzVVYgKyB2ZWMyKHRleGVsU2l6ZS54LCAwLjApKS5yZ2I7XHJcbiAgICB2ZWMzIHNkZlRvcCA9IHRleHR1cmUyRChmb250QXRsYXMsIGF0bGFzVVYgLSB2ZWMyKDAuMCwgdGV4ZWxTaXplLnkpKS5yZ2I7XHJcbiAgICB2ZWMzIHNkZkJvdHRvbSA9IHRleHR1cmUyRChmb250QXRsYXMsIGF0bGFzVVYgKyB2ZWMyKDAuMCwgdGV4ZWxTaXplLnkpKS5yZ2I7XHJcblxyXG4gICAgdmVjMyBzZGYgPSAoc2RmQ2VudGVyICsgc2RmTGVmdCArIHNkZlJpZ2h0ICsgc2RmVG9wICsgc2RmQm90dG9tKSAvIDUuMDtcclxuXHJcbiAgICBmbG9hdCBkaXN0ID0gbWVkaWFuKHNkZkNlbnRlcik7XHJcblxyXG4gICAgZmxvYXQgcHhSYW5nZSA9IHNjcmVlblB4UmFuZ2UoZm9udEF0bGFzKTtcclxuICAgIGZsb2F0IHB4RGlzdCA9IHB4UmFuZ2UgKiAoZGlzdCAtIDAuNSArIHRoaWNrbmVzcyk7XHJcbiAgICBmbG9hdCBhbHBoYSA9IGNsYW1wKHB4RGlzdCAvIGZ3aWR0aChweERpc3QpICsgMC41LCAwLjAsIDEuMCk7XHJcblxyXG4gICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1Q29sb3IucmdiLCBhbHBoYSAqIHVDb2xvci5hKTtcclxufWA7XHJcblxyXG4vKiogQGludGVybmFsICovXHJcbmV4cG9ydCBjb25zdCBtc2RmRnJhZ21lbnRTaGFkZXIgPSB7IG5hbWUsIHNoYWRlciB9O1xyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
@@ -1,24 +0,0 @@
1
- "use strict";
2
- ((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this)["webpackChunkADDONS"] = (typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this)["webpackChunkADDONS"] || []).push([["dev_addons_src_msdfText_webgl_vertex_ts"],{
3
-
4
- /***/ "../../../dev/addons/src/msdfText/webgl/vertex.ts":
5
- /*!********************************************************!*\
6
- !*** ../../../dev/addons/src/msdfText/webgl/vertex.ts ***!
7
- \********************************************************/
8
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
-
10
- __webpack_require__.r(__webpack_exports__);
11
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
- /* harmony export */ msdfVertexShader: () => (/* binding */ msdfVertexShader)
13
- /* harmony export */ });
14
- /* eslint-disable @typescript-eslint/naming-convention */
15
- var name = "msdfVertexShader";
16
- var shader = "\nattribute vec2 offsets;\nattribute vec4 world0;\nattribute vec4 world1;\nattribute vec4 world2;\nattribute vec4 world3;\nattribute vec4 uvs;\n\nuniform mat4 parentWorld;\nuniform mat4 view;\nuniform mat4 projection;\n\nvarying vec2 atlasUV;\n\nvoid main(void) {\n mat4 world = mat4(world0, world1, world2, world3);\n vec3 viewPos = (view * parentWorld * world * vec4(offsets.xy - vec2(0.5, 0.5), 0., 1.0)).xyz; \n gl_Position = projection * vec4(viewPos,1.0); \n atlasUV = vec2(uvs.x + offsets.x * uvs.z, uvs.y + (1.0 - offsets.y) * uvs.w);\n}";
17
- /** @internal */
18
- var msdfVertexShader = { name: name, shader: shader };
19
-
20
-
21
- /***/ })
22
-
23
- }]);
24
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2X2FkZG9uc19zcmNfbXNkZlRleHRfd2ViZ2xfdmVydGV4X3RzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFxQkE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL0FERE9OUy8uLi8uLi8uLi9kZXYvYWRkb25zL3NyYy9tc2RmVGV4dC93ZWJnbC92ZXJ0ZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXHJcbmNvbnN0IG5hbWUgPSBcIm1zZGZWZXJ0ZXhTaGFkZXJcIjtcclxuY29uc3Qgc2hhZGVyID0gYFxyXG5hdHRyaWJ1dGUgdmVjMiBvZmZzZXRzO1xyXG5hdHRyaWJ1dGUgdmVjNCB3b3JsZDA7XHJcbmF0dHJpYnV0ZSB2ZWM0IHdvcmxkMTtcclxuYXR0cmlidXRlIHZlYzQgd29ybGQyO1xyXG5hdHRyaWJ1dGUgdmVjNCB3b3JsZDM7XHJcbmF0dHJpYnV0ZSB2ZWM0IHV2cztcclxuXHJcbnVuaWZvcm0gbWF0NCBwYXJlbnRXb3JsZDtcclxudW5pZm9ybSBtYXQ0IHZpZXc7XHJcbnVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uO1xyXG5cclxudmFyeWluZyB2ZWMyIGF0bGFzVVY7XHJcblxyXG52b2lkIG1haW4odm9pZCkge1xyXG4gICAgbWF0NCB3b3JsZCA9IG1hdDQod29ybGQwLCB3b3JsZDEsIHdvcmxkMiwgd29ybGQzKTtcclxuICAgIHZlYzMgdmlld1BvcyA9ICh2aWV3ICogcGFyZW50V29ybGQgKiB3b3JsZCAqICB2ZWM0KG9mZnNldHMueHkgLSB2ZWMyKDAuNSwgMC41KSwgMC4sIDEuMCkpLnh5ejsgXHJcbiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb24gKiB2ZWM0KHZpZXdQb3MsMS4wKTsgXHJcbiAgICBhdGxhc1VWID0gdmVjMih1dnMueCArIG9mZnNldHMueCAqIHV2cy56LCB1dnMueSArICgxLjAgLSBvZmZzZXRzLnkpICogdXZzLncpO1xyXG59YDtcclxuXHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGNvbnN0IG1zZGZWZXJ0ZXhTaGFkZXIgPSB7IG5hbWUsIHNoYWRlciB9O1xyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
@@ -1,24 +0,0 @@
1
- "use strict";
2
- ((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this)["webpackChunkADDONS"] = (typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this)["webpackChunkADDONS"] || []).push([["dev_addons_src_msdfText_webgpu_fragment_ts"],{
3
-
4
- /***/ "../../../dev/addons/src/msdfText/webgpu/fragment.ts":
5
- /*!***********************************************************!*\
6
- !*** ../../../dev/addons/src/msdfText/webgpu/fragment.ts ***!
7
- \***********************************************************/
8
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
-
10
- __webpack_require__.r(__webpack_exports__);
11
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
- /* harmony export */ msdfFragmentShader: () => (/* binding */ msdfFragmentShader)
13
- /* harmony export */ });
14
- /* eslint-disable @typescript-eslint/naming-convention */
15
- var name = "msdfFragmentShader";
16
- var shader = "\nvar fontAtlas: texture_2d<f32>;\nvar fontAtlasSampler: sampler;\nuniform unitRange: vec2f;\nuniform texelSize: vec2f;\nuniform uColor: vec4f;\nuniform thickness: f32;\n\nvarying atlasUV: vec2f;\n\nfn median(msdf: vec3<f32>) -> f32 {\n let a = min(msdf.r, msdf.g);\n let b = max(msdf.r, msdf.g);\n return max(a, min(b, msdf.b));\n}\n\n@fragment\nfn main(input: FragmentInputs) -> FragmentOutputs {\n let uv = input.atlasUV;\n\n // Sample center and neighbors\n let sdfCenter = textureSample(fontAtlas, fontAtlasSampler, uv).rgb;\n let sdfLeft = textureSample(fontAtlas, fontAtlasSampler, uv - vec2<f32>(uniforms.texelSize.x, 0.0)).rgb;\n let sdfRight = textureSample(fontAtlas, fontAtlasSampler, uv + vec2<f32>(uniforms.texelSize.x, 0.0)).rgb;\n let sdfTop = textureSample(fontAtlas, fontAtlasSampler, uv - vec2<f32>(0.0, uniforms.texelSize.y)).rgb;\n let sdfBottom = textureSample(fontAtlas, fontAtlasSampler, uv + vec2<f32>(0.0, uniforms.texelSize.y)).rgb;\n\n let sdf = (sdfCenter + sdfLeft + sdfRight + sdfTop + sdfBottom) / 5.0;\n\n let dist = median(sdfCenter);\n\n // Estimate pixel range in screen space\n let dx = dpdx(uv);\n let dy = dpdy(uv);\n let screenTexSize = vec2<f32>(1.0) / vec2<f32>(length(dx), length(dy));\n let pxRange = max(0.5 * dot(uniforms.unitRange, screenTexSize), 1.0);\n\n let pxDist = pxRange * (dist - 0.5 + uniforms.thickness);\n let alpha = clamp(pxDist / length(dpdx(pxDist)) + 0.5, 0.0, 1.0);\n\n fragmentOutputs.color = vec4<f32>(uniforms.uColor.rgb, alpha * uniforms.uColor.a);\n}";
17
- /** @internal */
18
- var msdfFragmentShader = { name: name, shader: shader };
19
-
20
-
21
- /***/ })
22
-
23
- }]);
24
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2X2FkZG9uc19zcmNfbXNkZlRleHRfd2ViZ3B1X2ZyYWdtZW50X3RzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUEyQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL0FERE9OUy8uLi8uLi8uLi9kZXYvYWRkb25zL3NyYy9tc2RmVGV4dC93ZWJncHUvZnJhZ21lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXHJcbmNvbnN0IG5hbWUgPSBcIm1zZGZGcmFnbWVudFNoYWRlclwiO1xyXG5jb25zdCBzaGFkZXIgPSBgXHJcbnZhciBmb250QXRsYXM6IHRleHR1cmVfMmQ8ZjMyPjtcclxudmFyIGZvbnRBdGxhc1NhbXBsZXI6IHNhbXBsZXI7XHJcbnVuaWZvcm0gdW5pdFJhbmdlOiB2ZWMyZjtcclxudW5pZm9ybSB0ZXhlbFNpemU6IHZlYzJmO1xyXG51bmlmb3JtIHVDb2xvcjogdmVjNGY7XHJcbnVuaWZvcm0gdGhpY2tuZXNzOiBmMzI7XHJcblxyXG52YXJ5aW5nIGF0bGFzVVY6IHZlYzJmO1xyXG5cclxuZm4gbWVkaWFuKG1zZGY6IHZlYzM8ZjMyPikgLT4gZjMyIHtcclxuICAgIGxldCBhID0gbWluKG1zZGYuciwgbXNkZi5nKTtcclxuICAgIGxldCBiID0gbWF4KG1zZGYuciwgbXNkZi5nKTtcclxuICAgIHJldHVybiBtYXgoYSwgbWluKGIsIG1zZGYuYikpO1xyXG59XHJcblxyXG5AZnJhZ21lbnRcclxuZm4gbWFpbihpbnB1dDogRnJhZ21lbnRJbnB1dHMpIC0+IEZyYWdtZW50T3V0cHV0cyB7XHJcbiAgICBsZXQgdXYgPSBpbnB1dC5hdGxhc1VWO1xyXG5cclxuICAgIC8vIFNhbXBsZSBjZW50ZXIgYW5kIG5laWdoYm9yc1xyXG4gICAgbGV0IHNkZkNlbnRlciA9IHRleHR1cmVTYW1wbGUoZm9udEF0bGFzLCBmb250QXRsYXNTYW1wbGVyLCB1dikucmdiO1xyXG4gICAgbGV0IHNkZkxlZnQgICA9IHRleHR1cmVTYW1wbGUoZm9udEF0bGFzLCBmb250QXRsYXNTYW1wbGVyLCB1diAtIHZlYzI8ZjMyPih1bmlmb3Jtcy50ZXhlbFNpemUueCwgMC4wKSkucmdiO1xyXG4gICAgbGV0IHNkZlJpZ2h0ICA9IHRleHR1cmVTYW1wbGUoZm9udEF0bGFzLCBmb250QXRsYXNTYW1wbGVyLCB1diArIHZlYzI8ZjMyPih1bmlmb3Jtcy50ZXhlbFNpemUueCwgMC4wKSkucmdiO1xyXG4gICAgbGV0IHNkZlRvcCAgICA9IHRleHR1cmVTYW1wbGUoZm9udEF0bGFzLCBmb250QXRsYXNTYW1wbGVyLCB1diAtIHZlYzI8ZjMyPigwLjAsIHVuaWZvcm1zLnRleGVsU2l6ZS55KSkucmdiO1xyXG4gICAgbGV0IHNkZkJvdHRvbSA9IHRleHR1cmVTYW1wbGUoZm9udEF0bGFzLCBmb250QXRsYXNTYW1wbGVyLCB1diArIHZlYzI8ZjMyPigwLjAsIHVuaWZvcm1zLnRleGVsU2l6ZS55KSkucmdiO1xyXG5cclxuICAgIGxldCBzZGYgPSAoc2RmQ2VudGVyICsgc2RmTGVmdCArIHNkZlJpZ2h0ICsgc2RmVG9wICsgc2RmQm90dG9tKSAvIDUuMDtcclxuXHJcbiAgICBsZXQgZGlzdCA9IG1lZGlhbihzZGZDZW50ZXIpO1xyXG5cclxuICAgIC8vIEVzdGltYXRlIHBpeGVsIHJhbmdlIGluIHNjcmVlbiBzcGFjZVxyXG4gICAgbGV0IGR4ID0gZHBkeCh1dik7XHJcbiAgICBsZXQgZHkgPSBkcGR5KHV2KTtcclxuICAgIGxldCBzY3JlZW5UZXhTaXplID0gdmVjMjxmMzI+KDEuMCkgLyB2ZWMyPGYzMj4obGVuZ3RoKGR4KSwgbGVuZ3RoKGR5KSk7XHJcbiAgICBsZXQgcHhSYW5nZSA9IG1heCgwLjUgKiBkb3QodW5pZm9ybXMudW5pdFJhbmdlLCBzY3JlZW5UZXhTaXplKSwgMS4wKTtcclxuXHJcbiAgICBsZXQgcHhEaXN0ID0gcHhSYW5nZSAqIChkaXN0IC0gMC41ICsgdW5pZm9ybXMudGhpY2tuZXNzKTtcclxuICAgIGxldCBhbHBoYSA9IGNsYW1wKHB4RGlzdCAvIGxlbmd0aChkcGR4KHB4RGlzdCkpICsgMC41LCAwLjAsIDEuMCk7XHJcblxyXG4gICAgZnJhZ21lbnRPdXRwdXRzLmNvbG9yID0gdmVjNDxmMzI+KHVuaWZvcm1zLnVDb2xvci5yZ2IsIGFscGhhICogdW5pZm9ybXMudUNvbG9yLmEpO1xyXG59YDtcclxuXHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGNvbnN0IG1zZGZGcmFnbWVudFNoYWRlciA9IHsgbmFtZSwgc2hhZGVyIH07XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
@@ -1,24 +0,0 @@
1
- "use strict";
2
- ((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this)["webpackChunkADDONS"] = (typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this)["webpackChunkADDONS"] || []).push([["dev_addons_src_msdfText_webgpu_vertex_ts"],{
3
-
4
- /***/ "../../../dev/addons/src/msdfText/webgpu/vertex.ts":
5
- /*!*********************************************************!*\
6
- !*** ../../../dev/addons/src/msdfText/webgpu/vertex.ts ***!
7
- \*********************************************************/
8
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
-
10
- __webpack_require__.r(__webpack_exports__);
11
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
- /* harmony export */ msdfVertexShader: () => (/* binding */ msdfVertexShader)
13
- /* harmony export */ });
14
- /* eslint-disable @typescript-eslint/naming-convention */
15
- var name = "msdfVertexShader";
16
- var shader = "\nattribute offsets: vec2f;\nattribute world0: vec4f;\nattribute world1: vec4f;\nattribute world2: vec4f;\nattribute world3: vec4f;\nattribute uvs: vec4f;\n\nuniform parentWorld: mat4x4f;\nuniform view: mat4x4f;\nuniform projection: mat4x4f;\n\nvarying atlasUV: vec2f;\n\n@vertex\nfn main(input: VertexInputs) -> FragmentInputs {\n let world = mat4x4<f32>(input.world0, input.world1, input.world2, input.world3);\n let localOffset = vec4<f32>(input.offsets - vec2<f32>(0.5, 0.5), 0.0, 1.0);\n let viewPos = (uniforms.view * uniforms.parentWorld * world * localOffset).xyz;\n vertexOutputs.position = uniforms.projection * vec4<f32>(viewPos, 1.0);\n\n vertexOutputs.atlasUV = vec2<f32>(\n input.uvs.x + input.offsets.x * input.uvs.z,\n input.uvs.y + (1.0 - input.offsets.y) * input.uvs.w\n );\n}";
17
- /** @internal */
18
- var msdfVertexShader = { name: name, shader: shader };
19
-
20
-
21
- /***/ })
22
-
23
- }]);
24
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2X2FkZG9uc19zcmNfbXNkZlRleHRfd2ViZ3B1X3ZlcnRleF90cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBMkJBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9BRERPTlMvLi4vLi4vLi4vZGV2L2FkZG9ucy9zcmMvbXNkZlRleHQvd2ViZ3B1L3ZlcnRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cclxuY29uc3QgbmFtZSA9IFwibXNkZlZlcnRleFNoYWRlclwiO1xyXG5jb25zdCBzaGFkZXIgPSBgXHJcbmF0dHJpYnV0ZSBvZmZzZXRzOiB2ZWMyZjtcclxuYXR0cmlidXRlIHdvcmxkMDogdmVjNGY7XHJcbmF0dHJpYnV0ZSB3b3JsZDE6IHZlYzRmO1xyXG5hdHRyaWJ1dGUgd29ybGQyOiB2ZWM0ZjtcclxuYXR0cmlidXRlIHdvcmxkMzogdmVjNGY7XHJcbmF0dHJpYnV0ZSB1dnM6IHZlYzRmO1xyXG5cclxudW5pZm9ybSBwYXJlbnRXb3JsZDogbWF0NHg0ZjtcclxudW5pZm9ybSB2aWV3OiBtYXQ0eDRmO1xyXG51bmlmb3JtIHByb2plY3Rpb246IG1hdDR4NGY7XHJcblxyXG52YXJ5aW5nIGF0bGFzVVY6IHZlYzJmO1xyXG5cclxuQHZlcnRleFxyXG5mbiBtYWluKGlucHV0OiBWZXJ0ZXhJbnB1dHMpIC0+IEZyYWdtZW50SW5wdXRzIHtcclxuICAgIGxldCB3b3JsZCA9IG1hdDR4NDxmMzI+KGlucHV0LndvcmxkMCwgaW5wdXQud29ybGQxLCBpbnB1dC53b3JsZDIsIGlucHV0LndvcmxkMyk7XHJcbiAgICBsZXQgbG9jYWxPZmZzZXQgPSB2ZWM0PGYzMj4oaW5wdXQub2Zmc2V0cyAtIHZlYzI8ZjMyPigwLjUsIDAuNSksIDAuMCwgMS4wKTtcclxuICAgIGxldCB2aWV3UG9zID0gKHVuaWZvcm1zLnZpZXcgKiB1bmlmb3Jtcy5wYXJlbnRXb3JsZCAqIHdvcmxkICogbG9jYWxPZmZzZXQpLnh5ejtcclxuICAgIHZlcnRleE91dHB1dHMucG9zaXRpb24gPSB1bmlmb3Jtcy5wcm9qZWN0aW9uICogdmVjNDxmMzI+KHZpZXdQb3MsIDEuMCk7XHJcblxyXG4gICAgdmVydGV4T3V0cHV0cy5hdGxhc1VWID0gdmVjMjxmMzI+KFxyXG4gICAgICAgIGlucHV0LnV2cy54ICsgaW5wdXQub2Zmc2V0cy54ICogaW5wdXQudXZzLnosXHJcbiAgICAgICAgaW5wdXQudXZzLnkgKyAoMS4wIC0gaW5wdXQub2Zmc2V0cy55KSAqIGlucHV0LnV2cy53XHJcbiAgICApO1xyXG59YDtcclxuXHJcbi8qKiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGNvbnN0IG1zZGZWZXJ0ZXhTaGFkZXIgPSB7IG5hbWUsIHNoYWRlciB9O1xyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=