@tolokoban/tgd 2.0.17 → 2.0.18

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.
Files changed (78) hide show
  1. package/lib/dist/filter/filter.d.ts +8 -7
  2. package/lib/dist/filter/filter.d.ts.map +1 -1
  3. package/lib/dist/filter/filter.js +4 -2
  4. package/lib/dist/filter/index.d.ts +1 -0
  5. package/lib/dist/filter/index.d.ts.map +1 -1
  6. package/lib/dist/filter/index.js +2 -1
  7. package/lib/dist/filter/zoom.d.ts +10 -0
  8. package/lib/dist/filter/zoom.d.ts.map +1 -0
  9. package/lib/dist/filter/zoom.js +21 -0
  10. package/lib/dist/loader/asset.d.ts +5 -3
  11. package/lib/dist/loader/asset.d.ts.map +1 -1
  12. package/lib/dist/loader/asset.js +30 -20
  13. package/lib/dist/material/diffuse.d.ts +7 -3
  14. package/lib/dist/material/diffuse.d.ts.map +1 -1
  15. package/lib/dist/material/diffuse.js +14 -3
  16. package/lib/dist/material/ghost.d.ts +3 -3
  17. package/lib/dist/material/ghost.d.ts.map +1 -1
  18. package/lib/dist/material/ghost.js +1 -1
  19. package/lib/dist/material/hull.d.ts +24 -0
  20. package/lib/dist/material/hull.d.ts.map +1 -0
  21. package/lib/dist/material/hull.js +30 -0
  22. package/lib/dist/material/index.d.ts +1 -0
  23. package/lib/dist/material/index.d.ts.map +1 -1
  24. package/lib/dist/material/index.js +2 -1
  25. package/lib/dist/material/material.d.ts +12 -4
  26. package/lib/dist/material/material.d.ts.map +1 -1
  27. package/lib/dist/material/material.js +9 -1
  28. package/lib/dist/material/normals.d.ts +3 -3
  29. package/lib/dist/material/normals.d.ts.map +1 -1
  30. package/lib/dist/material/normals.js +1 -1
  31. package/lib/dist/material/solid.d.ts +5 -5
  32. package/lib/dist/material/solid.d.ts.map +1 -1
  33. package/lib/dist/material/solid.js +3 -3
  34. package/lib/dist/math/vec4.d.ts +3 -3
  35. package/lib/dist/math/vec4.d.ts.map +1 -1
  36. package/lib/dist/math/vec4.js +20 -1
  37. package/lib/dist/painter/filter/filter.d.ts.map +1 -1
  38. package/lib/dist/painter/filter/filter.js +8 -10
  39. package/lib/dist/painter/framebuffer.backup.d.ts +39 -0
  40. package/lib/dist/painter/framebuffer.backup.d.ts.map +1 -0
  41. package/lib/dist/painter/framebuffer.backup.js +125 -0
  42. package/lib/dist/painter/framebuffer.d.ts +18 -7
  43. package/lib/dist/painter/framebuffer.d.ts.map +1 -1
  44. package/lib/dist/painter/framebuffer.js +69 -87
  45. package/lib/dist/painter/index.d.ts +0 -1
  46. package/lib/dist/painter/index.d.ts.map +1 -1
  47. package/lib/dist/painter/index.js +1 -2
  48. package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
  49. package/lib/dist/painter/mesh/gltf/gltf.js +27 -49
  50. package/lib/dist/painter/mesh/hull/hull.d.ts +12 -0
  51. package/lib/dist/painter/mesh/hull/hull.d.ts.map +1 -0
  52. package/lib/dist/painter/mesh/hull/hull.js +11 -0
  53. package/lib/dist/painter/mesh/mesh/mesh.d.ts +1 -1
  54. package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
  55. package/lib/dist/painter/mesh/mesh/mesh.js +8 -6
  56. package/lib/dist/painter/state/state.d.ts +10 -1
  57. package/lib/dist/painter/state/state.d.ts.map +1 -1
  58. package/lib/dist/painter/state/state.js +20 -18
  59. package/lib/dist/shader/code.d.ts +8 -8
  60. package/lib/dist/shader/code.d.ts.map +1 -1
  61. package/lib/dist/shader/code.js +1 -1
  62. package/lib/dist/shader/fragment.d.ts +11 -11
  63. package/lib/dist/shader/fragment.d.ts.map +1 -1
  64. package/lib/dist/shader/fragment.js +1 -1
  65. package/lib/dist/shader/vertex.d.ts +11 -11
  66. package/lib/dist/shader/vertex.d.ts.map +1 -1
  67. package/lib/dist/shader/vertex.js +1 -1
  68. package/lib/dist/texture/texture2d.d.ts +2 -1
  69. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  70. package/lib/dist/texture/texture2d.js +7 -1
  71. package/lib/dist/types/program.d.ts +3 -3
  72. package/lib/dist/types/program.d.ts.map +1 -1
  73. package/lib/dist/types/texture2d.d.ts +2 -1
  74. package/lib/dist/types/texture2d.d.ts.map +1 -1
  75. package/lib/dist/types/webgl.d.ts +12 -0
  76. package/lib/dist/types/webgl.d.ts.map +1 -1
  77. package/lib/dist/types/webgl.js +14 -1
  78. package/package.json +3 -3
@@ -1,4 +1,5 @@
1
- import { CodeBloc, Functions } from "../shader/code";
1
+ import { TgdContext } from "../context";
2
+ import { TgdCodeBloc, TgdCodeFunctions } from "../shader/code";
2
3
  import { TgdProgram, WebglUniformType } from "../types";
3
4
  /**
4
5
  * Define the shader to be used in a filter.
@@ -25,17 +26,17 @@ export declare class TgdFilter {
25
26
  * The code of a `vec4 applyColor()` function.
26
27
  * Must return a `vec4` color.
27
28
  */
28
- readonly fragmentShaderCode: CodeBloc;
29
- readonly extraFunctions: Functions | CodeBloc;
30
- readonly setUniforms: (program: TgdProgram, time: number) => void;
29
+ readonly fragmentShaderCode: TgdCodeBloc;
30
+ readonly extraFunctions: TgdCodeFunctions | TgdCodeBloc;
31
+ readonly setUniforms: (program: TgdProgram, time: number, context: TgdContext) => void;
31
32
  constructor(options?: Partial<TgdFilterOptions>);
32
33
  }
