@tolokoban/tgd 2.0.82 → 2.0.86

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 (55) hide show
  1. package/lib/dist/bounding-box.d.ts +19 -0
  2. package/lib/dist/bounding-box.d.ts.map +1 -0
  3. package/lib/dist/bounding-box.js +59 -0
  4. package/lib/dist/filter/filter.d.ts +3 -2
  5. package/lib/dist/filter/filter.d.ts.map +1 -1
  6. package/lib/dist/filter/filter.js +1 -1
  7. package/lib/dist/geometry/geometry.d.ts +8 -1
  8. package/lib/dist/geometry/geometry.d.ts.map +1 -1
  9. package/lib/dist/geometry/geometry.js +23 -4
  10. package/lib/dist/geometry/plane.d.ts +4 -2
  11. package/lib/dist/geometry/plane.d.ts.map +1 -1
  12. package/lib/dist/geometry/plane.js +8 -6
  13. package/lib/dist/index.d.ts +1 -0
  14. package/lib/dist/index.d.ts.map +1 -1
  15. package/lib/dist/index.js +2 -1
  16. package/lib/dist/material/face-orientation.d.ts +1 -1
  17. package/lib/dist/material/face-orientation.d.ts.map +1 -1
  18. package/lib/dist/material/face-orientation.js +13 -13
  19. package/lib/dist/material/index.d.ts +2 -1
  20. package/lib/dist/material/index.d.ts.map +1 -1
  21. package/lib/dist/material/index.js +3 -2
  22. package/lib/dist/material/mask.d.ts +17 -0
  23. package/lib/dist/material/mask.d.ts.map +1 -0
  24. package/lib/dist/material/mask.js +31 -0
  25. package/lib/dist/material/material.d.ts +10 -4
  26. package/lib/dist/material/material.d.ts.map +1 -1
  27. package/lib/dist/material/material.js +8 -2
  28. package/lib/dist/material/normal-map.js +8 -8
  29. package/lib/dist/painter/filter/filter.d.ts +3 -2
  30. package/lib/dist/painter/filter/filter.d.ts.map +1 -1
  31. package/lib/dist/painter/filter/filter.js +3 -3
  32. package/lib/dist/painter/framebuffer-msaa.d.ts +5 -5
  33. package/lib/dist/painter/framebuffer-msaa.d.ts.map +1 -1
  34. package/lib/dist/painter/framebuffer-msaa.js +2 -2
  35. package/lib/dist/painter/framebuffer.d.ts +3 -2
  36. package/lib/dist/painter/framebuffer.d.ts.map +1 -1
  37. package/lib/dist/painter/framebuffer.js +4 -4
  38. package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
  39. package/lib/dist/painter/mesh/mesh/mesh.js +2 -1
  40. package/lib/dist/painter/points-cloud/index.d.ts +1 -0
  41. package/lib/dist/painter/points-cloud/index.d.ts.map +1 -1
  42. package/lib/dist/painter/points-cloud/index.js +2 -1
  43. package/lib/dist/painter/points-cloud/points-cloud-morphing.d.ts +121 -0
  44. package/lib/dist/painter/points-cloud/points-cloud-morphing.d.ts.map +1 -0
  45. package/lib/dist/painter/points-cloud/points-cloud-morphing.js +214 -0
  46. package/lib/dist/painter/points-cloud/points-cloud.d.ts +0 -1
  47. package/lib/dist/painter/points-cloud/points-cloud.d.ts.map +1 -1
  48. package/lib/dist/painter/points-cloud/points-cloud.js +3 -3
  49. package/lib/dist/shader/fragment.d.ts +9 -2
  50. package/lib/dist/shader/fragment.d.ts.map +1 -1
  51. package/lib/dist/shader/fragment.js +7 -5
  52. package/lib/dist/texture/texture2d.d.ts +10 -4
  53. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  54. package/lib/dist/texture/texture2d.js +46 -3
  55. package/package.json +1 -1
