babylonjs-addons 8.8.4 → 8.9.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/babylonjs.addons.d.ts +45 -7
- package/babylonjs.addons.js +305 -270
- package/babylonjs.addons.min.js +1 -1
- package/babylonjs.addons.min.js.map +1 -1
- package/babylonjs.addons.module.d.ts +110 -19
- 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,20 @@ 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/webgl/index";
|
160
|
+
export * from "babylonjs-addons/msdfText/webgpu/index";
|
129
161
|
|
130
162
|
}
|
131
163
|
declare module "babylonjs-addons/msdfText/fontAsset" {
|
164
|
+
import { IDisposable, Scene } from "babylonjs/scene";
|
132
165
|
import { BMFontChar } from "babylonjs-addons/msdfText/sdf/bmFont";
|
133
166
|
import { SdfFont } from "babylonjs-addons/msdfText/sdf/font";
|
134
167
|
import { Texture } from "babylonjs/Materials/Textures/texture";
|
135
168
|
/**
|
136
169
|
* Class representing a font asset for SDF (Signed Distance Field) rendering.
|
137
170
|
*/
|
138
|
-
export class FontAsset {
|
171
|
+
export class FontAsset implements IDisposable {
|
139
172
|
private readonly _chars;
|
140
173
|
private readonly _charsRegex;
|
141
174
|
private readonly _kernings;
|
@@ -153,8 +186,10 @@ export class FontAsset {
|
|
153
186
|
* Creates a new FontAsset instance.
|
154
187
|
* @param definitionData defines the font data in JSON format.
|
155
188
|
* @param textureUrl defines the url of the texture to use for the font.
|
189
|
+
* @param scene defines the hosting scene.
|
156
190
|
*/
|
157
|
-
constructor(definitionData: string, textureUrl: string);
|
191
|
+
constructor(definitionData: string, textureUrl: string, scene?: Scene);
|
192
|
+
dispose(): void;
|
158
193
|
private _updateFallbacks;
|
159
194
|
/** @internal */
|
160
195
|
_getChar(charCode: number): BMFontChar;
|
@@ -167,15 +202,20 @@ export class FontAsset {
|
|
167
202
|
}
|
168
203
|
declare module "babylonjs-addons/msdfText/webgpu/vertex" {
|
169
204
|
/** @internal */
|
170
|
-
export const
|
205
|
+
export const msdfVertexShaderWGSL: {
|
171
206
|
name: string;
|
172
207
|
shader: string;
|
173
208
|
};
|
174
209
|
|
210
|
+
}
|
211
|
+
declare module "babylonjs-addons/msdfText/webgpu/index" {
|
212
|
+
export * from "babylonjs-addons/msdfText/webgpu/fragment";
|
213
|
+
export * from "babylonjs-addons/msdfText/webgpu/vertex";
|
214
|
+
|
175
215
|
}
|
176
216
|
declare module "babylonjs-addons/msdfText/webgpu/fragment" {
|
177
217
|
/** @internal */
|
178
|
-
export const
|
218
|
+
export const msdfFragmentShaderWGSL: {
|
179
219
|
name: string;
|
180
220
|
shader: string;
|
181
221
|
};
|
@@ -188,6 +228,11 @@ export const msdfVertexShader: {
|
|
188
228
|
shader: string;
|
189
229
|
};
|
190
230
|
|
231
|
+
}
|
232
|
+
declare module "babylonjs-addons/msdfText/webgl/index" {
|
233
|
+
export * from "babylonjs-addons/msdfText/webgl/fragment";
|
234
|
+
export * from "babylonjs-addons/msdfText/webgl/vertex";
|
235
|
+
|
191
236
|
}
|
192
237
|
declare module "babylonjs-addons/msdfText/webgl/fragment" {
|
193
238
|
/** @internal */
|
@@ -232,6 +277,14 @@ export type SdfTextLine = {
|
|
232
277
|
width: number;
|
233
278
|
};
|
234
279
|
|
280
|
+
}
|
281
|
+
declare module "babylonjs-addons/msdfText/sdf/index" {
|
282
|
+
export * from "babylonjs-addons/msdfText/sdf/bmFont";
|
283
|
+
export * from "babylonjs-addons/msdfText/sdf/font";
|
284
|
+
export * from "babylonjs-addons/msdfText/sdf/glyph";
|
285
|
+
export * from "babylonjs-addons/msdfText/sdf/line";
|
286
|
+
export * from "babylonjs-addons/msdfText/sdf/paragraph";
|
287
|
+
|
235
288
|
}
|
236
289
|
declare module "babylonjs-addons/msdfText/sdf/glyph" {
|
237
290
|
import { BMFontChar } from "babylonjs-addons/msdfText/sdf/bmFont";
|
@@ -706,7 +759,7 @@ declare module ADDONS {
|
|
706
759
|
* Abstract Node class from Babylon.js
|
707
760
|
*/
|
708
761
|
export interface INodeLike {
|
709
|
-
getWorldMatrix(): BABYLON.
|
762
|
+
getWorldMatrix(): BABYLON.IMatrixLike;
|
710
763
|
}
|
711
764
|
/**
|
712
765
|
* Class used to render text using MSDF (Multi-channel Signed Distance Field) technique
|
@@ -716,6 +769,7 @@ declare module ADDONS {
|
|
716
769
|
* With metrics: #6RLCWP#35
|
717
770
|
* Thickness: #IABMEZ#3
|
718
771
|
* Solar system: #9YCDYC#9
|
772
|
+
* Stroke: #6RLCWP#37
|
719
773
|
*/
|
720
774
|
export class TextRenderer implements BABYLON.IDisposable {
|
721
775
|
private readonly _useVAO;
|
@@ -742,11 +796,22 @@ declare module ADDONS {
|
|
742
796
|
private _finalMatrix;
|
743
797
|
private _lineMatrix;
|
744
798
|
private _parentWorldMatrix;
|
745
|
-
private _storedTranslation;
|
746
799
|
/**
|
747
800
|
* Gets or sets the color of the text
|
748
801
|
*/
|
749
802
|
color: BABYLON.IColor4Like;
|
803
|
+
/**
|
804
|
+
* Gets or sets the color of the stroke around the text
|
805
|
+
*/
|
806
|
+
strokeColor: BABYLON.IColor4Like;
|
807
|
+
/**
|
808
|
+
* Gets or sets the width of the stroke around the text (inset)
|
809
|
+
*/
|
810
|
+
strokeInsetWidth: number;
|
811
|
+
/**
|
812
|
+
* Gets or sets the width of the stroke around the text (outset)
|
813
|
+
*/
|
814
|
+
strokeOutsetWidth: number;
|
750
815
|
/**
|
751
816
|
* Gets or sets the thickness of the text (0 means as defined in the font)
|
752
817
|
* Value must be between -0.5 and 0.5
|
@@ -758,14 +823,32 @@ declare module ADDONS {
|
|
758
823
|
*/
|
759
824
|
get parent(): BABYLON.Nullable<INodeLike>;
|
760
825
|
set parent(value: BABYLON.Nullable<INodeLike>);
|
826
|
+
private _transformMatrix;
|
827
|
+
/**
|
828
|
+
* Gets or sets the transform matrix of the text renderer
|
829
|
+
* It will be applied in that order:
|
830
|
+
* parent x transform x paragraph world
|
831
|
+
*/
|
832
|
+
get transformMatrix(): BABYLON.IMatrixLike;
|
833
|
+
set transformMatrix(value: BABYLON.IMatrixLike);
|
761
834
|
/**
|
762
835
|
* Gets or sets if the text is billboarded
|
763
836
|
*/
|
764
837
|
isBillboard: boolean;
|
838
|
+
/**
|
839
|
+
* Gets or sets if the text is screen projected
|
840
|
+
* This will work only if the text is billboarded
|
841
|
+
*/
|
842
|
+
isBillboardScreenProjected: boolean;
|
765
843
|
/**
|
766
844
|
* Gets the number of characters in the text renderer
|
767
845
|
*/
|
768
846
|
get characterCount(): number;
|
847
|
+
/**
|
848
|
+
* Gets or sets if the text renderer should ignore the depth buffer
|
849
|
+
* Default is false
|
850
|
+
*/
|
851
|
+
ignoreDepthBuffer: boolean;
|
769
852
|
private constructor();
|
770
853
|
private _resizeBuffers;
|
771
854
|
private _setShaders;
|
@@ -804,7 +887,7 @@ declare module ADDONS {
|
|
804
887
|
tabSize: number;
|
805
888
|
whiteSpace: "pre-line";
|
806
889
|
textAlign: "left" | "right" | "center";
|
807
|
-
translate: BABYLON.
|
890
|
+
translate: BABYLON.IVector2Like | undefined;
|
808
891
|
};
|
809
892
|
/** @internal */
|
810
893
|
export var DefaultParagraphOptions: ParagraphOptions;
|
@@ -815,7 +898,7 @@ declare module ADDONS {
|
|
815
898
|
/**
|
816
899
|
* Class representing a font asset for SDF (Signed Distance Field) rendering.
|
817
900
|
*/
|
818
|
-
export class FontAsset {
|
901
|
+
export class FontAsset implements BABYLON.IDisposable {
|
819
902
|
private readonly _chars;
|
820
903
|
private readonly _charsRegex;
|
821
904
|
private readonly _kernings;
|
@@ -833,8 +916,10 @@ declare module ADDONS {
|
|
833
916
|
* Creates a new FontAsset instance.
|
834
917
|
* @param definitionData defines the font data in JSON format.
|
835
918
|
* @param textureUrl defines the url of the texture to use for the font.
|
919
|
+
* @param scene defines the hosting scene.
|
836
920
|
*/
|
837
|
-
constructor(definitionData: string, textureUrl: string);
|
921
|
+
constructor(definitionData: string, textureUrl: string, scene?: BABYLON.Scene);
|
922
|
+
dispose(): void;
|
838
923
|
private _updateFallbacks;
|
839
924
|
/** @internal */
|
840
925
|
_getChar(charCode: number): BMFontChar;
|
@@ -846,14 +931,16 @@ declare module ADDONS {
|
|
846
931
|
|
847
932
|
|
848
933
|
/** @internal */
|
849
|
-
export var
|
934
|
+
export var msdfVertexShaderWGSL: {
|
850
935
|
name: string;
|
851
936
|
shader: string;
|
852
937
|
};
|
853
938
|
|
854
939
|
|
940
|
+
|
941
|
+
|
855
942
|
/** @internal */
|
856
|
-
export var
|
943
|
+
export var msdfFragmentShaderWGSL: {
|
857
944
|
name: string;
|
858
945
|
shader: string;
|
859
946
|
};
|
@@ -866,6 +953,8 @@ declare module ADDONS {
|
|
866
953
|
};
|
867
954
|
|
868
955
|
|
956
|
+
|
957
|
+
|
869
958
|
/** @internal */
|
870
959
|
export var msdfFragmentShader: {
|
871
960
|
name: string;
|
@@ -902,6 +991,8 @@ declare module ADDONS {
|
|
902
991
|
};
|
903
992
|
|
904
993
|
|
994
|
+
|
995
|
+
|
905
996
|
/** @internal */
|
906
997
|
export type SdfGlyph = {
|
907
998
|
char: BMFontChar;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "babylonjs-addons",
|
3
|
-
"version": "8.
|
3
|
+
"version": "8.9.0",
|
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.0"
|
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=
|