33
34
  export interface TgdFilterOptions {
34
35
  uniforms: {
35
36
  [name: string]: WebglUniformType;
36
37
  };
37
- fragmentShaderCode: CodeBloc;
38
- extraFunctions: Functions | CodeBloc;
39
- setUniforms(program: TgdProgram, time: number): void;
38
+ fragmentShaderCode: TgdCodeBloc;
39
+ extraFunctions: TgdCodeFunctions | TgdCodeBloc;
40
+ setUniforms(program: TgdProgram, time: number, context: TgdContext): void;
40
41
  }
41
42
  //# sourceMappingURL=filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/filter/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEzD;;;;;;;;;;;;GAYG;AACH,qBAAa,SAAS;IAClB;;;OAGG;IACH,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAK;IAEnE;;;OAGG;IACH,SAAgB,kBAAkB,EAAE,QAAQ,CAG3C;IAED,SAAgB,cAAc,EAAE,SAAS,GAAG,QAAQ,CAAK;IAEzD,SAAgB,WAAW,YAEd,UAAU,QAEb,MAAM,KACb,IAAI,CAAM;gBAED,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAM;CAQtD;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAA;IAC9C,kBAAkB,EAAE,QAAQ,CAAA;IAC5B,cAAc,EAAE,SAAS,GAAG,QAAQ,CAAA;IACpC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACvD"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/filter/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEzD;;;;;;;;;;;;GAYG;AACH,qBAAa,SAAS;IAClB;;;OAGG;IACH,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAK;IAEnE;;;OAGG;IACH,SAAgB,kBAAkB,EAAE,WAAW,CAG9C;IAED,SAAgB,cAAc,EAAE,gBAAgB,GAAG,WAAW,CAAK;IAEnE,SAAgB,WAAW,YAEd,UAAU,QAEb,MAAM,WAEH,UAAU,KACpB,IAAI,CAAM;gBAED,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAM;CAQtD;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAA;IAC9C,kBAAkB,EAAE,WAAW,CAAA;IAC/B,cAAc,EAAE,gBAAgB,GAAG,WAAW,CAAA;IAC9C,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAAA;CAC5E"}
@@ -30,7 +30,9 @@ export class TgdFilter {
30
30
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
31
31
  program,
32
32
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
33
- time) => { };
33
+ time,
34
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
35
+ context) => { };
34
36
  constructor(options = {}) {
35
37
  const { uniforms, fragmentShaderCode, extraFunctions, setUniforms } = options;
36
38
  if (uniforms)
@@ -43,4 +45,4 @@ export class TgdFilter {
43
45
  this.setUniforms = setUniforms;
44
46
  }
45
47
  }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbHRlci9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFDbEI7OztPQUdHO0lBQ2EsUUFBUSxHQUF5QyxFQUFFLENBQUE7SUFFbkU7OztPQUdHO0lBQ2Esa0JBQWtCLEdBQWE7UUFDM0MsMENBQTBDO1FBQzFDLGVBQWU7S0FDbEIsQ0FBQTtJQUVlLGNBQWMsR0FBeUIsRUFBRSxDQUFBO0lBRXpDLFdBQVcsR0FBRztJQUMxQiw2REFBNkQ7SUFDN0QsT0FBbUI7SUFDbkIsNkRBQTZEO0lBQzdELElBQVksRUFDUixFQUFFLEdBQUUsQ0FBQyxDQUFBO0lBRWIsWUFBWSxVQUFxQyxFQUFFO1FBQy9DLE1BQU0sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxHQUMvRCxPQUFPLENBQUE7UUFDWCxJQUFJLFFBQVE7WUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN0QyxJQUFJLGtCQUFrQjtZQUFFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQTtRQUNwRSxJQUFJLGNBQWM7WUFBRSxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQTtRQUN4RCxJQUFJLFdBQVc7WUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtJQUNuRCxDQUFDO0NBQ0oifQ==
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbHRlci9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFDbEI7OztPQUdHO0lBQ2EsUUFBUSxHQUF5QyxFQUFFLENBQUE7SUFFbkU7OztPQUdHO0lBQ2Esa0JBQWtCLEdBQWdCO1FBQzlDLDBDQUEwQztRQUMxQyxlQUFlO0tBQ2xCLENBQUE7SUFFZSxjQUFjLEdBQW1DLEVBQUUsQ0FBQTtJQUVuRCxXQUFXLEdBQUc7SUFDMUIsNkRBQTZEO0lBQzdELE9BQW1CO0lBQ25CLDZEQUE2RDtJQUM3RCxJQUFZO0lBQ1osNkRBQTZEO0lBQzdELE9BQW1CLEVBQ2YsRUFBRSxHQUFFLENBQUMsQ0FBQTtJQUViLFlBQVksVUFBcUMsRUFBRTtRQUMvQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsR0FDL0QsT0FBTyxDQUFBO1FBQ1gsSUFBSSxRQUFRO1lBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDdEMsSUFBSSxrQkFBa0I7WUFBRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUE7UUFDcEUsSUFBSSxjQUFjO1lBQUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUE7UUFDeEQsSUFBSSxXQUFXO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7SUFDbkQsQ0FBQztDQUNKIn0=
@@ -2,4 +2,5 @@ export * from "./blur";
2
2
  export * from "./chromatic-aberration";
3
3
  export * from "./filter";
4
4
  export * from "./hue-rotation";
5
+ export * from "./zoom";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filter/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,wBAAwB,CAAA;AACtC,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filter/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,wBAAwB,CAAA;AACtC,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA"}
@@ -2,4 +2,5 @@ export * from "./blur.js";
2
2
  export * from "./chromatic-aberration.js";
3
3
  export * from "./filter.js";
