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.
- package/babylonjs.addons.d.ts +42 -8
- package/babylonjs.addons.js +309 -280
- package/babylonjs.addons.min.js +1 -1
- package/babylonjs.addons.min.js.map +1 -1
- package/babylonjs.addons.module.d.ts +104 -25
- package/package.json +2 -2
- package/138.js +0 -2
- package/138.js.map +0 -1
- package/205.js +0 -2
- package/205.js.map +0 -1
- package/315.js +0 -2
- package/315.js.map +0 -1
- package/372.js +0 -2
- package/372.js.map +0 -1
- package/dev_addons_src_msdfText_webgl_fragment_ts.js +0 -24
- package/dev_addons_src_msdfText_webgl_vertex_ts.js +0 -24
- package/dev_addons_src_msdfText_webgpu_fragment_ts.js +0 -24
- package/dev_addons_src_msdfText_webgpu_vertex_ts.js +0 -24
@@ -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 {
|
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():
|
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 {
|
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:
|
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/
|
205
|
+
declare module "babylonjs-addons/msdfText/shadersWGSL/msdf.vertex" {
|
169
206
|
/** @internal */
|
170
|
-
export const
|
207
|
+
export const msdfVertexShaderWGSL: {
|
171
208
|
name: string;
|
172
209
|
shader: string;
|
173
210
|
};
|
174
211
|
|
175
212
|
}
|
176
|
-
declare module "babylonjs-addons/msdfText/
|
213
|
+
declare module "babylonjs-addons/msdfText/shadersWGSL/msdf.fragment" {
|
177
214
|
/** @internal */
|
178
|
-
export const
|
215
|
+
export const msdfPixelShaderWGSL: {
|
179
216
|
name: string;
|
180
217
|
shader: string;
|
181
218
|
};
|
182
219
|
|
183
220
|
}
|
184
|
-
declare module "babylonjs-addons/msdfText/
|
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/
|
229
|
+
declare module "babylonjs-addons/msdfText/shaders/msdf.fragment" {
|
193
230
|
/** @internal */
|
194
|
-
export const
|
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.
|
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.
|
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
|
926
|
+
export var msdfVertexShaderWGSL: {
|
850
927
|
name: string;
|
851
928
|
shader: string;
|
852
929
|
};
|
853
930
|
|
854
931
|
|
855
932
|
/** @internal */
|
856
|
-
export var
|
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
|
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.
|
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.
|
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=
|