@tolokoban/tgd 2.0.69 → 2.0.70
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/lib/dist/material/{principled.d.ts → glass.d.ts} +6 -4
- package/lib/dist/material/glass.d.ts.map +1 -0
- package/lib/dist/material/glass.js +116 -0
- package/lib/dist/material/index.d.ts +1 -0
- package/lib/dist/material/index.d.ts.map +1 -1
- package/lib/dist/material/index.js +2 -1
- package/package.json +1 -1
- package/lib/dist/material/bsdf.d.ts +0 -25
- package/lib/dist/material/bsdf.d.ts.map +0 -1
- package/lib/dist/material/bsdf.js +0 -98
- package/lib/dist/material/principled.d.ts.map +0 -1
- package/lib/dist/material/principled.js +0 -112
- package/lib/dist/material/solid.d.ts +0 -22
- package/lib/dist/material/solid.d.ts.map +0 -1
- package/lib/dist/material/solid.js +0 -20
- package/lib/dist/types/input-keyboard.d.ts +0 -8
- package/lib/dist/types/input-keyboard.d.ts.map +0 -1
- package/lib/dist/types/input-keyboard.js +0 -2
- package/lib/dist/utils/math.d.ts +0 -19
- package/lib/dist/utils/math.d.ts.map +0 -1
- package/lib/dist/utils/math.js +0 -59
- package/lib/dist/utils/math.test.d.ts +0 -2
- package/lib/dist/utils/math.test.d.ts.map +0 -1
- package/lib/dist/utils/math.test.js +0 -22
|
@@ -3,7 +3,7 @@ import { TgdVec3, TgdVec4 } from "../math";
|
|
|
3
3
|
import { TgdMaterial } from "./material";
|
|
4
4
|
import { TgdLight } from "../light";
|
|
5
5
|
import { TgdTexture2D, TgdTextureCube } from "../texture";
|
|
6
|
-
export type
|
|
6
|
+
export type TgdMaterialGlassOptions = Partial<{
|
|
7
7
|
color: TgdVec4 | ArrayNumber4 | TgdTexture2D;
|
|
8
8
|
lights: TgdLight[];
|
|
9
9
|
ambientColor: TgdVec3 | ArrayNumber3 | TgdTextureCube;
|
|
@@ -12,14 +12,16 @@ export type TgdMaterialPrincipledOptions = Partial<{
|
|
|
12
12
|
specularIntensity: number;
|
|
13
13
|
normalMap: TgdTexture2D;
|
|
14
14
|
}>;
|
|
15
|
-
export declare class
|
|
15
|
+
export declare class TgdMaterialGlass extends TgdMaterial {
|
|
16
16
|
private readonly options;
|
|
17
17
|
specularExponent: number;
|
|
18
18
|
specularIntensity: number;
|
|
19
|
+
opacityMin: number;
|
|
20
|
+
opacityMax: number;
|
|
19
21
|
private textureColor;
|
|
20
22
|
private mustDeleteTextureColor;
|
|
21
23
|
private textureAmbient;
|
|
22
24
|
private mustDeleteTextureAmbient;
|
|
23
|
-
constructor(options?:
|
|
25
|
+
constructor(options?: TgdMaterialGlassOptions);
|
|
24
26
|
}
|
|
25
|
-
//# sourceMappingURL=
|
|
27
|
+
//# sourceMappingURL=glass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glass.d.ts","sourceRoot":"","sources":["../../src/material/glass.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,YAAY,EAGf,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAS3D,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC;IAC1C,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;IAC5C,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,YAAY,EAAE,OAAO,GAAG,YAAY,GAAG,cAAc,CAAA;IACrD,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,YAAY,CAAA;CAC1B,CAAC,CAAA;AAKF,qBAAa,gBAAiB,SAAQ,WAAW;IAWjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV7B,gBAAgB,SAAM;IACtB,iBAAiB,SAAI;IACrB,UAAU,SAAI;IACd,UAAU,SAAO;IAExB,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,sBAAsB,CAAQ;IACtC,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,wBAAwB,CAAQ;gBAEX,OAAO,GAAE,uBAA4B;CAqHrE"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { TgdVec3, TgdVec4 } from "./../math/index.js";
|
|
2
|
+
import { TgdMaterial } from "./material.js";
|
|
3
|
+
import { TgdTexture2D, TgdTextureCube } from "./../texture/index.js";
|
|
4
|
+
import { tgdCanvasCreateFill, webglPresetBlend, webglPresetDepth, } from "./../utils/index.js";
|
|
5
|
+
const DEFAULT_COLOR = new TgdVec4(0.8, 0.6, 0.1, 1);
|
|
6
|
+
const DEFAULT_AMBIENT = new TgdVec3(0.8, 0.8, 0.8);
|
|
7
|
+
export class TgdMaterialGlass extends TgdMaterial {
|
|
8
|
+
constructor(options = {}) {
|
|
9
|
+
const uniforms = {
|
|
10
|
+
uniTransfoMatrix: "mat4",
|
|
11
|
+
uniSpecularExponent: "float",
|
|
12
|
+
uniSpecularIntensity: "float",
|
|
13
|
+
uniOpacityBase: "float",
|
|
14
|
+
uniOpacityFactor: "float",
|
|
15
|
+
texColor: "sampler2D",
|
|
16
|
+
texAmbient: "samplerCube",
|
|
17
|
+
uniCameraPosition: "vec3",
|
|
18
|
+
};
|
|
19
|
+
const fragmentShaderCode = [
|
|
20
|
+
`vec3 N = normalize(varNormal);`,
|
|
21
|
+
`vec3 L = normalize(varPosition.xyz - uniCameraPosition);`,
|
|
22
|
+
`vec3 R = reflect(L, N);`,
|
|
23
|
+
`vec3 color = texture(texAmbient, R).rgb;`,
|
|
24
|
+
`color = pow(color, vec3(uniSpecularExponent));`,
|
|
25
|
+
`color *= uniSpecularIntensity;`,
|
|
26
|
+
`return vec4(color, uniOpacityBase + uniOpacityFactor * dot(color, color)) * texture(texColor, varUV);`,
|
|
27
|
+
];
|
|
28
|
+
const varyings = {
|
|
29
|
+
varUV: "vec2",
|
|
30
|
+
varNormal: "vec3",
|
|
31
|
+
varPosition: "vec4",
|
|
32
|
+
};
|
|
33
|
+
const vertexShaderCode = () => {
|
|
34
|
+
const code = [
|
|
35
|
+
`varUV = ${this.attUV};`,
|
|
36
|
+
`varNormal = mat3(uniTransfoMatrix) * ${this.attNormal};`,
|
|
37
|
+
`varPosition = uniTransfoMatrix * ${this.attPosition};`,
|
|
38
|
+
];
|
|
39
|
+
return code;
|
|
40
|
+
};
|
|
41
|
+
super({
|
|
42
|
+
state: {
|
|
43
|
+
blend: webglPresetBlend.alpha,
|
|
44
|
+
depth: webglPresetDepth.writeOnly,
|
|
45
|
+
},
|
|
46
|
+
delete: () => {
|
|
47
|
+
var _a, _b;
|
|
48
|
+
if (this.mustDeleteTextureAmbient)
|
|
49
|
+
(_a = this.textureAmbient) === null || _a === void 0 ? void 0 : _a.delete();
|
|
50
|
+
if (this.mustDeleteTextureColor)
|
|
51
|
+
(_b = this.textureColor) === null || _b === void 0 ? void 0 : _b.delete();
|
|
52
|
+
},
|
|
53
|
+
uniforms,
|
|
54
|
+
varyings,
|
|
55
|
+
vertexShaderCode,
|
|
56
|
+
fragmentShaderCode,
|
|
57
|
+
setUniforms: ({ program, camera, }) => {
|
|
58
|
+
var _a, _b;
|
|
59
|
+
if (!this.textureColor) {
|
|
60
|
+
// Lazy creation of a texture from an unique color.
|
|
61
|
+
this.textureColor = new TgdTexture2D(program);
|
|
62
|
+
const color = (_a = this.options.color) !== null && _a !== void 0 ? _a : DEFAULT_COLOR;
|
|
63
|
+
if (!(color instanceof TgdTexture2D)) {
|
|
64
|
+
this.textureColor.loadBitmap(tgdCanvasCreateFill(1, 1, color));
|
|
65
|
+
}
|
|
66
|
+
this.mustDeleteTextureColor = true;
|
|
67
|
+
}
|
|
68
|
+
if (!this.textureAmbient) {
|
|
69
|
+
// Lazy creation of a texture from an unique color.
|
|
70
|
+
const color = (_b = this.options.ambientColor) !== null && _b !== void 0 ? _b : DEFAULT_AMBIENT;
|
|
71
|
+
const canvas = tgdCanvasCreateFill(1, 1, color instanceof TgdTextureCube
|
|
72
|
+
? DEFAULT_AMBIENT
|
|
73
|
+
: color);
|
|
74
|
+
this.textureAmbient = new TgdTextureCube(program, {
|
|
75
|
+
imagePosX: canvas,
|
|
76
|
+
imagePosY: canvas,
|
|
77
|
+
imagePosZ: canvas,
|
|
78
|
+
imageNegX: canvas,
|
|
79
|
+
imageNegY: canvas,
|
|
80
|
+
imageNegZ: canvas,
|
|
81
|
+
});
|
|
82
|
+
this.mustDeleteTextureAmbient = true;
|
|
83
|
+
}
|
|
84
|
+
this.textureColor.activate(0, program, "texColor");
|
|
85
|
+
this.textureAmbient.activate(1, program, "texAmbient");
|
|
86
|
+
program.uniform3fv("uniCameraPosition", camera.transfo.actualPosition);
|
|
87
|
+
program.uniform1f("uniSpecularExponent", this.specularExponent);
|
|
88
|
+
program.uniform1f("uniSpecularIntensity", this.specularIntensity);
|
|
89
|
+
program.uniform1f("uniOpacityBase", this.opacityMin);
|
|
90
|
+
program.uniform1f("uniOpacityFactor", this.opacityMax - this.opacityMin);
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
this.options = options;
|
|
94
|
+
this.specularExponent = 2.2;
|
|
95
|
+
this.specularIntensity = 2;
|
|
96
|
+
this.opacityMin = 0;
|
|
97
|
+
this.opacityMax = 0.05;
|
|
98
|
+
this.textureColor = null;
|
|
99
|
+
this.mustDeleteTextureColor = false;
|
|
100
|
+
this.textureAmbient = null;
|
|
101
|
+
this.mustDeleteTextureAmbient = false;
|
|
102
|
+
if (typeof options.specularExponent === "number") {
|
|
103
|
+
this.specularExponent = options.specularExponent;
|
|
104
|
+
}
|
|
105
|
+
if (typeof options.specularIntensity === "number") {
|
|
106
|
+
this.specularIntensity = options.specularIntensity;
|
|
107
|
+
}
|
|
108
|
+
if (options.color instanceof TgdTexture2D) {
|
|
109
|
+
this.textureColor = options.color;
|
|
110
|
+
}
|
|
111
|
+
if (options.ambientColor instanceof TgdTextureCube) {
|
|
112
|
+
this.textureAmbient = options.ambientColor;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvZ2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUd4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUUzRCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDbkIsTUFBTSxZQUFZLENBQUE7QUFhbkIsTUFBTSxhQUFhLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDbkQsTUFBTSxlQUFlLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUVsRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsV0FBVztJQVc3QyxZQUE2QixVQUFtQyxFQUFFO1FBQzlELE1BQU0sUUFBUSxHQUF5QztZQUNuRCxnQkFBZ0IsRUFBRSxNQUFNO1lBQ3hCLG1CQUFtQixFQUFFLE9BQU87WUFDNUIsb0JBQW9CLEVBQUUsT0FBTztZQUM3QixjQUFjLEVBQUUsT0FBTztZQUN2QixnQkFBZ0IsRUFBRSxPQUFPO1lBQ3pCLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFVBQVUsRUFBRSxhQUFhO1lBQ3pCLGlCQUFpQixFQUFFLE1BQU07U0FDNUIsQ0FBQTtRQUNELE1BQU0sa0JBQWtCLEdBQWdCO1lBQ3BDLGdDQUFnQztZQUNoQywwREFBMEQ7WUFDMUQseUJBQXlCO1lBQ3pCLDBDQUEwQztZQUMxQyxnREFBZ0Q7WUFDaEQsZ0NBQWdDO1lBQ2hDLHVHQUF1RztTQUMxRyxDQUFBO1FBQ0QsTUFBTSxRQUFRLEdBQTJDO1lBQ3JELEtBQUss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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/material/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,QAAQ,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/material/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,QAAQ,CAAA"}
|
|
@@ -3,10 +3,11 @@ export * from "./diffuse.js";
|
|
|
3
3
|
export * from "./face-orientation.js";
|
|
4
4
|
export * from "./flat.js";
|
|
5
5
|
export * from "./ghost.js";
|
|
6
|
+
export * from "./glass.js";
|
|
6
7
|
export * from "./global.js";
|
|
7
8
|
export * from "./hull.js";
|
|
8
9
|
export * from "./material.js";
|
|
9
10
|
export * from "./normals.js";
|
|
10
11
|
export * from "./normal-map.js";
|
|
11
12
|
export * from "./toon.js";
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLFFBQVEsQ0FBQSJ9
|
package/package.json
CHANGED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ArrayNumber3, ArrayNumber4 } from "../types";
|
|
2
|
-
import { TgdVec3, TgdVec4 } from "../math";
|
|
3
|
-
import { TgdMaterial } from "./material";
|
|
4
|
-
import { TgdLight } from "../light";
|
|
5
|
-
import { TgdTexture2D, TgdTextureCube } from "../texture";
|
|
6
|
-
export type TgdMaterialBSDFOptions = Partial<{
|
|
7
|
-
color: TgdVec4 | ArrayNumber4 | TgdTexture2D;
|
|
8
|
-
lights: TgdLight[];
|
|
9
|
-
ambientColor: TgdVec3 | ArrayNumber3 | TgdTextureCube;
|
|
10
|
-
ambientIntensity: number;
|
|
11
|
-
specularExponent: number;
|
|
12
|
-
specularIntensity: number;
|
|
13
|
-
normalMap: TgdVec3 | ArrayNumber3 | TgdTexture2D;
|
|
14
|
-
}>;
|
|
15
|
-
export declare class TgdMaterialBSDF extends TgdMaterial {
|
|
16
|
-
light: TgdLight;
|
|
17
|
-
ambient: TgdLight;
|
|
18
|
-
specularExponent: number;
|
|
19
|
-
specularIntensity: number;
|
|
20
|
-
private readonly texture;
|
|
21
|
-
private readonly lightColor;
|
|
22
|
-
private readonly ambientColor;
|
|
23
|
-
constructor(options?: TgdMaterialBSDFOptions);
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=bsdf.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bsdf.d.ts","sourceRoot":"","sources":["../../src/material/bsdf.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,YAAY,EAGf,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG3D,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;IAC5C,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,YAAY,EAAE,OAAO,GAAG,YAAY,GAAG,cAAc,CAAA;IACrD,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;CACnD,CAAC,CAAA;AAIF,qBAAa,eAAgB,SAAQ,WAAW;IACrC,KAAK,WAAiB;IACtB,OAAO,WAAuD;IAC9D,gBAAgB,SAAK;IACrB,iBAAiB,SAAI;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;gBAEjC,OAAO,GAAE,sBAA2B;CAyFnD"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { TgdVec3, TgdVec4 } from "./../math/index.js";
|
|
2
|
-
import { TgdMaterial } from "./material.js";
|
|
3
|
-
import { TgdLight } from "./../light/index.js";
|
|
4
|
-
import { TgdTexture2D } from "./../texture/index.js";
|
|
5
|
-
const DEFAULT_COLOR = new TgdVec4(0.8, 0.6, 0.1, 1);
|
|
6
|
-
export class TgdMaterialBSDF extends TgdMaterial {
|
|
7
|
-
constructor(options = {}) {
|
|
8
|
-
var _a;
|
|
9
|
-
const color = options.color instanceof TgdTexture2D
|
|
10
|
-
? options.color
|
|
11
|
-
: new TgdVec4((_a = options.color) !== null && _a !== void 0 ? _a : DEFAULT_COLOR);
|
|
12
|
-
const hasTexture = !(color instanceof TgdVec4);
|
|
13
|
-
const uniforms = {
|
|
14
|
-
uniLight: "vec3",
|
|
15
|
-
uniLightDir: "vec3",
|
|
16
|
-
uniAmbient: "vec3",
|
|
17
|
-
uniSpecularExponent: "float",
|
|
18
|
-
uniSpecularIntensity: "float",
|
|
19
|
-
uniModelViewMatrix: "mat4",
|
|
20
|
-
};
|
|
21
|
-
const fragmentShaderCode = [
|
|
22
|
-
`vec3 normal = ${options.lockLightsToCamera ? "mat3(uniModelViewMatrix) * " : ""}normalize(varNormal);`,
|
|
23
|
-
`float light = 1.0 - dot(normal, uniLightDir);`,
|
|
24
|
-
options.lockLightsToCamera
|
|
25
|
-
? "light = max(0.0, light - 1.0);"
|
|
26
|
-
: "light *= .5;",
|
|
27
|
-
hasTexture
|
|
28
|
-
? `vec4 color = texture(texDiffuse, varUV);`
|
|
29
|
-
: `vec4 color = vec4(${color.join(", ")});`,
|
|
30
|
-
`vec3 reflection = ${options.lockLightsToCamera ? "" : "mat3(uniModelViewMatrix) * "}reflect(uniLightDir, normal);`,
|
|
31
|
-
`float spec = max(0.0, reflection.z);`,
|
|
32
|
-
`spec = pow(spec, uniSpecularExponent) * uniSpecularIntensity;`,
|
|
33
|
-
`color = vec4(`,
|
|
34
|
-
` color.rgb * (`,
|
|
35
|
-
` uniAmbient + uniLight * light`,
|
|
36
|
-
` ) + vec3(spec),`,
|
|
37
|
-
` 1.0`,
|
|
38
|
-
`);`,
|
|
39
|
-
`return color;`,
|
|
40
|
-
];
|
|
41
|
-
const varyings = {
|
|
42
|
-
varNormal: "vec3",
|
|
43
|
-
};
|
|
44
|
-
if (hasTexture) {
|
|
45
|
-
varyings.varUV = "vec2";
|
|
46
|
-
uniforms.texDiffuse = "sampler2D";
|
|
47
|
-
}
|
|
48
|
-
const vertexShaderCode = () => {
|
|
49
|
-
const code = [
|
|
50
|
-
`varNormal = mat3(uniTransfoMatrix) * ${this.attNormal};`,
|
|
51
|
-
];
|
|
52
|
-
if (hasTexture) {
|
|
53
|
-
code.push(`varUV = ${this.attUV};`);
|
|
54
|
-
}
|
|
55
|
-
return code;
|
|
56
|
-
};
|
|
57
|
-
super({
|
|
58
|
-
uniforms,
|
|
59
|
-
varyings,
|
|
60
|
-
vertexShaderCode,
|
|
61
|
-
fragmentShaderCode,
|
|
62
|
-
setUniforms: (program) => {
|
|
63
|
-
program.uniform3fv("uniLightDir", this.light.direction);
|
|
64
|
-
this.lightColor.from(this.light.color).scale(this.light.color.w);
|
|
65
|
-
program.uniform3fv("uniLight", this.lightColor);
|
|
66
|
-
this.ambientColor
|
|
67
|
-
.from(this.ambient.color)
|
|
68
|
-
.scale(this.ambient.color.w);
|
|
69
|
-
program.uniform3fv("uniAmbient", this.ambientColor);
|
|
70
|
-
program.uniform1f("uniSpecularExponent", this.specularExponent);
|
|
71
|
-
program.uniform1f("uniSpecularIntensity", this.specularIntensity);
|
|
72
|
-
const { texture } = this;
|
|
73
|
-
if (texture)
|
|
74
|
-
texture.activate(0, program, "texDiffuse");
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
this.light = new TgdLight();
|
|
78
|
-
this.ambient = new TgdLight({ color: new TgdVec4(0.2, 0.1, 0, 0) });
|
|
79
|
-
this.specularExponent = 20;
|
|
80
|
-
this.specularIntensity = 1;
|
|
81
|
-
this.lightColor = new TgdVec3();
|
|
82
|
-
this.ambientColor = new TgdVec3();
|
|
83
|
-
this.texture = hasTexture ? color : null;
|
|
84
|
-
if (options.light) {
|
|
85
|
-
this.light = options.light;
|
|
86
|
-
}
|
|
87
|
-
if (options.ambient) {
|
|
88
|
-
this.ambient = options.ambient;
|
|
89
|
-
}
|
|
90
|
-
if (typeof options.specularExponent === "number") {
|
|
91
|
-
this.specularExponent = options.specularExponent;
|
|
92
|
-
}
|
|
93
|
-
if (typeof options.specularIntensity === "number") {
|
|
94
|
-
this.specularIntensity = options.specularIntensity;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnNkZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9ic2RmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLGNBQWMsQ0FBQTtBQWEzRCxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUVuRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBVTVDLFlBQVksVUFBa0MsRUFBRTs7UUFDNUMsTUFBTSxLQUFLLEdBQ1AsT0FBTyxDQUFDLEtBQUssWUFBWSxZQUFZO1lBQ2pDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSztZQUNmLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFBLE9BQU8sQ0FBQyxLQUFLLG1DQUFJLGFBQWEsQ0FBQyxDQUFBO1FBQ3JELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLFlBQVksT0FBTyxDQUFDLENBQUE7UUFDOUMsTUFBTSxRQUFRLEdBQXlDO1lBQ25ELFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLG1CQUFtQixFQUFFLE9BQU87WUFDNUIsb0JBQW9CLEVBQUUsT0FBTztZQUM3QixrQkFBa0IsRUFBRSxNQUFNO1NBQzdCLENBQUE7UUFDRCxNQUFNLGtCQUFrQixHQUFnQjtZQUNwQyxpQkFBaUIsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsRUFBRSx1QkFBdUI7WUFDdkcsK0NB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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"principled.d.ts","sourceRoot":"","sources":["../../src/material/principled.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,YAAY,EAGf,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAK3D,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC;IAC/C,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;IAC5C,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,YAAY,EAAE,OAAO,GAAG,YAAY,GAAG,cAAc,CAAA;IACrD,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,YAAY,CAAA;CAC1B,CAAC,CAAA;AAKF,qBAAa,qBAAsB,SAAQ,WAAW;IAStC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR7B,gBAAgB,SAAM;IACtB,iBAAiB,SAAI;IAE5B,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,sBAAsB,CAAQ;IACtC,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,wBAAwB,CAAQ;gBAEX,OAAO,GAAE,4BAAiC;CAgH1E"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { TgdVec3, TgdVec4 } from "./../math/index.js";
|
|
2
|
-
import { TgdMaterial } from "./material.js";
|
|
3
|
-
import { TgdTexture2D, TgdTextureCube } from "./../texture/index.js";
|
|
4
|
-
import { tgdCanvasCreateFill } from "./../utils/index.js";
|
|
5
|
-
const DEFAULT_COLOR = new TgdVec4(0.8, 0.6, 0.1, 1);
|
|
6
|
-
const DEFAULT_AMBIENT = new TgdVec3(0.8, 0.8, 0.8);
|
|
7
|
-
export class TgdMaterialPrincipled extends TgdMaterial {
|
|
8
|
-
constructor(options = {}) {
|
|
9
|
-
const uniforms = {
|
|
10
|
-
uniTransfoMatrix: "mat4",
|
|
11
|
-
uniSpecularExponent: "float",
|
|
12
|
-
uniSpecularIntensity: "float",
|
|
13
|
-
texColor: "sampler2D",
|
|
14
|
-
texAmbient: "samplerCube",
|
|
15
|
-
uniCameraPosition: "vec3",
|
|
16
|
-
};
|
|
17
|
-
const fragmentShaderCode = [
|
|
18
|
-
`vec3 N = normalize(varNormal);`,
|
|
19
|
-
`vec3 L = normalize(varPosition.xyz - uniCameraPosition);`,
|
|
20
|
-
`vec3 R = reflect(L, N);`,
|
|
21
|
-
`vec3 color = texture(texAmbient, R).rgb;`,
|
|
22
|
-
`color = pow(color, vec3(uniSpecularExponent));`,
|
|
23
|
-
`color *= uniSpecularIntensity;`,
|
|
24
|
-
`return vec4(color, 1) * texture(texColor, varUV);`,
|
|
25
|
-
];
|
|
26
|
-
const varyings = {
|
|
27
|
-
varUV: "vec2",
|
|
28
|
-
varNormal: "vec3",
|
|
29
|
-
varPosition: "vec4",
|
|
30
|
-
};
|
|
31
|
-
const vertexShaderCode = () => {
|
|
32
|
-
const code = [
|
|
33
|
-
`varUV = ${this.attUV};`,
|
|
34
|
-
`varNormal = mat3(uniTransfoMatrix) * ${this.attNormal};`,
|
|
35
|
-
`varPosition = uniTransfoMatrix * ${this.attPosition};`,
|
|
36
|
-
];
|
|
37
|
-
return code;
|
|
38
|
-
};
|
|
39
|
-
super({
|
|
40
|
-
delete: () => {
|
|
41
|
-
var _a, _b;
|
|
42
|
-
if (this.mustDeleteTextureAmbient)
|
|
43
|
-
(_a = this.textureAmbient) === null || _a === void 0 ? void 0 : _a.delete();
|
|
44
|
-
if (this.mustDeleteTextureColor)
|
|
45
|
-
(_b = this.textureColor) === null || _b === void 0 ? void 0 : _b.delete();
|
|
46
|
-
},
|
|
47
|
-
uniforms,
|
|
48
|
-
varyings,
|
|
49
|
-
vertexShaderCode,
|
|
50
|
-
fragmentShaderCode,
|
|
51
|
-
setUniforms: ({ program, camera, }) => {
|
|
52
|
-
var _a, _b;
|
|
53
|
-
if (!this.textureColor) {
|
|
54
|
-
// Lazy creation of a texture from an unique color.
|
|
55
|
-
this.textureColor = new TgdTexture2D(program);
|
|
56
|
-
const color = (_a = this.options.color) !== null && _a !== void 0 ? _a : DEFAULT_COLOR;
|
|
57
|
-
if (!(color instanceof TgdTexture2D)) {
|
|
58
|
-
this.textureColor.loadBitmap(tgdCanvasCreateFill(1, 1, color));
|
|
59
|
-
}
|
|
60
|
-
this.mustDeleteTextureColor = true;
|
|
61
|
-
}
|
|
62
|
-
if (!this.textureAmbient) {
|
|
63
|
-
// Lazy creation of a texture from an unique color.
|
|
64
|
-
const color = (_b = this.options.ambientColor) !== null && _b !== void 0 ? _b : DEFAULT_AMBIENT;
|
|
65
|
-
const canvas = tgdCanvasCreateFill(1, 1, color instanceof TgdTextureCube
|
|
66
|
-
? DEFAULT_AMBIENT
|
|
67
|
-
: color);
|
|
68
|
-
this.textureAmbient = new TgdTextureCube(program, {
|
|
69
|
-
imagePosX: canvas,
|
|
70
|
-
imagePosY: canvas,
|
|
71
|
-
imagePosZ: canvas,
|
|
72
|
-
imageNegX: canvas,
|
|
73
|
-
imageNegY: canvas,
|
|
74
|
-
imageNegZ: canvas,
|
|
75
|
-
});
|
|
76
|
-
this.mustDeleteTextureAmbient = true;
|
|
77
|
-
}
|
|
78
|
-
this.textureColor.activate(0, program, "texColor");
|
|
79
|
-
this.textureAmbient.activate(1, program, "texAmbient");
|
|
80
|
-
program.uniform3fv("uniCameraPosition", camera.transfo.actualPosition);
|
|
81
|
-
program.uniform1f("uniSpecularExponent", this.specularExponent);
|
|
82
|
-
program.uniform1f("uniSpecularIntensity", this.specularIntensity);
|
|
83
|
-
},
|
|
84
|
-
});
|
|
85
|
-
this.options = options;
|
|
86
|
-
this.specularExponent = 2.2;
|
|
87
|
-
this.specularIntensity = 2;
|
|
88
|
-
this.textureColor = null;
|
|
89
|
-
this.mustDeleteTextureColor = false;
|
|
90
|
-
this.textureAmbient = null;
|
|
91
|
-
this.mustDeleteTextureAmbient = false;
|
|
92
|
-
// if (options.light) {
|
|
93
|
-
// this.light = options.light
|
|
94
|
-
// }
|
|
95
|
-
// if (options.ambient) {
|
|
96
|
-
// this.ambient = options.ambient
|
|
97
|
-
// }
|
|
98
|
-
if (typeof options.specularExponent === "number") {
|
|
99
|
-
this.specularExponent = options.specularExponent;
|
|
100
|
-
}
|
|
101
|
-
if (typeof options.specularIntensity === "number") {
|
|
102
|
-
this.specularIntensity = options.specularIntensity;
|
|
103
|
-
}
|
|
104
|
-
if (options.color instanceof TgdTexture2D) {
|
|
105
|
-
this.textureColor = options.color;
|
|
106
|
-
}
|
|
107
|
-
if (options.ambientColor instanceof TgdTextureCube) {
|
|
108
|
-
this.textureAmbient = options.ambientColor;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGxlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9wcmluY2lwbGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFHeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBYWhELE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ25ELE1BQU0sZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFFbEQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFdBQVc7SUFTbEQsWUFBNkIsVUFBd0MsRUFBRTtRQUNuRSxNQUFNLFFBQVEsR0FBeUM7WUFDbkQsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixtQkFBbUIsRUFBRSxPQUFPO1lBQzVCLG9CQUFvQixFQUFFLE9BQU87WUFDN0IsUUFBUSxFQUFFLFdBQVc7WUFDckIsVUFBVSxFQUFFLGFBQWE7WUFDekIsaUJBQWlCLEVBQUUsTUFBTTtTQUM1QixDQUFBO1FBQ0QsTUFBTSxrQkFBa0IsR0FBZ0I7WUFDcEMsZ0NBQWdDO1lBQ2hDLDBEQUEwRDtZQUMxRCx5QkFBeUI7WUFDekIsMENBQTBDO1lBQzFDLGdEQUFnRDtZQUNoRCxnQ0FBZ0M7WUFDaEMsbURBQW1EO1NBQ3RELENBQUE7UUFDRCxNQUFNLFFBQVEsR0FBMkM7WUFDckQsS0FBSyxFQUFFLE1BQU07WUFDYixTQUFTLEVBQUUsTUFBTTtZQUNqQixXQUFXLEVBQUUsTUFBTTtTQUN0QixDQUFB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
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ArrayNumber4, WebglAttributeType, WebglUniformType } from "../types";
|
|
2
|
-
import { TgdVec4 } from "../math";
|
|
3
|
-
import { TgdMaterial } from "./material";
|
|
4
|
-
import { TgdCodeBloc } from "../shader/code";
|
|
5
|
-
import { TgdProgram } from "../program";
|
|
6
|
-
export type TgdMaterialSolidOptions = Partial<{
|
|
7
|
-
color: ArrayNumber4 | TgdVec4;
|
|
8
|
-
}>;
|
|
9
|
-
export declare class TgdMaterialSolid extends TgdMaterial {
|
|
10
|
-
color: TgdVec4;
|
|
11
|
-
readonly varyings: {
|
|
12
|
-
[name: string]: WebglAttributeType;
|
|
13
|
-
};
|
|
14
|
-
readonly uniforms: {
|
|
15
|
-
[name: string]: WebglUniformType;
|
|
16
|
-
};
|
|
17
|
-
readonly fragmentShaderCode: TgdCodeBloc;
|
|
18
|
-
readonly vertexShaderCode: TgdCodeBloc;
|
|
19
|
-
constructor(options?: TgdMaterialSolidOptions);
|
|
20
|
-
setUniforms(program: TgdProgram): void;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=solid.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../../src/material/solid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC;IAC1C,KAAK,EAAE,YAAY,GAAG,OAAO,CAAA;CAChC,CAAC,CAAA;AAIF,qBAAa,gBAAiB,SAAQ,WAAW;IACtC,KAAK,EAAE,OAAO,CAAA;IAErB,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChE,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAE7D;IACD,SAAgB,kBAAkB,EAAE,WAAW,CAAA;IAC/C,SAAgB,gBAAgB,EAAE,WAAW,CAAA;gBAEjC,OAAO,GAAE,uBAA4B;IAQjD,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;CAGzC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { TgdVec4 } from "./../math/index.js";
|
|
2
|
-
import { TgdMaterial } from "./material.js";
|
|
3
|
-
const DEFAULT_COLOR = [0.111, 0.333, 0.999, 1];
|
|
4
|
-
export class TgdMaterialSolid extends TgdMaterial {
|
|
5
|
-
constructor(options = {}) {
|
|
6
|
-
var _a;
|
|
7
|
-
super();
|
|
8
|
-
this.uniforms = {
|
|
9
|
-
uniColor: "vec4",
|
|
10
|
-
};
|
|
11
|
-
this.color = new TgdVec4((_a = options.color) !== null && _a !== void 0 ? _a : DEFAULT_COLOR);
|
|
12
|
-
this.fragmentShaderCode = [`return uniColor;`];
|
|
13
|
-
this.vertexShaderCode = [];
|
|
14
|
-
this.varyings = {};
|
|
15
|
-
}
|
|
16
|
-
setUniforms(program) {
|
|
17
|
-
program.uniform4fv("uniColor", this.color);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29saWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvc29saWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBUXhDLE1BQU0sYUFBYSxHQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRTVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUFXO0lBVTdDLFlBQVksVUFBbUMsRUFBRTs7UUFDN0MsS0FBSyxFQUFFLENBQUE7UUFQSyxhQUFRLEdBQXlDO1lBQzdELFFBQVEsRUFBRSxNQUFNO1NBQ25CLENBQUE7UUFNRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLE1BQUEsT0FBTyxDQUFDLEtBQUssbUNBQUksYUFBYSxDQUFDLENBQUE7UUFDeEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFBO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBbUI7UUFDM0IsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlDLENBQUM7Q0FDSiJ9
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { TgdEvent } from "../event";
|
|
2
|
-
export interface TgdInputKeyboard {
|
|
3
|
-
readonly eventKeyPress: TgdEvent<KeyboardEvent>;
|
|
4
|
-
isDown(...keys: string[]): boolean;
|
|
5
|
-
isUp(...keys: string[]): boolean;
|
|
6
|
-
hasClicked(key: string): boolean;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=input-keyboard.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-keyboard.d.ts","sourceRoot":"","sources":["../../src/types/input-keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEnC,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAC/C,MAAM,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAClC,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAChC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACnC"}
|
package/lib/dist/utils/math.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export declare function tgdCalcClamp(value: number, min: number, max: number): number;
|
|
2
|
-
export declare function tgdCalcMapRange(value: number, fromMin: number, fromMax: number, toMin: number, toMax: number, clamp?: boolean): number;
|
|
3
|
-
export declare function tgdCalcMix(valueAtT0: number, valueAtT1: number, t: number): number;
|
|
4
|
-
export declare function tgdCalcDegToRad(deg: number): number;
|
|
5
|
-
export declare function tgdCalcRadToDeg(rad: number): number;
|
|
6
|
-
export declare function tgdCalcSmoothStep(boundFor0: number, boundFor1: number, value: number): number;
|
|
7
|
-
export declare function tgdCalcRandom(min?: number, max?: number): number;
|
|
8
|
-
/**
|
|
9
|
-
* Force `value` to be between `min` and `max` by shifting it
|
|
10
|
-
* by `max - min` as many times as needed.
|
|
11
|
-
* @example
|
|
12
|
-
* ```ts
|
|
13
|
-
* tgdCalcModulo(3, 10, 20) === 13
|
|
14
|
-
* tgdCalcModulo(13, 10, 20) === 13
|
|
15
|
-
* tgdCalcModulo(23, 10, 20) === 13
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
export declare function tgdCalcModulo(value: number, min: number, max: number): number;
|
|
19
|
-
//# sourceMappingURL=math.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI5E;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,UAAQ,GACZ,MAAM,CAMR;AAED,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,CAAC,EAAE,MAAM,GACR,MAAM,CAER;AAKD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,UAE1C;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,UAE1C;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM,CAGR;AAED,wBAAgB,aAAa,CAAC,GAAG,SAAI,EAAE,GAAG,CAAC,EAAE,MAAM,UAGlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAepE"}
|
package/lib/dist/utils/math.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
export function tgdCalcClamp(value, min, max) {
|
|
2
|
-
if (value < min)
|
|
3
|
-
return min;
|
|
4
|
-
if (value > max)
|
|
5
|
-
return max;
|
|
6
|
-
return value;
|
|
7
|
-
}
|
|
8
|
-
export function tgdCalcMapRange(value, fromMin, fromMax, toMin, toMax, clamp = false) {
|
|
9
|
-
const v = clamp ? tgdCalcClamp(value, fromMin, fromMax) : value;
|
|
10
|
-
if (fromMin === fromMax)
|
|
11
|
-
return v;
|
|
12
|
-
const alpha = (v - fromMin) / (fromMax - fromMin);
|
|
13
|
-
return toMin + alpha * (toMax - toMin);
|
|
14
|
-
}
|
|
15
|
-
export function tgdCalcMix(valueAtT0, valueAtT1, t) {
|
|
16
|
-
return (1 - t) * valueAtT0 + t * valueAtT1;
|
|
17
|
-
}
|
|
18
|
-
const DEG_PER_RAD = 180 / Math.PI;
|
|
19
|
-
const RAD_PER_DEG = Math.PI / 180;
|
|
20
|
-
export function tgdCalcDegToRad(deg) {
|
|
21
|
-
return deg * RAD_PER_DEG;
|
|
22
|
-
}
|
|
23
|
-
export function tgdCalcRadToDeg(rad) {
|
|
24
|
-
return rad * DEG_PER_RAD;
|
|
25
|
-
}
|
|
26
|
-
export function tgdCalcSmoothStep(boundFor0, boundFor1, value) {
|
|
27
|
-
const t = tgdCalcClamp((value - boundFor0) / (boundFor1 - boundFor0), 0, 1);
|
|
28
|
-
return t * t * (3 - 2 * t);
|
|
29
|
-
}
|
|
30
|
-
export function tgdCalcRandom(min = 1, max) {
|
|
31
|
-
if (typeof max !== "number")
|
|
32
|
-
return Math.random() * min;
|
|
33
|
-
return min + (max - min) * Math.random();
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Force `value` to be between `min` and `max` by shifting it
|
|
37
|
-
* by `max - min` as many times as needed.
|
|
38
|
-
* @example
|
|
39
|
-
* ```ts
|
|
40
|
-
* tgdCalcModulo(3, 10, 20) === 13
|
|
41
|
-
* tgdCalcModulo(13, 10, 20) === 13
|
|
42
|
-
* tgdCalcModulo(23, 10, 20) === 13
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
export function tgdCalcModulo(value, min, max) {
|
|
46
|
-
const range = max - min;
|
|
47
|
-
if (range === 0)
|
|
48
|
-
return min;
|
|
49
|
-
if (value < min) {
|
|
50
|
-
const n = Math.ceil((min - value) / range);
|
|
51
|
-
return value + n * range;
|
|
52
|
-
}
|
|
53
|
-
if (value > max) {
|
|
54
|
-
const n = Math.ceil((value - max) / range);
|
|
55
|
-
return value - n * range;
|
|
56
|
-
}
|
|
57
|
-
return value;
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxHQUFXO0lBQ2xFLElBQUksS0FBSyxHQUFHLEdBQUc7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUM1QixJQUFJLEtBQUssR0FBRyxHQUFHO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDNUIsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsS0FBYSxFQUNiLE9BQWUsRUFDZixPQUFlLEVBQ2YsS0FBYSxFQUNiLEtBQWEsRUFDYixLQUFLLEdBQUcsS0FBSztJQUViLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNoRSxJQUFJLE9BQU8sS0FBSyxPQUFPO1FBQUUsT0FBTyxDQUFDLENBQUM7SUFFbEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDbEQsT0FBTyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUN4QixTQUFpQixFQUNqQixTQUFpQixFQUNqQixDQUFTO0lBRVQsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxXQUFXLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFFbEMsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFXO0lBQ3pDLE9BQU8sR0FBRyxHQUFHLFdBQVcsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFXO0lBQ3pDLE9BQU8sR0FBRyxHQUFHLFdBQVcsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixTQUFpQixFQUNqQixTQUFpQixFQUNqQixLQUFhO0lBRWIsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBWTtJQUNqRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDeEQsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzNDLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsR0FBVztJQUNuRSxNQUFNLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ3hCLElBQUksS0FBSyxLQUFLLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUU1QixJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE9BQU8sS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDM0MsT0FBTyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"math.test.d.ts","sourceRoot":"","sources":["../../src/utils/math.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { tgdCalcModulo, tgdCalcRandom } from "./math.js";
|
|
2
|
-
describe(`tgdCalc*()`, () => {
|
|
3
|
-
describe(`tgdCalcModulo()`, () => {
|
|
4
|
-
const cases = [
|
|
5
|
-
[-3, 10, 20, 17],
|
|
6
|
-
[3, 10, 20, 13],
|
|
7
|
-
[13, 10, 20, 13],
|
|
8
|
-
[13, 20, 10, 13],
|
|
9
|
-
[23, 10, 20, 13],
|
|
10
|
-
[3.14, 1, 1.5, 1.14],
|
|
11
|
-
[3.64, 1, 1.5, 1.14],
|
|
12
|
-
[tgdCalcRandom(-100, 100), 1.618, 1.618, 1.618],
|
|
13
|
-
[7, 20, 10, 17],
|
|
14
|
-
];
|
|
15
|
-
for (const [value, min, max, expected] of cases) {
|
|
16
|
-
it(`should have (${value}, ${min}, ${max}) === ${expected}`, () => {
|
|
17
|
-
expect(tgdCalcModulo(value, min, max)).toBeCloseTo(expected, 6);
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL21hdGgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUVyRCxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUN4QixRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBQzdCLE1BQU0sS0FBSyxHQUVQO1lBQ0EsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNoQixDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNmLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDO1lBQ3BCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDO1lBQ3BCLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ2xCLENBQUE7UUFDRCxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUM5QyxFQUFFLENBQUMsZ0JBQWdCLEtBQUssS0FBSyxHQUFHLEtBQUssR0FBRyxTQUFTLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRTtnQkFDOUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUNuRSxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBIn0=
|