@@ -0,0 +1,19 @@
1
+ import { ArrayNumber3 } from "./types";
2
+ export declare class TgdBoundingBox {
3
+ private xMin;
4
+ private yMin;
5
+ private zMin;
6
+ private xMax;
7
+ private yMax;
8
+ private zMax;
9
+ constructor(...points: ArrayNumber3[]);
10
+ get min(): ArrayNumber3;
11
+ get max(): ArrayNumber3;
12
+ get center(): ArrayNumber3;
13
+ get size(): ArrayNumber3;
14
+ addPoint(x: number, y: number, z: number): this;
15
+ addSphere(x: number, y: number, z: number, r: number): this;
16
+ makeContainingCube(): TgdBoundingBox;
17
+ debug(caption?: string): void;
18
+ }
19
+ //# sourceMappingURL=bounding-box.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounding-box.d.ts","sourceRoot":"","sources":["../src/bounding-box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,qBAAa,cAAc;IACvB,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,IAAI,CAA2B;gBAE3B,GAAG,MAAM,EAAE,YAAY,EAAE;IAMrC,IAAI,GAAG,IAAI,YAAY,CAEtB;IAED,IAAI,GAAG,IAAI,YAAY,CAEtB;IAED,IAAI,MAAM,IAAI,YAAY,CAIzB;IAED,IAAI,IAAI,IAAI,YAAY,CAIvB;IAED,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAU/C,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAM3D,kBAAkB,IAAI,cAAc;IAQpC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM;CAQzB"}
@@ -0,0 +1,59 @@
1
+ export class TgdBoundingBox {
2
+ constructor(...points) {
3
+ this.xMin = Number.POSITIVE_INFINITY;
4
+ this.yMin = Number.POSITIVE_INFINITY;
5
+ this.zMin = Number.POSITIVE_INFINITY;
6
+ this.xMax = Number.NEGATIVE_INFINITY;
7
+ this.yMax = Number.NEGATIVE_INFINITY;
8
+ this.zMax = Number.NEGATIVE_INFINITY;
9
+ for (const point of points) {
10
+ this.addPoint(...point);
11
+ }
12
+ }
13
+ get min() {
14
+ return [this.xMin, this.yMin, this.zMin];
15
+ }
16
+ get max() {
17
+ return [this.xMax, this.yMax, this.zMax];
18
+ }
19
+ get center() {
20
+ const { xMin, yMin, zMin } = this;
21
+ const { xMax, yMax, zMax } = this;
22
+ return [(xMin + xMax) * 0.5, (yMin + yMax) * 0.5, (zMin + zMax) * 0.5];
23
+ }
24
+ get size() {
25
+ const { xMin, yMin, zMin } = this;
26
+ const { xMax, yMax, zMax } = this;
27
+ return [xMax - xMin, yMax - yMin, zMax - zMin];
28
+ }
29
+ addPoint(x, y, z) {
30
+ this.xMin = Math.min(this.xMin, x);
31
+ this.yMin = Math.min(this.yMin, y);
32
+ this.zMin = Math.min(this.zMin, z);
33
+ this.xMax = Math.max(this.xMax, x);
34
+ this.yMax = Math.max(this.yMax, y);
35
+ this.zMax = Math.max(this.zMax, z);
36
+ return this;
37
+ }
38
+ addSphere(x, y, z, r) {
39
+ this.addPoint(x + r, y + r, z + r);
40
+ this.addPoint(x - r, y - r, z - r);
41
+ return this;
42
+ }
43
+ makeContainingCube() {
44
+ const [sx, sy, sz] = this.size;
45
+ const radius = 0.5 * Math.max(sx, sy, sz);
46
+ const bbox = new TgdBoundingBox();
47
+ bbox.addSphere(...this.center, radius);
48
+ return bbox;
49
+ }
50
+ debug(caption) {
51
+ console.debug(caption !== null && caption !== void 0 ? caption : "TgdBoundingBox");
52
+ console.debug(`{
53
+ "min": ${JSON.stringify(this.min)},
54
+ "max": ${JSON.stringify(this.max)},
55
+ "center": ${JSON.stringify(this.center)}
56
+ }`);
57
+ }
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRpbmctYm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2JvdW5kaW5nLWJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sY0FBYztJQVF2QixZQUFZLEdBQUcsTUFBc0I7UUFQN0IsU0FBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQTtRQUMvQixTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFBO1FBQy9CLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUE7UUFDL0IsU0FBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQTtRQUMvQixTQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFBO1FBQy9CLFNBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUE7UUFHbkMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNqQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDakMsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUE7SUFDMUUsQ0FBQztJQUVELElBQUksSUFBSTtRQUNKLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNqQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDakMsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVM7UUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEMsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0lBRUQsU0FBUyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1FBQzlCLE1BQU0sTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDekMsTUFBTSxJQUFJLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQTtRQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN0QyxPQUFPLElBQUksQ0FBQTtJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZ0I7UUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxnQkFBZ0IsQ0FBQyxDQUFBO1FBQzFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7YUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7RUFDekMsQ0FBQyxDQUFBO0lBQ0MsQ0FBQztDQUNKIn0=
@@ -1,4 +1,3 @@
1
- import { TgdContext } from "../context";
2
1
  import { TgdProgram } from "../program";
3
2
  import { TgdCodeBloc, TgdCodeFunctions } from "../shader/code";
4
3
  import { WebglUniformType } from "../types";
@@ -43,7 +42,9 @@ export interface TgdFilterOptions {
43
42
  setUniforms(parameters: TgdFilterSerUniformsParameters): void;
44
43
  }
45
44
  export interface TgdFilterSerUniformsParameters {
46
- context: TgdContext;
45
+ context: {
46
+ gl: WebGL2RenderingContext;
47
+ };
47
48
  program: TgdProgram;
48
49
  time: number;
49
50
  delay: number;
@@ -1 +1 @@
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,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C;;;;;;;;;;;;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,GACvB,aAAa,8BAA8B,KAC5C,IAAI,CAAM;gBAED,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAM;IASnD,wBAAwB;IACxB,MAAM;CACT;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,UAAU,EAAE,8BAA8B,GAAG,IAAI,CAAA;CAChE;AAED,MAAM,WAAW,8BAA8B;IAC3C,OAAO,EAAE,UAAU,CAAA;IACnB,OAAO,EAAE,UAAU,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CAChB"}
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,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C;;;;;;;;;;;;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,GACvB,aAAa,8BAA8B,KAC5C,IAAI,CAAM;gBAED,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAM;IASnD,wBAAwB;IACxB,MAAM;CACT;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,UAAU,EAAE,8BAA8B,GAAG,IAAI,CAAA;CAChE;AAED,MAAM,WAAW,8BAA8B;IAC3C,OAAO,EAAE;QAAE,EAAE,EAAE,sBAAsB,CAAA;KAAE,CAAA;IACvC,OAAO,EAAE,UAAU,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CAChB"}
@@ -41,4 +41,4 @@ export class TgdFilter {
41
41
  /** Cleanup function. */
42
42
  delete() { }
43
43
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbHRlci9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFzQmxCLFlBQVksVUFBcUMsRUFBRTtRQXJCbkQ7OztXQUdHO1FBQ2EsYUFBUSxHQUF5QyxFQUFFLENBQUE7UUFFbkU7OztXQUdHO1FBQ2EsdUJBQWtCLEdBQWdCO1lBQzlDLDBDQUEwQztZQUMxQyxlQUFlO1NBQ2xCLENBQUE7UUFFZSxtQkFBYyxHQUFtQyxFQUFFLENBQUE7UUFFbkQsZ0JBQVcsR0FBRyxDQUMxQixXQUEyQyxFQUN2QyxFQUFFLEdBQUUsQ0FBQyxDQUFBO1FBR1QsTUFBTSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLEdBQy9ELE9BQU8sQ0FBQTtRQUNYLElBQUksUUFBUTtZQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3RDLElBQUksa0JBQWtCO1lBQUUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFBO1FBQ3BFLElBQUksY0FBYztZQUFFLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFBO1FBQ3hELElBQUksV0FBVztZQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO0lBQ25ELENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsTUFBTSxLQUFJLENBQUM7Q0FDZCJ9
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbHRlci9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFzQmxCLFlBQVksVUFBcUMsRUFBRTtRQXJCbkQ7OztXQUdHO1FBQ2EsYUFBUSxHQUF5QyxFQUFFLENBQUE7UUFFbkU7OztXQUdHO1FBQ2EsdUJBQWtCLEdBQWdCO1lBQzlDLDBDQUEwQztZQUMxQyxlQUFlO1NBQ2xCLENBQUE7UUFFZSxtQkFBYyxHQUFtQyxFQUFFLENBQUE7UUFFbkQsZ0JBQVcsR0FBRyxDQUMxQixXQUEyQyxFQUN2QyxFQUFFLEdBQUUsQ0FBQyxDQUFBO1FBR1QsTUFBTSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLEdBQy9ELE9BQU8sQ0FBQTtRQUNYLElBQUksUUFBUTtZQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3RDLElBQUksa0JBQWtCO1lBQUUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFBO1FBQ3BFLElBQUksY0FBYztZQUFFLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFBO1FBQ3hELElBQUksV0FBVztZQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO0lBQ25ELENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsTUFBTSxLQUFJLENBQUM7Q0FDZCJ9
@@ -1,5 +1,6 @@
1
1
  import { TgdDataset, TgdDatasetType } from "../dataset";
2
2
  import { TgdTypeArrayForElements, WebglDrawMode } from "../types";
3
+ import { TgdBoundingBox } from "..";
3
4
  interface TgdGeometryOptionsCommon {
4
5
  name?: string;
5
6
  /**
@@ -58,8 +59,14 @@ export declare class TgdGeometry {
58
59
  debug(caption?: string): void;
59
60
  get dataset(): Readonly<TgdDataset>;
60
61
  get elementsType(): number;
62
+ /**
63
+ * Return the index of a vertex.
64
+ * If no elements array has been defined, we return `index` verbatim.
65
+ * Otherwise, we use this elements array.
66
+ */
61
67
  getElement(index: number): number;
62
- computeNormals(): void;
68
+ computeNormals(): this;
69
+ computeBoundingBox(): TgdBoundingBox;
63
70
  private computeNormalsForTrianglesDrawMode;
64
71
  }
65
72
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/geometry/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAwB,MAAM,cAAc,CAAA;AAC/E,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAInE,UAAU,wBAAwB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,GAAG,MAAM,CAAA;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,uBAAuB,CAAA;IAClC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;CACpC;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACjE,OAAO,EAAE,UAAU,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACjE,WAAW,EAAE,gBAAgB,CAAA;IAC7B,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,KAAK,CAAC,EAAE,gBAAgB,CAAA;CAC3B;AAED,UAAU,gBAAgB;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,CAAC,EAAE,cAAc,CAAA;CACxB;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACpB,SAAgB,IAAI,EAAE,MAAM,CAAA;IAC5B,oDAAoD;IACpD,SAAgB,WAAW,EAAE,MAAM,CAAA;IACnC,kDAAkD;IAClD,SAAgB,SAAS,EAAE,MAAM,CAAA;IACjC,8CAA8C;IAC9C,SAAgB,KAAK,EAAE,MAAM,CAAA;IAC7B,SAAgB,KAAK,EAAE,MAAM,CAAA;IAC7B,SAAgB,QAAQ,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IAC5D,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAEhC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAA;IAC9B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAA;IAE/B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAI;WAEZ,IAAI,CAAC,OAAO,EAAE,mBAAmB;gBAmBnC,OAAO,EAAE,mBAAmB;IA2BxC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM;IAOtB,IAAI,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,CAElC;IAED,IAAI,YAAY,WAEf;IAEM,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIjC,cAAc;IAsBrB,OAAO,CAAC,kCAAkC;CAgE7C"}
1
+ {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/geometry/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAwB,MAAM,cAAc,CAAA;AAC/E,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,IAAI,CAAA;AAEnC,UAAU,wBAAwB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,GAAG,MAAM,CAAA;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,uBAAuB,CAAA;IAClC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;CACpC;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACjE,OAAO,EAAE,UAAU,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACjE,WAAW,EAAE,gBAAgB,CAAA;IAC7B,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,KAAK,CAAC,EAAE,gBAAgB,CAAA;CAC3B;AAED,UAAU,gBAAgB;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,CAAC,EAAE,cAAc,CAAA;CACxB;AAED;;;;GAIG;AACH,qBAAa,WAAW;IACpB,SAAgB,IAAI,EAAE,MAAM,CAAA;IAC5B,oDAAoD;IACpD,SAAgB,WAAW,EAAE,MAAM,CAAA;IACnC,kDAAkD;IAClD,SAAgB,SAAS,EAAE,MAAM,CAAA;IACjC,8CAA8C;IAC9C,SAAgB,KAAK,EAAE,MAAM,CAAA;IAC7B,SAAgB,KAAK,EAAE,MAAM,CAAA;IAC7B,SAAgB,QAAQ,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IAC5D,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAEhC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAA;IAC9B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAA;IAE/B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAI;WAEZ,IAAI,CAAC,OAAO,EAAE,mBAAmB;gBA2BnC,OAAO,EAAE,mBAAmB;IA2BxC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM;IAOtB,IAAI,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,CAElC;IAED,IAAI,YAAY,WAEf;IAED;;;;OAIG;IACI,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIjC,cAAc,IAAI,IAAI;IAuBtB,kBAAkB,IAAI,cAAc;IAY3C,OAAO,CAAC,kCAAkC;CAgE7C"}
@@ -1,6 +1,7 @@
1
1
  import { TgdDataset } from "./../dataset/index.js";
2
2
  import { TgdVec3 } from "./../math/index.js";
3
3
  import { webglElementTypeFromTypedArray, webglLookup } from "./../utils/index.js";
4
+ import { TgdBoundingBox } from "../index.js";
4
5
  /**
5
6
  * Geometry is used to define a mesh.
6
7
  * It must hold at least one vec3 attributes
@@ -10,7 +11,7 @@ export class TgdGeometry {
10
11
  static make(options) {
11
12
  var _a, _b, _c;
12
13
  const definition = {};
13
- const { count, drawMode, elements, attPosition, attNormal, attUV } = options;
14
+ const { count, drawMode, elements, attPosition, attNormal, attUV, computeNormalsIfMissing, } = options;
14
15
  definition[attPosition.name] = (_a = attPosition.type) !== null && _a !== void 0 ? _a : "vec3";
15
16
  if (attNormal)
16
17
  definition[attNormal.name] = (_b = attNormal.type) !== null && _b !== void 0 ? _b : "vec3";
@@ -27,6 +28,7 @@ export class TgdGeometry {
27
28
  count,
28
29
  drawMode,
29
30
  elements,
31
+ computeNormalsIfMissing,
30
32
  });
31
33
  }
32
34
  constructor(options) {
@@ -62,9 +64,14 @@ export class TgdGeometry {
62
64
  get elementsType() {
63
65
  return this._elementsType;
64
66
  }
67
+ /**
68
+ * Return the index of a vertex.
69
+ * If no elements array has been defined, we return `index` verbatim.
70
+ * Otherwise, we use this elements array.
71
+ */
65
72
  getElement(index) {
66
73
  var _a, _b;
67
- return (_b = (_a = this.elements) === null || _a === void 0 ? void 0 : _a[index]) !== null && _b !== void 0 ? _b : -1;
74
+ return (_b = (_a = this.elements) === null || _a === void 0 ? void 0 : _a[index]) !== null && _b !== void 0 ? _b : index;
68
75
  }
69
76
  computeNormals() {
70
77
  let normals = [];
@@ -73,7 +80,7 @@ export class TgdGeometry {
73
80
  }
74
81
  else {
75
82
  console.error("We don't know how to compute normals for this draw mode:", this.drawMode);
76
- return;
83
+ return this;
77
84
  }
78
85
  const attNormalName = this.attNormal;
79
86
  this.dataset.addAttributes({
@@ -84,6 +91,18 @@ export class TgdGeometry {
84
91
  values.push(nx, ny, nz);
85
92
  }
86
93
  this.dataset.set(attNormalName, new Float32Array(values));
94
+ return this;
95
+ }
96
+ computeBoundingBox() {
97
+ const bbox = new TgdBoundingBox();
98
+ const { get } = this.dataset.getAttribAccessor(this.attPosition);
99
+ for (let index = 0; index < this.count; index++) {
100
+ const x = get(index, 0);
101
+ const y = get(index, 1);
102
+ const z = get(index, 2);
103
+ bbox.addPoint(x, y, z);
104
+ }
105
+ return bbox;
87
106
  }
88
107
  computeNormalsForTrianglesDrawMode() {
89
108
  const ds = this.dataset;
@@ -138,4 +157,4 @@ function computeNormal(A, B, C) {
138
157
  const AC = new TgdVec3(C).subtract(A);
139
158
  return AB.cross(AC).normalize();
140
159
  }
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VvbWV0cnkvZ2VvbWV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBd0MsTUFBTSxjQUFjLENBQUE7QUFFL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBd0N4RTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFpQmIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUE0Qjs7UUFDM0MsTUFBTSxVQUFVLEdBQXlCLEVBQUUsQ0FBQTtRQUMzQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FDOUQsT0FBTyxDQUFBO1FBQ1gsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFBLFdBQVcsQ0FBQyxJQUFJLG1DQUFJLE1BQU0sQ0FBQTtRQUN6RCxJQUFJLFNBQVM7WUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQUEsU0FBUyxDQUFDLElBQUksbUNBQUksTUFBTSxDQUFBO1FBQ3BFLElBQUksS0FBSztZQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBQSxLQUFLLENBQUMsSUFBSSxtQ0FBSSxNQUFNLENBQUE7UUFDeEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvQyxJQUFJLFNBQVM7WUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElB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
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VvbWV0cnkvZ2VvbWV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBd0MsTUFBTSxjQUFjLENBQUE7QUFFL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxJQUFJLENBQUE7QUF3Q25DOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQWlCYixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQTRCOztRQUMzQyxNQUFNLFVBQVUsR0FBeUIsRUFBRSxDQUFBO1FBQzNDLE1BQU0sRUFDRixLQUFLLEVBQ0wsUUFBUSxFQUNSLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULEtBQUssRUFDTCx1QkFBdUIsR0FDMUIsR0FBRyxPQUFPLENBQUE7UUFDWCxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQUEsV0FBVyxDQUFDLElBQUksbUNBQUksTUFBTSxDQUFBO1FBQ3pELElBQUksU0FBUztZQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBQSxTQUFTLENBQUMsSUFBSSxtQ0FBSSxNQUFNLENBQUE7UUFDcEUsSUFBSSxLQUFLO1lBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFBLEtBQUssQ0FBQyxJQUFJLG1DQUFJLE1BQU0sQ0FBQTtRQUN4RCxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQy9DLElBQUksU0FBUztZQUFF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LEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNuQixRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNuQixRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNuQixRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDckMsTUFBTSxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQ2pCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQ2QsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFDZCxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUNqQixDQUFBO1lBQ0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQ2pCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQ2QsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFDZCxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUNqQixDQUFBO1lBQ0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQ2pCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQ2QsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFDZCxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUNqQixDQUFBO1lBQ0QsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQzFCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUMxQixTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDOUIsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFjLEVBQUUsQ0FBQTtRQUM3QixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDN0MsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO2dCQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3RCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQTtZQUMvQixDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFBO0lBQ2xCLENBQUM7O0FBbExjLG1CQUFPLEdBQUcsQ0FBQyxDQUFBO0FBcUw5QixTQUFTLGFBQWEsQ0FBQyxDQUFVLEVBQUUsQ0FBVSxFQUFFLENBQVU7SUFDckQsTUFBTSxFQUFFLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JDLE1BQU0sRUFBRSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUE7QUFDbkMsQ0FBQyJ9
@@ -1,12 +1,14 @@
1
1
  import { TgdGeometry } from "./geometry";
2
- import { ArrayNumber3 } from "../types";
2
+ import { ArrayNumber2, ArrayNumber3 } from "../types";
3
3
  export interface TgdGeometryPlaneOptions {
4
4
  sizeX?: number;
5
5
  sizeY?: number;
6
6
  vecX?: ArrayNumber3;
7
7
  vecY?: ArrayNumber3;
8
+ uv0?: ArrayNumber2;
9
+ uv1?: ArrayNumber2;
8
10
  }
9
11
  export declare class TgdGeometryPlane extends TgdGeometry {
10
- constructor({ sizeX, sizeY, vecX, vecY, }?: TgdGeometryPlaneOptions);
12
+ constructor({ sizeX, sizeY, vecX, vecY, uv0, uv1, }?: TgdGeometryPlaneOptions);
11
13
  }
12
14
  //# sourceMappingURL=plane.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plane.d.ts","sourceRoot":"","sources":["../../src/geometry/plane.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGzC,MAAM,WAAW,uBAAuB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,IAAI,CAAC,EAAE,YAAY,CAAA;CACtB;AAED,qBAAa,gBAAiB,SAAQ,WAAW;gBACjC,EACR,KAAS,EACT,KAAS,EACT,IAAgB,EAChB,IAAgB,GACnB,GAAE,uBAA4B;CA8ClC"}
1
+ {"version":3,"file":"plane.d.ts","sourceRoot":"","sources":["../../src/geometry/plane.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGvD,MAAM,WAAW,uBAAuB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,GAAG,CAAC,EAAE,YAAY,CAAA;IAClB,GAAG,CAAC,EAAE,YAAY,CAAA;CACrB;AAED,qBAAa,gBAAiB,SAAQ,WAAW;gBACjC,EACR,KAAS,EACT,KAAS,EACT,IAAgB,EAChB,IAAgB,EAChB,GAAY,EACZ,GAAY,GACf,GAAE,uBAA4B;CAgDlC"}
@@ -2,7 +2,7 @@ import { TgdDataset } from "./../dataset/index.js";
2
2
  import { TgdGeometry } from "./geometry.js";
3
3
  import { TgdVec3 } from "./../math/index.js";
4
4
  export class TgdGeometryPlane extends TgdGeometry {
5
- constructor({ sizeX = 1, sizeY = 1, vecX = [1, 0, 0], vecY = [0, 1, 0], } = {}) {
5
+ constructor({ sizeX = 1, sizeY = 1, vecX = [1, 0, 0], vecY = [0, 1, 0], uv0 = [0, 0], uv1 = [1, 1], } = {}) {
6
6
  const vec = (x, y) => {
7
7
  const sx = x * sizeX;
8
8
  const sy = y * sizeY;
@@ -25,12 +25,14 @@ export class TgdGeometryPlane extends TgdGeometry {
25
25
  ...vec(+H, +H),
26
26
  ...vec(-H, +H),
27
27
  ]));
28
+ const [u0, v0] = uv0;
29
+ const [u1, v1] = uv1;
28
30
  // prettier-ignore
29
31
  dataset.set("TEXCOORD_0", new Float32Array([
30
- 1, 1,
31
- 0, 1,
32
- 1, 0,
33
- 0, 0,
32
+ u1, v1,
33
+ u0, v1,
34
+ u1, v0,
35
+ u0, v0,
34
36
  ]));
35
37
  const [nx, ny, nz] = new TgdVec3(vecX)
36
38
  .normalize()
@@ -48,4 +50,4 @@ export class TgdGeometryPlane extends TgdGeometry {
48
50
  });
49
51
  }
50
52
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VvbWV0cnkvcGxhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXhDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFTbkMsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFdBQVc7SUFDN0MsWUFBWSxFQUNSLEtBQUssR0FBRyxDQUFDLEVBQ1QsS0FBSyxHQUFHLENBQUMsRUFDVCxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNoQixJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUNTLEVBQUU7UUFDM0IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFnQixFQUFFO1lBQy9DLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUE7WUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUNwQixPQUFPO2dCQUNILEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDOUIsQ0FBQTtRQUNMLENBQUMsQ0FBQTtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzNCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsVUFBVSxFQUFFLE1BQU07U0FDckIsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFBO1FBQ2Isa0JBQWtCO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksWUFBWSxDQUFDO1lBQ3JDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2QsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDZCxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNkLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pCLENBQUMsQ0FBQyxDQUFBO1FBQ0gsa0JBQWtCO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksWUFBWSxDQUFDO1lBQ3ZDLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDO1NBQ1AsQ0FBQyxDQUFDLENBQUE7UUFDSCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUM7YUFDakMsU0FBUyxFQUFFO2FBQ1gsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFFekMsa0JBQWtCO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksWUFBWSxDQUFDO1lBQ25DLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNiLENBQUMsQ0FBQyxDQUFBO1FBQ0gsS0FBSyxDQUFDO1lBQ0YsT0FBTztZQUNQLFFBQVEsRUFBRSxnQkFBZ0I7U0FDN0IsQ0FBQyxDQUFBO0lBQ04sQ0FBQztDQUNKIn0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VvbWV0cnkvcGxhbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXhDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFXbkMsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFdBQVc7SUFDN0MsWUFBWSxFQUNSLEtBQUssR0FBRyxDQUFDLEVBQ1QsS0FBSyxHQUFHLENBQUMsRUFDVCxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNoQixJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNoQixHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ1osR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUNhLEVBQUU7UUFDM0IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFnQixFQUFFO1lBQy9DLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUE7WUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUNwQixPQUFPO2dCQUNILEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDOUIsQ0FBQTtRQUNMLENBQUMsQ0FBQTtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzNCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsVUFBVSxFQUFFLE1BQU07U0FDckIsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFBO1FBQ2Isa0JBQWtCO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksWUFBWSxDQUFDO1lBQ3JDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2QsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDZCxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNkLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pCLENBQUMsQ0FBQyxDQUFBO1FBQ0gsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUE7UUFDcEIsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUE7UUFDcEIsa0JBQWtCO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksWUFBWSxDQUFDO1lBQ3ZDLEVBQUUsRUFBRSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRTtZQUNOLEVBQUUsRUFBRSxFQUFFO1NBQ1QsQ0FBQyxDQUFDLENBQUE7UUFDSCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUM7YUFDakMsU0FBUyxFQUFFO2FBQ1gsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFFekMsa0JBQWtCO1FBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksWUFBWSxDQUFDO1lBQ25DLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNiLENBQUMsQ0FBQyxDQUFBO1FBQ0gsS0FBSyxDQUFDO1lBQ0YsT0FBTztZQUNQLFFBQVEsRUFBRSxnQkFBZ0I7U0FDN0IsQ0FBQyxDQUFBO0lBQ04sQ0FBQztDQUNKIn0=
@@ -1,3 +1,4 @@
1
+ export * from "./bounding-box";
1
2
  export * from "./buffer";
2
3
  export * from "./camera";
3
4
  export * from "./canvas";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AAEvB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AAEvB,cAAc,SAAS,CAAA"}
package/lib/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export * from "./bounding-box.js";
1
2
  export * from "./buffer/index.js";
2
3
  export * from "./camera/index.js";
3
4
  export * from "./canvas/index.js";
@@ -32,4 +33,4 @@ export * from "./vao/index.js";
32
33
  export * from "./wasm/index.js";
33
34
  export * from "./webgl/index.js";
34
35
  export * from "./types/index.js";
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxRQUFRLENBQUE7QUFDdEIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLE9BQU8sQ0FBQTtBQUNyQixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsVUFBVSxDQUFBO0FBQ3hCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsT0FBTyxDQUFBO0FBQ3JCLGNBQWMsVUFBVSxDQUFBO0FBQ3hCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsT0FBTyxDQUFBO0FBQ3JCLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsU0FBUyxDQUFBO0FBRXZCLGNBQWMsU0FBUyxDQUFBIn0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsVUFBVSxDQUFBO0FBQ3hCLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsVUFBVSxDQUFBO0FBQ3hCLGNBQWMsT0FBTyxDQUFBO0FBQ3JCLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxPQUFPLENBQUE7QUFDckIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxRQUFRLENBQUE7QUFDdEIsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxPQUFPLENBQUE7QUFDckIsY0FBYyxRQUFRLENBQUE7QUFDdEIsY0FBYyxTQUFTLENBQUE7QUFFdkIsY0FBYyxTQUFTLENBQUEifQ==
@@ -1,5 +1,5 @@
1
- import { TgdMaterial, TgdMaterialOptions } from "./material";
2
1
  import { TgdLight } from "../light";
2
+ import { TgdMaterial, type TgdMaterialOptions } from "./material";
3
3
  export interface TgdMaterialFaceOrientationOptions extends Partial<TgdMaterialOptions> {
4
4
  light?: TgdLight;
5
5
  ambient?: TgdLight;
@@ -1 +1 @@
1
- {"version":3,"file":"face-orientation.d.ts","sourceRoot":"","sources":["../../src/material/face-orientation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,MAAM,WAAW,iCACb,SAAQ,OAAO,CAAC,kBAAkB,CAAC;IACnC,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,WAAW;IAChD,KAAK,WAEV;IACK,OAAO,WAAuD;IAC9D,gBAAgB,SAAK;IACrB,iBAAiB,SAAM;IAE9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;gBAEjC,OAAO,GAAE,iCAAsC;CA2D9D"}
1
+ {"version":3,"file":"face-orientation.d.ts","sourceRoot":"","sources":["../../src/material/face-orientation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEjE,MAAM,WAAW,iCACb,SAAQ,OAAO,CAAC,kBAAkB,CAAC;IACnC,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,WAAW;IAChD,KAAK,WAEV;IACK,OAAO,WAAuD;IAC9D,gBAAgB,SAAK;IACrB,iBAAiB,SAAM;IAE9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;gBAEjC,OAAO,GAAE,iCAAsC;CA2D9D"}
@@ -1,6 +1,6 @@
1
+ import { TgdLight } from "./../light/index.js";
1
2
  import { TgdVec3, TgdVec4 } from "./../math/index.js";
2
3
  import { TgdMaterial } from "./material.js";
3
- import { TgdLight } from "./../light/index.js";
4
4
  /**
5
5
  * This material is useful to debug meshes.
6
6
  * The outside faces are blue and the inside one are red.
@@ -21,17 +21,17 @@ export class TgdMaterialFaceOrientation extends TgdMaterial {
21
21
  },
22
22
  fragmentShaderCode: [
23
23
  "vec3 normal = mat3(uniModelViewMatrix) * normalize(varNormal);",
24
- `float light = 1.0 - dot(normal, uniLightDir);`,
25
- `vec4 color = vec4(0.8 * (gl_FrontFacing ? vec3(0, .5, 1) : vec3(1, 0, 0)), 1.0);`,
26
- `float spec = max(0.0, reflect(uniLightDir, normal).z);`,
27
- `spec = pow(spec, uniSpecularExponent) * uniSpecularIntensity;`,
28
- `color = vec4(`,
29
- ` color.rgb * (`,
30
- ` uniAmbient + uniLight * light`,
31
- ` ) + vec3(spec),`,
32
- ` 1.0`,
33
- `);`,
34
- `return color;`,
24
+ "float light = 1.0 - dot(normal, uniLightDir);",
25
+ "vec4 color = vec4(0.8 * (gl_FrontFacing ? vec3(0, .5, 1) : vec3(1, 0, 0)), 1.0);",
26
+ "float spec = max(0.0, reflect(uniLightDir, normal).z);",
27
+ "spec = pow(spec, uniSpecularExponent) * uniSpecularIntensity;",
28
+ "color = vec4(",
29
+ " color.rgb * (",
30
+ " uniAmbient + uniLight * light",
31
+ " ) + vec3(spec),",
32
+ " 1.0",
33
+ ");",
34
+ "return color;",
35
35
  ],
36
36
  vertexShaderCode: () => [
37
37
  `varNormal = mat3(uniTransfoMatrix) * ${this.attNormal};`,
@@ -70,4 +70,4 @@ export class TgdMaterialFaceOrientation extends TgdMaterial {
70
70
  }
71
71
  }
72
72
  }
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZS1vcmllbnRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9mYWNlLW9yaWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQXNCLE1BQU0sWUFBWSxDQUFBO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFXckM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDBCQUEyQixTQUFRLFdBQVc7SUFXdkQsWUFBWSxVQUE2QyxFQUFFO1FBQ3ZELEtBQUssQ0FBQztZQUNGLFFBQVEsRUFBRTtnQkFDTixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixtQkFBbUIsRUFBRSxPQUFPO2dCQUM1QixvQkFBb0IsRUFBRSxPQUFPO2dCQUM3QixrQkFBa0IsRUFBRSxNQUFNO2FBQzdCO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLFNBQVMsRUFBRSxNQUFNO2FBQ3BCO1lBQ0Qsa0JBQWtCLEVBQUU7Z0JBQ2hCLGdFQUFnRTtnQkFDaEUsK0NBQStDO2dCQUMvQyxrRkFBa0Y7Z0JBQ2xGLHdEQUF3RDtnQkFDeEQsK0RBQStEO2dCQUMvRCxlQUFlO2dCQUNmLGlCQUFpQjtnQkFDakIsbUNBQW1DO2dCQUNuQyxtQkFBbUI7Z0JBQ25CLE9BQU87Z0JBQ1AsSUFBSTtnQkFDSixlQUFlO2FBQ2xCO1lBQ0QsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLHdDQUF3QyxJQUFJLENBQUMsU0FBUyxHQUFHO2FBQzVEO1lBQ0QsV0FBVyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQTJCLEVBQVEsRUFBRTtnQkFDeEQsT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ2hFLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtnQkFDL0MsSUFBSSxDQUFDLFlBQVk7cUJBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO3FCQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ2hDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtnQkFDbkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtnQkFDL0QsT0FBTyxDQUFDLFNBQVMsQ0FDYixzQkFBc0IsRUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUN6QixDQUFBO1lBQ0wsQ0FBQztTQUNKLENBQUMsQ0FBQTtRQXREQyxVQUFLLEdBQUcsSUFBSSxRQUFRLENBQUM7WUFDeEIsU0FBUyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7U0FDbkQsQ0FBQyxDQUFBO1FBQ0ssWUFBTyxHQUFHLElBQUksUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM5RCxxQkFBZ0IsR0FBRyxFQUFFLENBQUE7UUFDckIsc0JBQWlCLEdBQUcsR0FBRyxDQUFBO1FBRWIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7UUFDMUIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBZ0R6QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUE7UUFDOUIsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUNsQyxDQUFDO1FBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFBO1FBQ3BELENBQUM7UUFDRCxJQUFJLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUE7UUFDdEQsQ0FBQztJQUNMLENBQUM7Q0FDSiJ9
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZS1vcmllbnRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9mYWNlLW9yaWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFNUMsT0FBTyxFQUFFLFdBQVcsRUFBMkIsTUFBTSxZQUFZLENBQUE7QUFVakU7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDBCQUEyQixTQUFRLFdBQVc7SUFXdkQsWUFBWSxVQUE2QyxFQUFFO1FBQ3ZELEtBQUssQ0FBQztZQUNGLFFBQVEsRUFBRTtnQkFDTixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixtQkFBbUIsRUFBRSxPQUFPO2dCQUM1QixvQkFBb0IsRUFBRSxPQUFPO2dCQUM3QixrQkFBa0IsRUFBRSxNQUFNO2FBQzdCO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLFNBQVMsRUFBRSxNQUFNO2FBQ3BCO1lBQ0Qsa0JBQWtCLEVBQUU7Z0JBQ2hCLGdFQUFnRTtnQkFDaEUsK0NBQStDO2dCQUMvQyxrRkFBa0Y7Z0JBQ2xGLHdEQUF3RDtnQkFDeEQsK0RBQStEO2dCQUMvRCxlQUFlO2dCQUNmLGlCQUFpQjtnQkFDakIsbUNBQW1DO2dCQUNuQyxtQkFBbUI7Z0JBQ25CLE9BQU87Z0JBQ1AsSUFBSTtnQkFDSixlQUFlO2FBQ2xCO1lBQ0QsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLHdDQUF3QyxJQUFJLENBQUMsU0FBUyxHQUFHO2FBQzVEO1lBQ0QsV0FBVyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQTJCLEVBQVEsRUFBRTtnQkFDeEQsT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ2hFLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtnQkFDL0MsSUFBSSxDQUFDLFlBQVk7cUJBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO3FCQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ2hDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtnQkFDbkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtnQkFDL0QsT0FBTyxDQUFDLFNBQVMsQ0FDYixzQkFBc0IsRUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUN6QixDQUFBO1lBQ0wsQ0FBQztTQUNKLENBQUMsQ0FBQTtRQXREQyxVQUFLLEdBQUcsSUFBSSxRQUFRLENBQUM7WUFDeEIsU0FBUyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7U0FDbkQsQ0FBQyxDQUFBO1FBQ0ssWUFBTyxHQUFHLElBQUksUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM5RCxxQkFBZ0IsR0FBRyxFQUFFLENBQUE7UUFDckIsc0JBQWlCLEdBQUcsR0FBRyxDQUFBO1FBRWIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7UUFDMUIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBZ0R6QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUE7UUFDOUIsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUNsQyxDQUFDO1FBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFBO1FBQ3BELENBQUM7UUFDRCxJQUFJLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUE7UUFDdEQsQ0FBQztJQUNMLENBQUM7Q0FDSiJ9
@@ -7,8 +7,9 @@ export * from "./ghost";
7
7
  export * from "./glass";
8
8
  export * from "./global";
9
9
  export * from "./hull";
10
+ export * from "./mask";
10
11
  export * from "./material";
11
- export * from "./normals";
12
12
  export * from "./normal-map";
13
+ export * from "./normals";
13
14
  export * from "./toon";
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -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,gBAAgB,CAAA;AAC9B,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"}
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,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA"}
@@ -7,8 +7,9 @@ export * from "./ghost.js";
7
7
  export * from "./glass.js";
8
8
  export * from "./global.js";
9
9
  export * from "./hull.js";
10
+ export * from "./mask.js";
10
11
  export * from "./material.js";
11
- export * from "./normals.js";
12
12
  export * from "./normal-map.js";
13
+ export * from "./normals.js";
13
14
  export * from "./toon.js";
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsVUFBVSxDQUFBO0FBQ3hCLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMsUUFBUSxDQUFBIn0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsVUFBVSxDQUFBO0FBQ3hCLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMsV0FBVyxDQUFBO0FBQ3pCLGNBQWMsUUFBUSxDQUFBIn0=
@@ -0,0 +1,17 @@
1
+ import type { TgdTexture2D } from "../texture";
2
+ import { TgdMaterial, type TgdMaterialOptions } from "./material";
3
+ export interface TgdMaterialMaskOptions extends Partial<TgdMaterialOptions> {
4
+ texture: TgdTexture2D;
5
+ flipY?: boolean;
6
+ }
7
+ /**
8
+ * Reveal a background texture.
9
+ *
10
+ * You can use it in a techbnique to smooth your shading.
11
+ * 1. Render your scene in a FBO with low resolution and the material you want.
12
+ * 2. Use this material with the FBO texture to smooth the previous material.
13
+ */
14
+ export declare class TgdMaterialMask extends TgdMaterial {
15
+ constructor(options: TgdMaterialMaskOptions);
16
+ }
17
+ //# sourceMappingURL=mask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mask.d.ts","sourceRoot":"","sources":["../../src/material/mask.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEjE,MAAM,WAAW,sBAAuB,SAAQ,OAAO,CAAC,kBAAkB,CAAC;IACvE,OAAO,EAAE,YAAY,CAAA;IACrB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,WAAW;gBAChC,OAAO,EAAE,sBAAsB;CAoB9C"}
@@ -0,0 +1,31 @@
1
+ import { TgdMaterial } from "./material.js";
2
+ /**
3
+ * Reveal a background texture.
4
+ *
5
+ * You can use it in a techbnique to smooth your shading.
6
+ * 1. Render your scene in a FBO with low resolution and the material you want.
7
+ * 2. Use this material with the FBO texture to smooth the previous material.
8
+ */
9
+ export class TgdMaterialMask extends TgdMaterial {
10
+ constructor(options) {
11
+ super({
12
+ uniforms: {
13
+ uniViewportInverse: "vec2",
14
+ uniTexture: "sampler2D",
15
+ },
16
+ fragmentShaderCode: [
17
+ "highp vec2 uv = gl_FragCoord.xy * uniViewportInverse;",
18
+ options.flipY
19
+ ? "return texture(uniTexture, vec2(uv.x, 1.0 - uv.y));"
20
+ : "return texture(uniTexture, uv);",
21
+ ],
22
+ setUniforms: ({ program }) => {
23
+ const invW = 1 / program.gl.drawingBufferWidth;
24
+ const invH = 1 / program.gl.drawingBufferHeight;
25
+ options.texture.activate(0, program, "uniTexture");
26
+ program.uniform2f("uniViewportInverse", invW, invH);
27
+ },
28
+ });
29
+ }
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9tYXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQTJCLE1BQU0sWUFBWSxDQUFBO0FBT2pFOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLFdBQVc7SUFDNUMsWUFBWSxPQUErQjtRQUN2QyxLQUFLLENBQUM7WUFDRixRQUFRLEVBQUU7Z0JBQ04sa0JBQWtCLEVBQUUsTUFBTTtnQkFDMUIsVUFBVSxFQUFFLFdBQVc7YUFDMUI7WUFDRCxrQkFBa0IsRUFBRTtnQkFDaEIsdURBQXVEO2dCQUN2RCxPQUFPLENBQUMsS0FBSztvQkFDVCxDQUFDLENBQUMscURBQXFEO29CQUN2RCxDQUFDLENBQUMsaUNBQWlDO2FBQzFDO1lBQ0QsV0FBVyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQTJCLEVBQVEsRUFBRTtnQkFDeEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUE7Z0JBQzlDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFBO2dCQUMvQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFBO2dCQUNsRCxPQUFPLENBQUMsU0FBUyxDQUFDLG9CQUFvQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUN2RCxDQUFDO1NBQ0osQ0FBQyxDQUFBO0lBQ04sQ0FBQztDQUNKIn0=
@@ -1,6 +1,6 @@
1
- import { TgdCodeBloc, TgdCodeFunctions } from "../shader/code";
2
- import { TgdCamera, TgdPainterStateOptions, WebglAttributeType, WebglUniformType } from "..";
3
- import { TgdProgram } from "../program";
1
+ import type { TgdProgram } from "../program";
2
+ import type { TgdCodeBloc, TgdCodeFunctions } from "../shader/code";
3
+ import { type TgdCamera, type TgdPainterStateOptions, type WebglAttributeType, type WebglUniformType } from "..";
4
4
  export interface TgdMaterialContext {
5
5
  camera: TgdCamera;
6
6
  program: TgdProgram;
@@ -33,6 +33,10 @@ export interface TgdMaterialOptions {
33
33
  uniforms: {
34
34
  [name: string]: WebglUniformType;
35
35
  };
36
+ /**
37
+ * Example: `layout(origin_upper_left) in vec4 gl_FragCoord;`
38
+ */
39
+ fragmentShaderHeader?: TgdCodeBloc | (() => TgdCodeBloc);
36
40
  /**
37
41
  * This is the body of the function `void applyMaterial()` and
38
42
  * it must return the color of the current fragment as a `vec4`.
@@ -90,10 +94,12 @@ export declare class TgdMaterial {
90
94
  [name: string]: WebglUniformType;
91
95
  };
92
96
  private readonly _fragmentShaderCode;
97
+ private readonly _fragmentShaderHeader;
93
98
  /**
94
99
  * The code of a `vec4 applyMaterial()` function.
95
100
  */
96
101
  get fragmentShaderCode(): TgdCodeBloc;
102
+ get fragmentShaderHeader(): TgdCodeBloc;
97
103
  private readonly _extraFragmentShaderFunctions;
98
104
  get extraFragmentShaderFunctions(): TgdCodeFunctions;
99
105
  private readonly _vertexShaderCode;
@@ -116,6 +122,6 @@ export declare class TgdMaterial {
116
122
  protected readonly state: Partial<TgdPainterStateOptions>;
117
123
  applyState(gl: WebGL2RenderingContext, action: () => void): void;
118
124
  readonly delete: () => void;
119
- constructor({ attPosition, attNormal, attTangent, attUV, varyings, uniforms, fragmentShaderCode, extraFragmentShaderFunctions, vertexShaderCode, extraVertexShaderFunctions, vertexShaderCodeForGetPosition, setUniforms, state, debug, delete: deleteFunction, }: Partial<TgdMaterialOptions>);
125
+ constructor({ attPosition, attNormal, attTangent, attUV, varyings, uniforms, fragmentShaderCode, fragmentShaderHeader, extraFragmentShaderFunctions, vertexShaderCode, extraVertexShaderFunctions, vertexShaderCodeForGetPosition, setUniforms, state, debug, delete: deleteFunction, }: Partial<TgdMaterialOptions>);
120
126
  }
121
127
  //# sourceMappingURL=material.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../../src/material/material.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../../src/material/material.ts"],"names":[],"mappings":"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"}