4
4
  export * from "./hue-rotation.js";
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmlsdGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxnQkFBZ0IsQ0FBQSJ9
5
+ export * from "./zoom.js";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmlsdGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLFFBQVEsQ0FBQSJ9
@@ -0,0 +1,10 @@
1
+ import { TgdProgram } from "..";
2
+ import { TgdFilter } from "./filter";
3
+ export declare class TgdFilterZoom extends TgdFilter {
4
+ zoom: number;
5
+ constructor({ zoom }?: Partial<{
6
+ zoom: number;
7
+ }>);
8
+ readonly setUniforms: (program: TgdProgram, _time: number) => void;
9
+ }
10
+ //# sourceMappingURL=zoom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zoom.d.ts","sourceRoot":"","sources":["../../src/filter/zoom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,qBAAa,aAAc,SAAQ,SAAS;IACjC,IAAI,SAAI;gBAEH,EAAE,IAAQ,EAAE,GAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAM;IAcxD,SAAgB,WAAW,YACd,UAAU,SACZ,MAAM,KACd,IAAI,CAEN;CACJ"}
@@ -0,0 +1,21 @@
1
+ import { TgdFilter } from "./filter.js";
2
+ export class TgdFilterZoom extends TgdFilter {
3
+ zoom = 1;
4
+ constructor({ zoom = 1 } = {}) {
5
+ super({
6
+ fragmentShaderCode: [
7
+ "vec2 uv = (varUV - vec2(0.5)) * uniZoom + vec2(0.5);",
8
+ "vec4 color = texture(uniTexture, uv);",
9
+ "FragColor = color;",
10
+ ],
11
+ uniforms: {
12
+ uniZoom: "float",
13
+ },
14
+ });
15
+ this.zoom = zoom;
16
+ }
17
+ setUniforms = (program, _time) => {
18
+ program.uniform1f("uniZoom", 1 / this.zoom);
19
+ };
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWx0ZXIvem9vbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXBDLE1BQU0sT0FBTyxhQUFjLFNBQVEsU0FBUztJQUNqQyxJQUFJLEdBQUcsQ0FBQyxDQUFBO0lBRWYsWUFBWSxFQUFFLElBQUksR0FBRyxDQUFDLEtBQWdDLEVBQUU7UUFDcEQsS0FBSyxDQUFDO1lBQ0Ysa0JBQWtCLEVBQUU7Z0JBQ2hCLHNEQUFzRDtnQkFDdEQsdUNBQXVDO2dCQUN2QyxvQkFBb0I7YUFDdkI7WUFDRCxRQUFRLEVBQUU7Z0JBQ04sT0FBTyxFQUFFLE9BQU87YUFDbkI7U0FDSixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNwQixDQUFDO0lBRWUsV0FBVyxHQUFHLENBQzFCLE9BQW1CLEVBQ25CLEtBQWEsRUFDVCxFQUFFO1FBQ04sT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQyxDQUFDLENBQUE7Q0FDSiJ9
@@ -1,7 +1,9 @@
1
1
  import { TgdParserGLTransfertFormatBinary } from "../parser";
2
- export declare function tgdLoadAssets<GLB extends string>(urls: {
3
- glb?: Record<GLB, string>;
4
- }): Promise<{
2
+ export declare function tgdLoadAssets<GLB extends string, IMG extends string>(urls: Partial<{
3
+ glb: Record<GLB, string>;
4
+ img: Record<IMG, string>;
5
+ }>): Promise<{
5
6
  glb: Record<GLB, TgdParserGLTransfertFormatBinary>;
7
+ img: Record<IMG, HTMLImageElement>;
6
8
  }>;
7
9
  //# sourceMappingURL=asset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../src/loader/asset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAA;AAG9D,wBAAsB,aAAa,CAAC,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;CAC5B,GAAG,OAAO,CAAC;IACR,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAA;CACrD,CAAC,CA4BD"}
1
+ {"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../src/loader/asset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAA;AAI9D,wBAAsB,aAAa,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EACtE,IAAI,EAAE,OAAO,CAAC;IACV,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACxB,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;CAC3B,CAAC,GACH,OAAO,CAAC;IACP,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAA;IAClD,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;CACrC,CAAC,CASD"}
@@ -1,26 +1,36 @@
1
1
  import { tgdLoadGlb } from "./binary.js";
2
+ import { tgdLoadImage } from "./image.js";
2
3
  export async function tgdLoadAssets(urls) {
3
- const result = {
4
- glb: {},
5
- };
6
- const glbNames = (urls.glb ? Object.keys(urls.glb) : []);
4
+ const glb = {};
5
+ const img = {};
7
6
  const tasks = [
8
- ...glbNames.map(name => new Promise(resolve => {
9
- const url = urls.glb?.[name];
10
- if (!url) {
11
- resolve();
12
- return;
13
- }
14
- tgdLoadGlb(url)
15
- .then(glb => {
16
- if (glb)
17
- result.glb[name] = glb;
18
- resolve();
19
- })
20
- .catch(resolve);
21
- })),
7
+ ...getPromisedLoaders(tgdLoadGlb, urls.glb, glb),
8
+ ...getPromisedLoaders(tgdLoadImage, urls.img, img),
22
9
  ];
23
10
  await Promise.all(tasks);
24
- return result;
11
+ return { glb, img };
25
12
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9hZGVyL2Fzc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFckMsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQXFCLElBRXZEO0lBR0csTUFBTSxNQUFNLEdBQUc7UUFDWCxHQUFHLEVBQUUsRUFBRTtLQUdWLENBQUE7SUFDRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQVUsQ0FBQTtJQUNqRSxNQUFNLEtBQUssR0FBb0I7UUFDM0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUNYLElBQUksQ0FBQyxFQUFFLENBQ0gsSUFBSSxPQUFPLENBQU8sT0FBTyxDQUFDLEVBQUU7WUFDeEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzVCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDUCxPQUFPLEVBQUUsQ0FBQTtnQkFDVCxPQUFNO1lBQ1YsQ0FBQztZQUVELFVBQVUsQ0FBQyxHQUFHLENBQUM7aUJBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNSLElBQUksR0FBRztvQkFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQTtnQkFDL0IsT0FBTyxFQUFFLENBQUE7WUFDYixDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZCLENBQUMsQ0FBQyxDQUNUO0tBQ0osQ0FBQTtJQUNELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN4QixPQUFPLE1BQU0sQ0FBQTtBQUNqQixDQUFDIn0=
13
+ function getPromisedLoaders(loader, urls, target) {
14
+ return Object.keys(urls ?? {}).map(name => new Promise(resolve => {
15
+ if (!urls) {
16
+ resolve();
17
+ return;
18
+ }
19
+ const url = urls[name];
20
+ if (!url) {
21
+ resolve();
22
+ return;
23
+ }
24
+ loader(url)
25
+ .then(value => {
26
+ if (value)
27
+ target[name] = value;
28
+ resolve();
29
+ })
30
+ .catch(() => {
31
+ console.error("Unable to load URL ", url);
32
+ resolve();
33
+ });
34
+ }));
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG9hZGVyL2Fzc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUV0QyxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FDL0IsSUFHRTtJQUtGLE1BQU0sR0FBRyxHQUFHLEVBQW1ELENBQUE7SUFDL0QsTUFBTSxHQUFHLEdBQUcsRUFBbUMsQ0FBQTtJQUMvQyxNQUFNLEtBQUssR0FBb0I7UUFDM0IsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7UUFDaEQsR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7S0FDckQsQ0FBQTtJQUNELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN4QixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFBO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUN2QixNQUEwQyxFQUMxQyxJQUFtQyxFQUNuQyxNQUFvQjtJQUVwQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDOUIsSUFBSSxDQUFDLEVBQUUsQ0FDSCxJQUFJLE9BQU8sQ0FBTyxPQUFPLENBQUMsRUFBRTtRQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixPQUFPLEVBQUUsQ0FBQTtZQUNULE9BQU07UUFDVixDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQVMsQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLE9BQU8sRUFBRSxDQUFBO1lBQ1QsT0FBTTtRQUNWLENBQUM7UUFFRCxNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1YsSUFBSSxLQUFLO2dCQUFFLE1BQU0sQ0FBQyxJQUFTLENBQUMsR0FBRyxLQUFLLENBQUE7WUFDcEMsT0FBTyxFQUFFLENBQUE7UUFDYixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUN6QyxPQUFPLEVBQUUsQ0FBQTtRQUNiLENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQyxDQUFDLENBQ1QsQ0FBQTtBQUNMLENBQUMifQ==
@@ -1,24 +1,28 @@
1
1
  import { TgdProgram, TgdTexture2D, WebglAttributeType, WebglUniformType } from "../types";
2
2
  import { TgdVec4 } from "../math";
3
3
  import { TgdMaterial } from "./material";
4
- import { CodeBloc } from "../shader/code";
4
+ import { TgdCodeBloc } from "../shader/code";
5
5
  import { TgdLight } from "../light";
6
6
  export type TgdMaterialDiffuseOptions = Partial<{
7
7
  color: TgdVec4 | TgdTexture2D;
8
8
  light: TgdLight;
9
9
  ambient: TgdLight;
10
+ specularExponent: number;
11
+ specularIntensity: number;
10
12
  }>;
11
13
  export declare class TgdMaterialDiffuse extends TgdMaterial {
12
14
  light: TgdLight;
13
15
  ambient: TgdLight;
16
+ specularExponent: number;
17
+ specularIntensity: number;
14
18
  readonly varyings: {
15
19
  [name: string]: WebglAttributeType;
16
20
  };
17
21
  readonly uniforms: {
18
22
  [name: string]: WebglUniformType;
19
23
  };
20
- readonly fragmentShaderCode: CodeBloc;
21
- readonly vertexShaderCode: CodeBloc;
24
+ readonly fragmentShaderCode: TgdCodeBloc;
25
+ readonly vertexShaderCode: TgdCodeBloc;
22
26
  private readonly texture;
23
27
  private readonly lightColor;
24
28
  private readonly ambientColor;
@@ -1 +1 @@
1
- {"version":3,"file":"diffuse.d.ts","sourceRoot":"","sources":["../../src/material/diffuse.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAW,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC;IAC5C,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;IAC7B,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,QAAQ,CAAA;CACpB,CAAC,CAAA;AAIF,qBAAa,kBAAmB,SAAQ,WAAW;IACxC,KAAK,WAAiB;IACtB,OAAO,WAAyD;IAEvE,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,CAI7D;IACD,SAAgB,kBAAkB,EAAE,QAAQ,CAAA;IAC5C,SAAgB,gBAAgB,EAAE,QAAQ,CAAA;IAE1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;gBAEjC,OAAO,GAAE,yBAA8B;IAyCnD,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;CAUzC"}
1
+ {"version":3,"file":"diffuse.d.ts","sourceRoot":"","sources":["../../src/material/diffuse.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAW,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC;IAC5C,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;IAC7B,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,QAAQ,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;CAC5B,CAAC,CAAA;AAIF,qBAAa,kBAAmB,SAAQ,WAAW;IACxC,KAAK,WAAiB;IACtB,OAAO,WAAyD;IAChE,gBAAgB,SAAK;IACrB,iBAAiB,SAAI;IAE5B,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,CAM7D;IACD,SAAgB,kBAAkB,EAAE,WAAW,CAAA;IAC/C,SAAgB,gBAAgB,EAAE,WAAW,CAAA;IAE7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;gBAEjC,OAAO,GAAE,yBAA8B;IA8CnD,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;CAYzC"}
@@ -5,11 +5,15 @@ const DEFAULT_COLOR = new TgdVec4(0.8, 0.8, 0.8, 1);
5
5
  export class TgdMaterialDiffuse extends TgdMaterial {
6
6
  light = new TgdLight();
7
7
  ambient = new TgdLight({ color: new TgdVec4(0.8, 0.8, 0.8, 0) });
8
+ specularExponent = 20;
9
+ specularIntensity = 1;
8
10
  varyings;
9
11
  uniforms = {
10
12
  uniLight: "vec3",
11
13
  uniLightDir: "vec3",
12
14
  uniAmbient: "vec3",
15
+ uniSpecularExponent: "float",
16
+ uniSpecularIntensity: "float",
13
17
  };
14
18
  fragmentShaderCode;
15
19
  vertexShaderCode;
@@ -25,6 +29,12 @@ export class TgdMaterialDiffuse extends TgdMaterial {
25
29
  if (options.ambient) {
26
30
  this.ambient = options.ambient;
27
31
  }
32
+ if (typeof options.specularExponent === "number") {
33
+ this.specularExponent = options.specularExponent;
34
+ }
35
+ if (typeof options.specularIntensity === "number") {
36
+ this.specularIntensity = options.specularIntensity;
37
+ }
28
38
  const hasTexture = !(color instanceof TgdVec4);
29
39
  this.texture = hasTexture ? color : null;
30
40
  this.fragmentShaderCode = [
@@ -34,10 +44,9 @@ export class TgdMaterialDiffuse extends TgdMaterial {
34
44
  ? `vec4 color = texture(texDiffuse, varUV);`
35
45
  : `vec4 color = vec4(${color.join(", ")});`,
36
46
  `float spec = max(0.0, reflect(uniLightDir, normal).z);`,
37
- `spec = pow(spec, 20.0);`,
47
+ `spec = pow(spec, uniSpecularExponent) * uniSpecularIntensity;`,
38
48
  `color = vec4(`,
39
49
  ` color.rgb * (`,
40
- // ` mix(uniAmbient, uniLight, light)`,
41
50
  ` uniAmbient + uniLight * light`,
42
51
  ` ) + vec3(spec),`,
43
52
  ` 1.0`,
@@ -62,9 +71,11 @@ export class TgdMaterialDiffuse extends TgdMaterial {
62
71
  program.uniform3fv("uniLight", this.lightColor);
63
72
  this.ambientColor.from(this.ambient.color).scale(this.ambient.color.w);
64
73
  program.uniform3fv("uniAmbient", this.ambientColor);
74
+ program.uniform1f("uniSpecularExponent", this.specularExponent);
75
+ program.uniform1f("uniSpecularIntensity", this.specularIntensity);
65
76
  const { texture } = this;
66
77
  if (texture)
67
78
  texture.activate(program, "texDiffuse");
68
79
  }
69
80
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZnVzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9kaWZmdXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQVFyQyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUVuRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsV0FBVztJQUN4QyxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQTtJQUN0QixPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRXZELFFBQVEsQ0FBd0M7SUFDaEQsUUFBUSxHQUF5QztRQUM3RCxRQUFRLEVBQUUsTUFBTTtRQUNoQixXQUFXLEVBQUUsTUFBTTtRQUNuQixVQUFVLEVBQUUsTUFBTTtLQUNyQixDQUFBO0lBQ2Usa0JBQWtCLENBQVU7SUFDNUIsZ0JBQWdCLENBQVU7SUFFekIsT0FBTyxDQUFxQjtJQUM1QixVQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtJQUMxQixZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtJQUU3QyxZQUFZLFVBQXFDLEVBQUU7UUFDL0MsS0FBSyxFQUFFLENBQUE7UUFDUCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQTtRQUM1QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUE7UUFDOUIsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUNsQyxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEtBQUssWUFBWSxPQUFPLENBQUMsQ0FBQTtRQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDeEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHO1lBQ3RCLHFDQUFxQztZQUNyQywwQ0FBMEM7WUFDMUMsVUFBVTtnQkFDTixDQUFDLENBQUMsMENBQTBDO2dCQUM1QyxDQUFDLENBQUMscUJBQXFCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDL0Msd0RBQXdEO1lBQ3hELHlCQUF5QjtZQUN6QixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLDBDQUEwQztZQUMxQyxtQ0FBbUM7WUFDbkMsbUJBQW1CO1lBQ25CLE9BQU87WUFDUCxJQUFJO1lBQ0osZUFBZTtTQUNsQixDQUFBO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3BCLGdEQUFnRDtTQUNuRCxDQUFBO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNaLFNBQVMsRUFBRSxNQUFNO1NBQ3BCLENBQUE7UUFDRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQTtZQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUE7UUFDMUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBbUI7UUFDM0IsT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUN2RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNoRSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdEUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBRW5ELE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDeEIsSUFBSSxPQUFPO1lBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDeEQsQ0FBQztDQUNKIn0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZnVzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9kaWZmdXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQVVyQyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUVuRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsV0FBVztJQUN4QyxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQTtJQUN0QixPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2hFLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtJQUNyQixpQkFBaUIsR0FBRyxDQUFDLENBQUE7SUFFWixRQUFRLENBQXdDO0lBQ2hELFFBQVEsR0FBeUM7UUFDN0QsUUFBUSxFQUFFLE1BQU07UUFDaEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsVUFBVSxFQUFFLE1BQU07UUFDbEIsbUJBQW1CLEVBQUUsT0FBTztRQUM1QixvQkFBb0IsRUFBRSxPQUFPO0tBQ2hDLENBQUE7SUFDZSxrQkFBa0IsQ0FBYTtJQUMvQixnQkFBZ0IsQ0FBYTtJQUU1QixPQUFPLENBQXFCO0lBQzVCLFVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO0lBQzFCLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO0lBRTdDLFlBQVksVUFBcUMsRUFBRTtRQUMvQyxLQUFLLEVBQUUsQ0FBQTtRQUNQLE1BQU0s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
@@ -1,7 +1,7 @@
1
1
  import { TgdProgram, WebglAttributeType } from "../types";
2
2
  import { TgdVec4 } from "../math";
3
3
  import { TgdMaterial } from "./material";
4
- import { CodeBloc } from "../shader/code";
4
+ import { TgdCodeBloc } from "../shader/code";
5
5
  export type TgdMaterialGhostOptions = Partial<{
6
6
  color: TgdVec4;
7
7
  exponent: number;
@@ -11,8 +11,8 @@ export declare class TgdMaterialGhost extends TgdMaterial {
11
11
  readonly varyings: {
12
12
  [name: string]: WebglAttributeType;
13
13
  };
14
- readonly fragmentShaderCode: CodeBloc;
15
- readonly vertexShaderCode: CodeBloc;
14
+ readonly fragmentShaderCode: TgdCodeBloc;
15
+ readonly vertexShaderCode: TgdCodeBloc;
16
16
  constructor({ color, exponent, intensity, }?: TgdMaterialGhostOptions);
17
17
  setUniforms(_program: TgdProgram): void;
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ghost.d.ts","sourceRoot":"","sources":["../../src/material/ghost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC;IAC1C,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAC,CAAA;AAIF,qBAAa,gBAAiB,SAAQ,WAAW;IAC7C,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChE,SAAgB,kBAAkB,EAAE,QAAQ,CAAA;IAC5C,SAAgB,gBAAgB,EAAE,QAAQ,CAAA;gBAE9B,EACR,KAAqB,EACrB,QAAY,EACZ,SAAa,GAChB,GAAE,uBAA4B;IAkB/B,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;CAC1C"}
1
+ {"version":3,"file":"ghost.d.ts","sourceRoot":"","sources":["../../src/material/ghost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC;IAC1C,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAC,CAAA;AAIF,qBAAa,gBAAiB,SAAQ,WAAW;IAC7C,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChE,SAAgB,kBAAkB,EAAE,WAAW,CAAA;IAC/C,SAAgB,gBAAgB,EAAE,WAAW,CAAA;gBAEjC,EACR,KAAqB,EACrB,QAAY,EACZ,SAAa,GAChB,GAAE,uBAA4B;IAkB/B,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;CAC1C"}
@@ -22,4 +22,4 @@ export class TgdMaterialGhost extends TgdMaterial {
22
22
  }
23
23
  setUniforms(_program) { }
24
24
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2hvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvZ2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBU3hDLE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRWpELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUFXO0lBQzdCLFFBQVEsQ0FBd0M7SUFDaEQsa0JBQWtCLENBQVU7SUFDNUIsZ0JBQWdCLENBQVU7SUFFMUMsWUFBWSxFQUNSLEtBQUssR0FBRyxhQUFhLEVBQ3JCLFFBQVEsR0FBRyxDQUFDLEVBQ1osU0FBUyxHQUFHLENBQUMsTUFDWSxFQUFFO1FBQzNCLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLGtCQUFrQixHQUFHO1lBQ3RCLGtDQUFrQztZQUNsQyxzQkFBc0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUM3QyxxQkFBcUIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUN6QywyQkFBMkIsU0FBUyxDQUFDLE9BQU8sQ0FDeEMsQ0FBQyxDQUNKLHFCQUFxQjtTQUN6QixDQUFBO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3BCLGdEQUFnRDtTQUNuRCxDQUFBO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNaLFNBQVMsRUFBRSxNQUFNO1NBQ3BCLENBQUE7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQW9CLElBQVMsQ0FBQztDQUM3QyJ9
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2hvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvZ2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBU3hDLE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRWpELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUFXO0lBQzdCLFFBQVEsQ0FBd0M7SUFDaEQsa0JBQWtCLENBQWE7SUFDL0IsZ0JBQWdCLENBQWE7SUFFN0MsWUFBWSxFQUNSLEtBQUssR0FBRyxhQUFhLEVBQ3JCLFFBQVEsR0FBRyxDQUFDLEVBQ1osU0FBUyxHQUFHLENBQUMsTUFDWSxFQUFFO1FBQzNCLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLGtCQUFrQixHQUFHO1lBQ3RCLGtDQUFrQztZQUNsQyxzQkFBc0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUM3QyxxQkFBcUIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUN6QywyQkFBMkIsU0FBUyxDQUFDLE9BQU8sQ0FDeEMsQ0FBQyxDQUNKLHFCQUFxQjtTQUN6QixDQUFBO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3BCLGdEQUFnRDtTQUNuRCxDQUFBO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNaLFNBQVMsRUFBRSxNQUFNO1NBQ3BCLENBQUE7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQW9CLElBQVMsQ0FBQztDQUM3QyJ9
@@ -0,0 +1,24 @@
1
+ import { ArrayNumber4, TgdProgram, WebglAttributeType, WebglUniformType } from "../types";
2
+ import { TgdVec4 } from "../math";
3
+ import { TgdMaterial } from "./material";
4
+ import { TgdCodeBloc } from "../shader/code";
5
+ export type TgdMaterialHullOptions = Partial<{
6
+ color: ArrayNumber4 | TgdVec4;
7
+ expansion: number;
8
+ attNormal: string;
9
+ }>;
10
+ export declare class TgdMaterialHull extends TgdMaterial {
11
+ color: TgdVec4;
12
+ expansion: number;
13
+ readonly varyings: {
14
+ [name: string]: WebglAttributeType;
15
+ };
16
+ readonly uniforms: {
17
+ [name: string]: WebglUniformType;
18
+ };
19
+ readonly fragmentShaderCode: TgdCodeBloc;
20
+ readonly vertexShaderCode: TgdCodeBloc;
21
+ constructor(options?: TgdMaterialHullOptions);
22
+ setUniforms(program: TgdProgram): void;
23
+ }
24
+ //# sourceMappingURL=hull.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hull.d.ts","sourceRoot":"","sources":["../../src/material/hull.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAC,CAAA;AAIF,qBAAa,eAAgB,SAAQ,WAAW;IACrC,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,SAAO;IAEvB,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,CAG7D;IACD,SAAgB,kBAAkB,EAAE,WAAW,CAAA;IAC/C,SAAgB,gBAAgB,EAAE,WAAW,CAAA;gBAEjC,OAAO,GAAE,sBAA2B;IAchD,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;CAIzC"}
@@ -0,0 +1,30 @@
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 TgdMaterialHull extends TgdMaterial {
5
+ color;
6
+ expansion = 0.02;
7
+ varyings;
8
+ uniforms = {
9
+ uniColor: "vec4",
10
+ uniExpansion: "float",
11
+ };
12
+ fragmentShaderCode;
13
+ vertexShaderCode;
14
+ constructor(options = {}) {
15
+ super();
16
+ this.color = new TgdVec4(options.color ?? DEFAULT_COLOR);
17
+ this.expansion = options.expansion ?? 0.02;
18
+ this.fragmentShaderCode = [`return uniColor;`];
19
+ this.vertexShaderCode = [];
20
+ this.varyings = {};
21
+ this.vertexShaderCodeForGetPosition = [
22
+ `return pos + uniExpansion * vec4(${options.attNormal ?? "NORMAL"}, 0.0);`,
23
+ ];
24
+ }
25
+ setUniforms(program) {
26
+ program.uniform4fv("uniColor", this.color);
27
+ program.uniform1f("uniExpansion", this.expansion);
28
+ }
29
+ }
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9odWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQVN4QyxNQUFNLGFBQWEsR0FBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUU1RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBQ3JDLEtBQUssQ0FBUztJQUNkLFNBQVMsR0FBRyxJQUFJLENBQUE7SUFFUCxRQUFRLENBQXdDO0lBQ2hELFFBQVEsR0FBeUM7UUFDN0QsUUFBUSxFQUFFLE1BQU07UUFDaEIsWUFBWSxFQUFFLE9BQU87S0FDeEIsQ0FBQTtJQUNlLGtCQUFrQixDQUFhO0lBQy9CLGdCQUFnQixDQUFhO0lBRTdDLFlBQVksVUFBa0MsRUFBRTtRQUM1QyxLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxhQUFhLENBQUMsQ0FBQTtRQUN4RCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFBO1FBQzFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsOEJBQThCLEdBQUc7WUFDbEMsb0NBQ0ksT0FBTyxDQUFDLFNBQVMsSUFBSSxRQUN6QixTQUFTO1NBQ1osQ0FBQTtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBbUI7UUFDM0IsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0NBQ0oifQ==
@@ -1,5 +1,6 @@
1
1
  export * from "./diffuse";
2
2
  export * from "./ghost";
3
+ export * from "./hull";
3
4
  export * from "./material";
4
5
  export * from "./normals";
5
6
  export * from "./solid";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/material/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/material/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export * from "./diffuse.js";
2
2
  export * from "./ghost.js";
3
+ export * from "./hull.js";
3
4
  export * from "./material.js";
4
5
  export * from "./normals.js";
5
6
  export * from "./solid.js";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxTQUFTLENBQUEifQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxRQUFRLENBQUE7QUFDdEIsY0FBYyxZQUFZLENBQUE7QUFDMUIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxTQUFTLENBQUEifQ==
@@ -1,4 +1,4 @@
1
- import { CodeBloc } from "../shader/code";
1
+ import { TgdCodeBloc } from "../shader/code";
2
2
  import { TgdProgram, WebglAttributeType, WebglUniformType } from "..";
3
3
  export declare abstract class TgdMaterial {
4
4
  /**
@@ -19,11 +19,19 @@ export declare abstract class TgdMaterial {
19
19
  /**
20
20
  * The code of a `vec4 applyMaterial()` function.
21
21
  */
22
- abstract readonly fragmentShaderCode: CodeBloc;
22
+ abstract readonly fragmentShaderCode: TgdCodeBloc;
23
23
  /**
24
24
  * The code of a `void applyMaterial()` function.
25
25
  */
26
- abstract readonly vertexShaderCode: CodeBloc;
27
- abstract setUniforms(program: TgdProgram): void;
26
+ abstract readonly vertexShaderCode: TgdCodeBloc;
27
+ /**
28
+ * Body of the function `vec4 getPosition(vec4 pos)` of the vertex shader.
29
+ *
30
+ * By default, this body is `return pos;`.
31
+ * Yo can use this code to apply any transformation on the vertex position
32
+ * before convertion to screen space.
33
+ */
34
+ vertexShaderCodeForGetPosition?: TgdCodeBloc;
35
+ abstract setUniforms(program: TgdProgram, time: number, delay: number): void;
28
36
  }
29
37
  //# sourceMappingURL=material.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../../src/material/material.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAA;AAErE,8BAAsB,WAAW;IAC7B;;;;;;;;OAQG;IACH,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAK;IAErE,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAK;IAEnE;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,CAAA;IAE9C;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAA;IAE5C,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;CAClD"}
1
+ {"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../../src/material/material.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAA;AAErE,8BAAsB,WAAW;IAC7B;;;;;;;;OAQG;IACH,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAK;IAErE,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAK;IAEnE;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAA;IAEjD;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAA;IAE/C;;;;;;OAMG;IACH,8BAA8B,CAAC,EAAE,WAAW,CAAA;IAE5C,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAC/E"}
@@ -10,5 +10,13 @@ export class TgdMaterial {
10
10
  */
11
11
  varyings = {};
12
12
  uniforms = {};
13
+ /**
14
+ * Body of the function `vec4 getPosition(vec4 pos)` of the vertex shader.
15
+ *
16
+ * By default, this body is `return pos;`.
17
+ * Yo can use this code to apply any transformation on the vertex position
18
+ * before convertion to screen space.
19
+ */
20
+ vertexShaderCodeForGetPosition;
13
21
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFnQixXQUFXO0lBQzdCOzs7Ozs7OztPQVFHO0lBQ2EsUUFBUSxHQUEyQyxFQUFFLENBQUE7SUFFckQsUUFBUSxHQUF5QyxFQUFFLENBQUE7Q0FhdEUifQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFnQixXQUFXO0lBQzdCOzs7Ozs7OztPQVFHO0lBQ2EsUUFBUSxHQUEyQyxFQUFFLENBQUE7SUFFckQsUUFBUSxHQUF5QyxFQUFFLENBQUE7SUFZbkU7Ozs7OztPQU1HO0lBQ0gsOEJBQThCLENBQWM7Q0FHL0MifQ==
@@ -1,12 +1,12 @@
1
1
  import { TgdProgram, WebglAttributeType } from "../types";
2
2
  import { TgdMaterial } from "./material";
3
- import { CodeBloc } from "../shader/code";
3
+ import { TgdCodeBloc } from "../shader/code";
4
4
  export declare class TgdMaterialNormals extends TgdMaterial {
5
5
  readonly varyings: {
6
6
  [name: string]: WebglAttributeType;
7
7
  };
8
- readonly fragmentShaderCode: CodeBloc;
9
- readonly vertexShaderCode: CodeBloc;
8
+ readonly fragmentShaderCode: TgdCodeBloc;
9
+ readonly vertexShaderCode: TgdCodeBloc;
10
10
  constructor();
11
11
  setUniforms(_program: TgdProgram): void;
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"normals.d.ts","sourceRoot":"","sources":["../../src/material/normals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,qBAAa,kBAAmB,SAAQ,WAAW;IAC/C,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChE,SAAgB,kBAAkB,EAAE,QAAQ,CAAA;IAC5C,SAAgB,gBAAgB,EAAE,QAAQ,CAAA;;IAe1C,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;CAC1C"}
1
+ {"version":3,"file":"normals.d.ts","sourceRoot":"","sources":["../../src/material/normals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,qBAAa,kBAAmB,SAAQ,WAAW;IAC/C,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChE,SAAgB,kBAAkB,EAAE,WAAW,CAAA;IAC/C,SAAgB,gBAAgB,EAAE,WAAW,CAAA;;IAe7C,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;CAC1C"}
@@ -17,4 +17,4 @@ export class TgdMaterialNormals extends TgdMaterial {
17
17
  }
18
18
  setUniforms(_program) { }
19
19
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9ub3JtYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFHeEMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQVc7SUFDL0IsUUFBUSxDQUF3QztJQUNoRCxrQkFBa0IsQ0FBVTtJQUM1QixnQkFBZ0IsQ0FBVTtJQUUxQztRQUNJLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLGtCQUFrQixHQUFHO1lBQ3RCLGdEQUFnRDtZQUNoRCxlQUFlO1lBQ2YsMEJBQTBCO1NBQzdCLENBQUE7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDWixTQUFTLEVBQUUsTUFBTTtTQUNwQixDQUFBO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFvQixJQUFTLENBQUM7Q0FDN0MifQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9ub3JtYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFHeEMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQVc7SUFDL0IsUUFBUSxDQUF3QztJQUNoRCxrQkFBa0IsQ0FBYTtJQUMvQixnQkFBZ0IsQ0FBYTtJQUU3QztRQUNJLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLGtCQUFrQixHQUFHO1lBQ3RCLGdEQUFnRDtZQUNoRCxlQUFlO1lBQ2YsMEJBQTBCO1NBQzdCLENBQUE7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDWixTQUFTLEVBQUUsTUFBTTtTQUNwQixDQUFBO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFvQixJQUFTLENBQUM7Q0FDN0MifQ==
@@ -1,9 +1,9 @@
1
- import { TgdProgram, WebglAttributeType, WebglUniformType } from "../types";
1
+ import { ArrayNumber4, TgdProgram, WebglAttributeType, WebglUniformType } from "../types";
2
2
  import { TgdVec4 } from "../math";
3
3
  import { TgdMaterial } from "./material";
4
- import { CodeBloc } from "../shader/code";
4
+ import { TgdCodeBloc } from "../shader/code";
5
5
  export type TgdMaterialSolidOptions = Partial<{
6
- color: TgdVec4;
6
+ color: ArrayNumber4 | TgdVec4;
7
7
  }>;
8
8
  export declare class TgdMaterialSolid extends TgdMaterial {
9
9
  color: TgdVec4;
@@ -13,8 +13,8 @@ export declare class TgdMaterialSolid extends TgdMaterial {
13
13
  readonly uniforms: {
14
14
  [name: string]: WebglUniformType;
15
15
  };
16
- readonly fragmentShaderCode: CodeBloc;
17
- readonly vertexShaderCode: CodeBloc;
16
+ readonly fragmentShaderCode: TgdCodeBloc;
17
+ readonly vertexShaderCode: TgdCodeBloc;
18
18
  constructor(options?: TgdMaterialSolidOptions);
19
19
  setUniforms(program: TgdProgram): void;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../../src/material/solid.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EAEV,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAW,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAG3C,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC;IAC1C,KAAK,EAAE,OAAO,CAAA;CACjB,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,QAAQ,CAAA;IAC5C,SAAgB,gBAAgB,EAAE,QAAQ,CAAA;gBAE9B,OAAO,GAAE,uBAA4B;IAQjD,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;CAGzC"}
1
+ {"version":3,"file":"solid.d.ts","sourceRoot":"","sources":["../../src/material/solid.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,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,6 +1,6 @@
1
1
  import { TgdVec4 } from "./../math/index.js";
2
2
  import { TgdMaterial } from "./material.js";
3
- const DEFAULT_COLOR = new TgdVec4(0.111, 0.333, 0.999, 1);
3
+ const DEFAULT_COLOR = [0.111, 0.333, 0.999, 1];
4
4
  export class TgdMaterialSolid extends TgdMaterial {
5
5
  color;
6
6
  varyings;
@@ -11,7 +11,7 @@ export class TgdMaterialSolid extends TgdMaterial {
11
11
  vertexShaderCode;
12
12
  constructor(options = {}) {
13
13
  super();
14
- this.color = options.color ?? DEFAULT_COLOR;
14
+ this.color = new TgdVec4(options.color ?? DEFAULT_COLOR);
15
15
  this.fragmentShaderCode = [`return uniColor;`];
16
16
  this.vertexShaderCode = [];
17
17
  this.varyings = {};
@@ -20,4 +20,4 @@ export class TgdMaterialSolid extends TgdMaterial {
20
20
  program.uniform4fv("uniColor", this.color);
21
21
  }
22
22
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29saWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvc29saWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFXLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBUXhDLE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRXpELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUFXO0lBQ3RDLEtBQUssQ0FBUztJQUVMLFFBQVEsQ0FBd0M7SUFDaEQsUUFBUSxHQUF5QztRQUM3RCxRQUFRLEVBQUUsTUFBTTtLQUNuQixDQUFBO0lBQ2Usa0JBQWtCLENBQVU7SUFDNUIsZ0JBQWdCLENBQVU7SUFFMUMsWUFBWSxVQUFtQyxFQUFFO1FBQzdDLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQTtRQUMzQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUE7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFtQjtRQUMzQixPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDOUMsQ0FBQztDQUNKIn0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29saWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvc29saWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBT3hDLE1BQU0sYUFBYSxHQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRTVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUFXO0lBQ3RDLEtBQUssQ0FBUztJQUVMLFFBQVEsQ0FBd0M7SUFDaEQsUUFBUSxHQUF5QztRQUM3RCxRQUFRLEVBQUUsTUFBTTtLQUNuQixDQUFBO0lBQ2Usa0JBQWtCLENBQWE7SUFDL0IsZ0JBQWdCLENBQWE7SUFFN0MsWUFBWSxVQUFtQyxFQUFFO1FBQzdDLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQyxDQUFBO1FBQ3hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQW1CO1FBQzNCLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0NBQ0oifQ==
@@ -1,10 +1,10 @@
1
- import { ArrayNumber4 } from "..";
1
+ import { ArrayNumber3, ArrayNumber4 } from "../types";
2
2
  import { TgdMat4 } from "./mat4";
3
3
  import { TgdVec3 } from "./vec3";
4
4
  export declare class TgdVec4 extends Float32Array {
5
5
  constructor();
6
- constructor(vec4: TgdVec4);
7
- constructor(vec3: TgdVec3, w: number);
6
+ constructor(vec4: TgdVec4 | ArrayNumber4);
7
+ constructor(vec3: TgdVec3 | ArrayNumber3, w: number);
8
8
  constructor(x: number);
9
9
  constructor(x: number, y: number);
10
10
  constructor(x: number, y: number, z: number);
@@ -1 +1 @@
1
- {"version":3,"file":"vec4.d.ts","sourceRoot":"","sources":["../../src/math/vec4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,qBAAa,OAAQ,SAAQ,YAAY;;gBAEzB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM;gBACxB,CAAC,EAAE,MAAM;gBACT,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;gBACpB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;gBAC/B,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IA4BtD,KAAK,CAAC,CAAC,SAAI,EAAE,CAAC,SAAI,EAAE,CAAC,SAAI,EAAE,CAAC,SAAI,GAAG,IAAI;IAQvC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,IAAI;IASjD,KAAK;IAIL,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,SAAM,GAAG,IAAI;IAQ9C,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC;IAS7C,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,SAAO;IAQ/C;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAS/B,IAAI,CAAC,IAGQ,MAAM,CADlB;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAED,IAAI,CAAC,IAGQ,MAAM,CADlB;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAED,IAAI,CAAC,IAGQ,MAAM,CADlB;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAED,IAAI,CAAC,IAGQ,MAAM,CADlB;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAED,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO;IAU/C,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO;IAQzC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ3B,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM;IASzB,IAAI,IAAI,WAOP;IAED,SAAS,IAAI,IAAI;IAWjB,KAAK,CAAC,OAAO,SAAS;CAKzB"}
1
+ {"version":3,"file":"vec4.d.ts","sourceRoot":"","sources":["../../src/math/vec4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,qBAAa,OAAQ,SAAQ,YAAY;;gBAEzB,IAAI,EAAE,OAAO,GAAG,YAAY;gBAC5B,IAAI,EAAE,OAAO,GAAG,YAAY,EAAE,CAAC,EAAE,MAAM;gBACvC,CAAC,EAAE,MAAM;gBACT,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;gBACpB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;gBAC/B,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IA8CtD,KAAK,CAAC,CAAC,SAAI,EAAE,CAAC,SAAI,EAAE,CAAC,SAAI,EAAE,CAAC,SAAI,GAAG,IAAI;IAQvC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,IAAI;IASjD,KAAK;IAIL,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,SAAM,GAAG,IAAI;IAQ9C,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC;IAS7C,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,SAAO;IAQ/C;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAS/B,IAAI,CAAC,IAGQ,MAAM,CADlB;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAED,IAAI,CAAC,IAGQ,MAAM,CADlB;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAED,IAAI,CAAC,IAGQ,MAAM,CADlB;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAED,IAAI,CAAC,IAGQ,MAAM,CADlB;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAElB;IAED,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO;IAU/C,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO;IAQzC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ3B,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM;IASzB,IAAI,IAAI,WAOP;IAED,SAAS,IAAI,IAAI;IAWjB,KAAK,CAAC,OAAO,SAAS;CAKzB"}