@tolokoban/tgd 2.0.16 → 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 (116) hide show
  1. package/lib/dist/color/color.d.ts +2 -2
  2. package/lib/dist/color/color.d.ts.map +1 -1
  3. package/lib/dist/color/color.js +3 -1
  4. package/lib/dist/context/context.d.ts.map +1 -1
  5. package/lib/dist/context/context.js +2 -1
  6. package/lib/dist/filter/filter.d.ts +8 -7
  7. package/lib/dist/filter/filter.d.ts.map +1 -1
  8. package/lib/dist/filter/filter.js +4 -2
  9. package/lib/dist/filter/index.d.ts +1 -0
  10. package/lib/dist/filter/index.d.ts.map +1 -1
  11. package/lib/dist/filter/index.js +2 -1
  12. package/lib/dist/filter/zoom.d.ts +10 -0
  13. package/lib/dist/filter/zoom.d.ts.map +1 -0
  14. package/lib/dist/filter/zoom.js +21 -0
  15. package/lib/dist/interface/index.d.ts +2 -0
  16. package/lib/dist/interface/index.d.ts.map +1 -0
  17. package/lib/dist/interface/index.js +2 -0
  18. package/lib/dist/interface/transformable.d.ts +5 -0
  19. package/lib/dist/interface/transformable.d.ts.map +1 -0
  20. package/lib/dist/interface/transformable.js +2 -0
  21. package/lib/dist/loader/asset.d.ts +9 -0
  22. package/lib/dist/loader/asset.d.ts.map +1 -0
  23. package/lib/dist/loader/asset.js +36 -0
  24. package/lib/dist/loader/index.d.ts +1 -0
  25. package/lib/dist/loader/index.d.ts.map +1 -1
  26. package/lib/dist/loader/index.js +2 -1
  27. package/lib/dist/material/diffuse.d.ts +7 -3
  28. package/lib/dist/material/diffuse.d.ts.map +1 -1
  29. package/lib/dist/material/diffuse.js +14 -3
  30. package/lib/dist/material/ghost.d.ts +3 -3
  31. package/lib/dist/material/ghost.d.ts.map +1 -1
  32. package/lib/dist/material/ghost.js +1 -1
  33. package/lib/dist/material/hull.d.ts +24 -0
  34. package/lib/dist/material/hull.d.ts.map +1 -0
  35. package/lib/dist/material/hull.js +30 -0
  36. package/lib/dist/material/index.d.ts +2 -0
  37. package/lib/dist/material/index.d.ts.map +1 -1
  38. package/lib/dist/material/index.js +3 -1
  39. package/lib/dist/material/material.d.ts +12 -4
  40. package/lib/dist/material/material.d.ts.map +1 -1
  41. package/lib/dist/material/material.js +9 -1
  42. package/lib/dist/material/normals.d.ts +3 -3
  43. package/lib/dist/material/normals.d.ts.map +1 -1
  44. package/lib/dist/material/normals.js +1 -1
  45. package/lib/dist/material/solid.d.ts +21 -0
  46. package/lib/dist/material/solid.d.ts.map +1 -0
  47. package/lib/dist/material/solid.js +23 -0
  48. package/lib/dist/math/vec4.d.ts +3 -3
  49. package/lib/dist/math/vec4.d.ts.map +1 -1
  50. package/lib/dist/math/vec4.js +20 -1
  51. package/lib/dist/painter/clear.d.ts +2 -0
  52. package/lib/dist/painter/clear.d.ts.map +1 -1
  53. package/lib/dist/painter/clear.js +12 -2
  54. package/lib/dist/painter/filter/filter.d.ts.map +1 -1
  55. package/lib/dist/painter/filter/filter.js +8 -10
  56. package/lib/dist/painter/framebuffer.backup.d.ts +39 -0
  57. package/lib/dist/painter/framebuffer.backup.d.ts.map +1 -0
  58. package/lib/dist/painter/framebuffer.backup.js +125 -0
  59. package/lib/dist/painter/framebuffer.d.ts +18 -7
  60. package/lib/dist/painter/framebuffer.d.ts.map +1 -1
  61. package/lib/dist/painter/framebuffer.js +69 -87
  62. package/lib/dist/painter/index.d.ts +1 -2
  63. package/lib/dist/painter/index.d.ts.map +1 -1
  64. package/lib/dist/painter/index.js +2 -3
  65. package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
  66. package/lib/dist/painter/mesh/gltf/gltf.js +27 -49
  67. package/lib/dist/painter/mesh/hull/hull.d.ts +12 -0
  68. package/lib/dist/painter/mesh/hull/hull.d.ts.map +1 -0
  69. package/lib/dist/painter/mesh/hull/hull.js +11 -0
  70. package/lib/dist/painter/mesh/mesh/mesh.d.ts +4 -3
  71. package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
  72. package/lib/dist/painter/mesh/mesh/mesh.js +11 -9
  73. package/lib/dist/painter/node/index.d.ts +2 -0
  74. package/lib/dist/painter/node/index.d.ts.map +1 -0
  75. package/lib/dist/painter/node/index.js +2 -0
  76. package/lib/dist/painter/node/node.d.ts +32 -0
  77. package/lib/dist/painter/node/node.d.ts.map +1 -0
  78. package/lib/dist/painter/node/node.js +73 -0
  79. package/lib/dist/painter/state/state.d.ts +15 -3
  80. package/lib/dist/painter/state/state.d.ts.map +1 -1
  81. package/lib/dist/painter/state/state.js +46 -16
  82. package/lib/dist/scene/scene-node.d.ts +8 -0
  83. package/lib/dist/scene/scene-node.d.ts.map +1 -0
  84. package/lib/dist/scene/scene-node.js +13 -0
  85. package/lib/dist/shader/code.d.ts +8 -8
  86. package/lib/dist/shader/code.d.ts.map +1 -1
  87. package/lib/dist/shader/code.js +1 -1
  88. package/lib/dist/shader/fragment.d.ts +11 -11
  89. package/lib/dist/shader/fragment.d.ts.map +1 -1
  90. package/lib/dist/shader/fragment.js +1 -1
  91. package/lib/dist/shader/vertex.d.ts +11 -11
  92. package/lib/dist/shader/vertex.d.ts.map +1 -1
  93. package/lib/dist/shader/vertex.js +1 -1
  94. package/lib/dist/texture/texture2d.d.ts +2 -1
  95. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  96. package/lib/dist/texture/texture2d.js +7 -1
  97. package/lib/dist/types/program.d.ts +3 -3
  98. package/lib/dist/types/program.d.ts.map +1 -1
  99. package/lib/dist/types/texture2d.d.ts +2 -1
  100. package/lib/dist/types/texture2d.d.ts.map +1 -1
  101. package/lib/dist/types/webgl.d.ts +48 -0
  102. package/lib/dist/types/webgl.d.ts.map +1 -1
  103. package/lib/dist/types/webgl.js +52 -1
  104. package/lib/dist/utils/index.d.ts +0 -1
  105. package/lib/dist/utils/index.d.ts.map +1 -1
  106. package/lib/dist/utils/index.js +1 -2
  107. package/lib/dist/utils/state/cull.d.ts +1 -1
  108. package/lib/dist/utils/state/cull.d.ts.map +1 -1
  109. package/lib/dist/utils/state/cull.js +10 -2
  110. package/lib/dist/utils/state/index.d.ts +2 -0
  111. package/lib/dist/utils/state/index.d.ts.map +1 -1
  112. package/lib/dist/utils/state/index.js +3 -1
  113. package/lib/dist/utils/state/stencil.d.ts +24 -0
  114. package/lib/dist/utils/state/stencil.d.ts.map +1 -0
  115. package/lib/dist/utils/state/stencil.js +182 -0
  116. package/package.json +3 -3
@@ -1,9 +1,11 @@
1
+ import { TgdPainterFunction } from "../types/painter";
1
2
  import { TgdContext } from "../context";
2
3
  import { TgdTexture2D, TgdTexture2DOptions } from "../types";
3
4
  import { TgdPainterGroup } from "./group";
4
5
  export interface TgdPainterFramebufferOptions extends TgdTexture2DOptions {
5
6
  /**
6
7
  * Do we need a depth buffer?
8
+ * Default to `true`.
7
9
  */
8
10
  depthBuffer: boolean;
9
11
  /**
@@ -13,27 +15,36 @@ export interface TgdPainterFramebufferOptions extends TgdTexture2DOptions {
13
15
  * for instance, if `viewportMatchingScale === 0.5` and the viewport
14
16
  * id (640, 480), then the framebuffer will have a size of
15
17
  * (320, 240).
18
+ *
19
+ * Default to `1`.
16
20
  */
17
21
  viewportMatchingScale?: number;
18
- name: string;
22
+ /**
23
+ * Function to execute before painting.
24
+ */
25
+ onEnter?: TgdPainterFunction;
26
+ /**
27
+ * Function to execute after painting.
28
+ */
29
+ onExit?: TgdPainterFunction;
19
30
  }
20
31
  export declare class TgdPainterFramebuffer extends TgdPainterGroup {
21
32
  private readonly context;
22
33
  private readonly options;
23
- readonly texture: TgdTexture2D;
24
- readonly textureDepth: TgdTexture2D;
25
- private framebuffer;
26
- private depthbuffer;
27
34
  private dirty;
28
35
  private _width;
29
36
  private _height;
30
- constructor(context: TgdContext, options: Partial<TgdPainterFramebufferOptions>);
37
+ private _texture;
38
+ private _framebuffer;
39
+ private _depthBuffer;
40
+ constructor(context: TgdContext, options?: Partial<TgdPainterFramebufferOptions>);
41
+ get texture(): TgdTexture2D;
31
42
  get width(): number;
32
43
  set width(v: number);
33
44
  get height(): number;
34
45
  set height(v: number);
46
+ private createFramebufferIfNeeded;
35
47
  paint(time: number, delay: number): void;
36
48
  delete(): void;
37
- private createFramebufferIfNeeded;
38
49
  }
39
50
  //# sourceMappingURL=framebuffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"framebuffer.d.ts","sourceRoot":"","sources":["../../src/painter/framebuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACrE;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;CACf;AAID,qBAAa,qBAAsB,SAAQ,eAAe;IAUlD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV5B,SAAgB,OAAO,EAAE,YAAY,CAAA;IACrC,SAAgB,YAAY,EAAE,YAAY,CAAA;IAC1C,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAI;gBAGE,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,OAAO,CAAC,4BAA4B,CAAC;IAuBnE,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAKlB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAKnB;IAED,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAuCxC,MAAM;IAUN,OAAO,CAAC,yBAAyB;CAqBpC"}
1
+ {"version":3,"file":"framebuffer.d.ts","sourceRoot":"","sources":["../../src/painter/framebuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACrE;;;OAGG;IACH,WAAW,EAAE,OAAO,CAAA;IACpB;;;;;;;;;OASG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC9B;AAED,qBAAa,qBAAsB,SAAQ,eAAe;IASlD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAT5B,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,YAAY,CAAiC;gBAGhC,OAAO,EAAE,UAAU,EACnB,OAAO,GAAE,OAAO,CAAC,4BAA4B,CAAM;IASxE,IAAI,OAAO,IAAI,YAAY,CAK1B;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAKlB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAKnB;IAED,OAAO,CAAC,yBAAyB;IAoDjC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYxC,MAAM;CAgBT"}
@@ -1,37 +1,27 @@
1
1
  import { TgdPainterGroup } from "./group.js";
2
- const DEFAULT_TEXTURE_SIZE = 256;
3
2
  export class TgdPainterFramebuffer extends TgdPainterGroup {
4
3
  context;
5
4
  options;
6
- texture;
7
- textureDepth;
8
- framebuffer = null;
9
- depthbuffer = null;
10
- dirty = false;
5
+ dirty = true;
11
6
  _width = 0;
12
7
  _height = 0;
13
- constructor(context, options) {
8
+ _texture = null;
9
+ _framebuffer = null;
10
+ _depthBuffer = null;
11
+ constructor(context, options = {}) {
14
12
  super();
15
13
  this.context = context;
16
14
  this.options = options;
17
- this._width = options.width ?? DEFAULT_TEXTURE_SIZE;
18
- this._height = options.height ?? DEFAULT_TEXTURE_SIZE;
19
- this.name = options.name ?? `Framebuffer/${this.name}`;
20
- this.texture = context.textures2D.create({
21
- width: Math.max(this.width, 1),
22
- height: Math.max(this.height, 1),
23
- internalFormat: "RGB",
24
- generateMipMap: true,
25
- });
26
- this.textureDepth = context.textures2D.create({
27
- width: options.depthBuffer ? this._width : 1,
28
- height: options.depthBuffer ? this._height : 1,
29
- generateMipMap: false,
30
- internalFormat: "DEPTH_COMPONENT24",
31
- format: "DEPTH_COMPONENT",
32
- type: "UNSIGNED_INT",
33
- });
34
- this.dirty = true;
15
+ this._width = options.width ?? 0;
16
+ this._height = options.height ?? 0;
17
+ this.onEnter = options.onEnter;
18
+ this.onExit = options.onExit;
19
+ }
20
+ get texture() {
21
+ if (!this._texture) {
22
+ this._texture = this.context.textures2D.getDefaultEmpty();
23
+ }
24
+ return this._texture;
35
25
  }
36
26
  get width() {
37
27
  return this._width;
@@ -51,75 +41,67 @@ export class TgdPainterFramebuffer extends TgdPainterGroup {
51
41
  this._height = v;
52
42
  this.dirty = true;
53
43
  }
54
- paint(time, delay) {
55
- const { context, texture, options } = this;
44
+ createFramebufferIfNeeded() {
45
+ if (!this.dirty)
46
+ return;
47
+ const { context, width, height } = this;
56
48
  const { gl } = context;
57
- const { viewportMatchingScale } = options;
58
- if (typeof viewportMatchingScale === "number") {
59
- this.width = Math.max(1, Math.round(context.width * viewportMatchingScale));
60
- this.height = Math.max(1, Math.round(context.height * viewportMatchingScale));
49
+ this.delete();
50
+ this._texture = context.textures2D.create({
51
+ width: Math.max(width, 1),
52
+ height: Math.max(height, 1),
53
+ internalFormat: "RGB",
54
+ generateMipMap: true,
55
+ magFilter: "LINEAR",
56
+ minFilter: "LINEAR_MIPMAP_LINEAR",
57
+ wrapR: "MIRRORED_REPEAT",
58
+ wrapS: "MIRRORED_REPEAT",
59
+ wrapT: "MIRRORED_REPEAT",
60
+ });
61
+ this._framebuffer = context.createFramebuffer();
62
+ gl.bindFramebuffer(gl.FRAMEBUFFER, this._framebuffer);
63
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this._texture.glTexture, 0);
64
+ if (this.options.depthBuffer !== false) {
65
+ // Create a Depth Buffer, because the default
66
+ // framebuffer has none.
67
+ const depthBuffer = gl.createRenderbuffer();
68
+ if (!depthBuffer)
69
+ throw Error("Unable to create WebGLRenderBuffer!");
70
+ this._depthBuffer = depthBuffer;
71
+ gl.bindRenderbuffer(gl.RENDERBUFFER, depthBuffer);
72
+ gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, width, height);
73
+ gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, depthBuffer);
61
74
  }
62
- const currentFramebuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING);
63
- const [x, y, w, h] = gl.getParameter(gl.VIEWPORT);
75
+ // const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER)
76
+ // console.log("Framebuffer status:", context.lookupWebglConstant(status))
77
+ this.dirty = false;
78
+ }
79
+ paint(time, delay) {
80
+ const { context, options } = this;
81
+ const { gl } = context;
82
+ const { viewportMatchingScale = 1 } = options;
83
+ this.width = Math.round(context.width * viewportMatchingScale);
84
+ this.height = Math.round(context.height * viewportMatchingScale);
64
85
  this.createFramebufferIfNeeded();
65
- gl.bindFramebuffer(gl.FRAMEBUFFER, this.framebuffer);
66
- gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture.glTexture, 0);
67
- gl.viewport(0, 0, this.width, this.height);
68
- console.log("🚀 [framebuffer] w, h = ", w, h); // @FIXME: Remove this line written on 2024-08-20 at 16:42
69
- console.log("🚀 [framebuffer] this.width, this.height = ", this.width, this.height); // @FIXME: Remove this line written on 2024-08-20 at 16:42
86
+ gl.bindFramebuffer(gl.FRAMEBUFFER, this._framebuffer);
70
87
  super.paint(time, delay);
71
- gl.bindFramebuffer(gl.FRAMEBUFFER, currentFramebuffer);
72
- gl.viewport(x, y, w, h);
88
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
73
89
  }
74
90
  delete() {
75
- const { context, texture, textureDepth, framebuffer, depthbuffer } = this;
91
+ const { context, _texture, _framebuffer, _depthBuffer } = this;
76
92
  const { gl } = context;
77
- context.textures2D.delete(texture);
78
- context.textures2D.delete(textureDepth);
79
- if (framebuffer)
80
- gl.deleteFramebuffer(framebuffer);
81
- if (depthbuffer)
82
- gl.deleteRenderbuffer(depthbuffer);
83
- }
84
- createFramebufferIfNeeded() {
85
- if (!this.dirty)
86
- return;
87
- const { context, width, height } = this;
88
- if (this.framebuffer) {
89
- console.log("Delete framebuffer!");
90
- context.gl.deleteFramebuffer(this.framebuffer);
93
+ if (_texture) {
94
+ gl.deleteTexture(_texture.glTexture);
95
+ this._texture = null;
96
+ }
97
+ if (_framebuffer) {
98
+ gl.deleteFramebuffer(_framebuffer);
99
+ this._framebuffer = null;
100
+ }
101
+ if (_depthBuffer) {
102
+ gl.deleteRenderbuffer(_depthBuffer);
103
+ this._depthBuffer = null;
91
104
  }
92
- console.log("Create framebuffer!");
93
- this.framebuffer = context.createFramebuffer();
94
- this.texture.resize(width, height);
95
- // @TODO: Generate depth buffer.
96
- // if (this.options.depthBuffer === true) {
97
- // // Create a Depth Buffer, because the default
98
- // // framebuffer has none.
99
- // const { gl } = context
100
- // this.depthbuffer = createDepthTexture(gl, this.width, this.height)
101
- // this.textureDepth.resize(width, height)
102
- // }
103
- this.dirty = false;
104
105
  }
105
106
  }
106
- function createDepthTexture(gl, width, height) {
107
- const depthTexture = gl.createTexture();
108
- gl.bindTexture(gl.TEXTURE_2D, depthTexture);
109
- const level = 0;
110
- const internalFormat = gl.DEPTH_COMPONENT24;
111
- const border = 0;
112
- const format = gl.DEPTH_COMPONENT;
113
- const type = gl.UNSIGNED_INT;
114
- const data = null;
115
- gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, format, type, data);
116
- // set the filtering so we don't need mips
117
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
118
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
119
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
120
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
121
- // attach the depth texture to the framebuffer
122
- gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture, level);
123
- return depthTexture;
124
- }
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWVidWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFpbnRlci9mcmFtZWJ1ZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBbUJ6QyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQTtBQUVoQyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQVVqQztJQUNBO0lBVkwsT0FBTyxDQUFjO0lBQ3JCLFlBQVksQ0FBYztJQUNsQyxXQUFXLEdBQTRCLElBQUksQ0FBQTtJQUMzQyxXQUFXLEdBQTZCLElBQUksQ0FBQTtJQUM1QyxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ2IsTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUNWLE9BQU8sR0FBRyxDQUFDLENBQUE7SUFFbkIsWUFDcUIsT0FBbUIsRUFDbkIsT0FBOEM7UUFFL0QsS0FBSyxFQUFFLENBQUE7UUFIVSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLFlBQU8sR0FBUCxPQUFPLENBQXVDO1FBRy9ELElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxvQkFBb0IsQ0FBQTtRQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksb0JBQW9CLENBQUE7UUFDckQsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLGVBQWUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3RELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDckMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDOUIsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDaEMsY0FBYyxFQUFF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
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWVidWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFpbnRlci9mcmFtZWJ1ZmZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBNkJ6QyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQVNqQztJQUNBO0lBVGIsS0FBSyxHQUFHLElBQUksQ0FBQTtJQUNaLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFDVixPQUFPLEdBQUcsQ0FBQyxDQUFBO0lBQ1gsUUFBUSxHQUF3QixJQUFJLENBQUE7SUFDcEMsWUFBWSxHQUE0QixJQUFJLENBQUE7SUFDNUMsWUFBWSxHQUE2QixJQUFJLENBQUE7SUFFckQsWUFDcUIsT0FBbUIsRUFDbkIsVUFBaUQsRUFBRTtRQUVwRSxLQUFLLEVBQUUsQ0FBQTtRQUhVLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsWUFBTyxHQUFQLE9BQU8sQ0FBNEM7UUFHcEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUE7SUFDaEMsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUM3RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxN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
@@ -4,11 +4,10 @@ export * from "./clear";
4
4
  export * from "./depth";
5
5
  export * from "./filter";
6
6
  export * from "./framebuffer";
7
- export * from "./framebuffer-old";
8
7
  export * from "./group";
9
8
  export * from "./logic";
10
9
  export * from "./mesh";
11
- export * from "./node";
10
+ export * from "./node/node";
12
11
  export * from "./segments";
13
12
  export * from "./skybox";
14
13
  export * from "./state/state";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/painter/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/painter/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA"}
@@ -4,12 +4,11 @@ export * from "./clear.js";
4
4
  export * from "./depth.js";
5
5
  export * from "./filter/index.js";
6
6
  export * from "./framebuffer.js";
7
- export * from "./framebuffer-old.js";
8
7
  export * from "./group.js";
9
8
  export * from "./logic.js";
10
9
  export * from "./mesh/index.js";
11
- export * from "./node.js";
10
+ export * from "./node/node.js";
12
11
  export * from "./segments/index.js";
13
12
  export * from "./skybox/index.js";
14
13
  export * from "./state/state.js";
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFpbnRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLGVBQWUsQ0FBQTtBQUM3QixjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsWUFBWSxDQUFBO0FBQzFCLGNBQWMsVUFBVSxDQUFBO0FBQ3hCLGNBQWMsZUFBZSxDQUFBIn0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFpbnRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLGVBQWUsQ0FBQTtBQUM3QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFVBQVUsQ0FBQTtBQUN4QixjQUFjLGVBQWUsQ0FBQSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"gltf.d.ts","sourceRoot":"","sources":["../../../../src/painter/mesh/gltf/gltf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAW,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAA;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExC,MAAM,WAAW,yBAAyB;IACtC,KAAK,EAAE,gCAAgC,CAAA;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,CACZ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,YAAY,CAAA;KAAE,GAC5C,WAAW,CAAA;CACjB;AAED;GACG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;gBACtC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,yBAAyB;CAmEtE"}
1
+ {"version":3,"file":"gltf.d.ts","sourceRoot":"","sources":["../../../../src/painter/mesh/gltf/gltf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAW,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAA;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExC,MAAM,WAAW,yBAAyB;IACtC,KAAK,EAAE,gCAAgC,CAAA;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,CACZ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,YAAY,CAAA;KAAE,GAC5C,WAAW,CAAA;CACjB;AAED;GACG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;gBACtC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,yBAAyB;CA4CtE"}
@@ -12,58 +12,36 @@ export class TgdPainterMeshGltf extends TgdPainterMesh {
12
12
  const color = figureColor(asset, meshIndex, primitiveIndex, context);
13
13
  const material = materialFactory({ color });
14
14
  let computeNormals = false;
15
- if (color instanceof TgdVec4) {
16
- const dataset = new TgdDataset({
17
- POSITION: "vec3",
18
- NORMAL: "vec3",
19
- });
20
- asset.setAttrib(dataset, "POSITION", meshIndex, primitiveIndex);
21
- try {
22
- asset.setAttrib(dataset, "NORMAL", meshIndex, primitiveIndex);
23
- }
24
- catch (ex) {
25
- // It seems to be impossible to retrieve normals.
26
- // We will compute them with a smooth shading.
27
- console.warn("No normals found! We will apply smooth shading.");
28
- computeNormals = true;
29
- }
30
- super(context, {
31
- geometry: new TgdGeometry({
32
- dataset,
33
- elements: asset.getMeshPrimitiveIndices(meshIndex, primitiveIndex),
34
- drawMode: "TRIANGLES",
35
- computeNormalsIfMissing: computeNormals,
36
- }),
37
- material,
38
- });
15
+ const attributes = {
16
+ POSITION: "vec3",
17
+ NORMAL: "vec3",
18
+ };
19
+ if (asset.getMeshPrimitive().attributes.TEXCOORD_0) {
20
+ attributes.TEXCOORD_0 = "vec2";
21
+ }
22
+ const dataset = new TgdDataset(attributes);
23
+ asset.setAttrib(dataset, "POSITION", meshIndex, primitiveIndex);
24
+ if (asset.getMeshPrimitive().attributes.NORMAL) {
25
+ asset.setAttrib(dataset, "NORMAL", meshIndex, primitiveIndex);
39
26
  }
40
27
  else {
41
- const dataset = new TgdDataset({
42
- POSITION: "vec3",
43
- NORMAL: "vec3",
44
- TEXCOORD_0: "vec2",
45
- });
46
- asset.setAttrib(dataset, "POSITION", meshIndex, primitiveIndex);
47
- try {
48
- asset.setAttrib(dataset, "NORMAL", meshIndex, primitiveIndex);
49
- }
50
- catch (ex) {
51
- // It seems to be impossible to retrieve normals.
52
- // We will compute them with a smooth shading.
53
- console.warn("No normals found! We will apply smooth shading.");
54
- computeNormals = true;
55
- }
28
+ // It seems to be impossible to retrieve normals.
29
+ // We will compute them with a smooth shading.
30
+ console.warn("No normals found! We will apply smooth shading.");
31
+ computeNormals = true;
32
+ }
33
+ if (asset.getMeshPrimitive().attributes.TEXCOORD_0) {
56
34
  asset.setAttrib(dataset, "TEXCOORD_0", meshIndex, primitiveIndex);
57
- super(context, {
58
- geometry: new TgdGeometry({
59
- dataset,
60
- elements: asset.getMeshPrimitiveIndices(meshIndex, primitiveIndex),
61
- drawMode: "TRIANGLES",
62
- computeNormalsIfMissing: computeNormals,
63
- }),
64
- material,
65
- });
66
35
  }
36
+ super(context, {
37
+ geometry: new TgdGeometry({
38
+ dataset,
39
+ elements: asset.getMeshPrimitiveIndices(meshIndex, primitiveIndex),
40
+ drawMode: "TRIANGLES",
41
+ computeNormalsIfMissing: computeNormals,
42
+ }),
43
+ material,
44
+ });
67
45
  this.name = options.name ?? `Gltf/${this.name}`;
68
46
  }
69
47
  }
@@ -108,4 +86,4 @@ function makeMaterial({ color }) {
108
86
  });
109
87
  return material;
110
88
  }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWludGVyL21lc2gvZ2x0Zi9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUM1QyxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBYXhDO0dBQ0c7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsY0FBYztJQUNsRCxZQUFZLE9BQW1CLEVBQUUsT0FBa0M7UUFDL0QsTUFBTSxFQUNGLEtBQUssRUFDTCxTQUFTLEdBQUcsQ0FBQyxFQUNiLGNBQWMsR0FBRyxDQUFDLEVBQ2xCLGVBQWUsR0FBRyxZQUFZLEdBQ2pDLEdBQUcsT0FBTyxDQUFBO1FBQ1gsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3BFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDM0MsSUFBSSxjQUFjLEdBQUcsS0FBSyxDQUFBO1FBQzFCLElBQUksS0FBSyxZQUFZLE9BQU8sRUFBRSxDQUFDO1lBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDO2dCQUMzQixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsTUFBTSxFQUFFLE1BQU07YUFDakIsQ0FBQyxDQUFBO1lBQ0YsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMs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
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWludGVyL21lc2gvZ2x0Zi9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBd0IsTUFBTSxjQUFjLENBQUE7QUFFL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDNUMsT0FBTyxFQUFlLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQWF4QztHQUNHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGNBQWM7SUFDbEQsWUFBWSxPQUFtQixFQUFFLE9BQWtDO1FBQy9ELE1BQU0sRUFDRixLQUFLLEVBQ0wsU0FBUyxHQUFHLENBQUMsRUFDYixjQUFjLEdBQUcsQ0FBQyxFQUNsQixlQUFlLEdBQUcsWUFBWSxHQUNqQyxHQUFHLE9BQU8sQ0FBQTtRQUNYLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNwRSxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQzNDLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQTtRQUMxQixNQUFNLFVBQVUsR0FBeUI7WUFDckMsUUFBUSxFQUFFLE1BQU07WUFDaEIsTUFBTSxFQUFFLE1BQU07U0FDakIsQ0FBQTtRQUNELElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2pELFVBQVUsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFBO1FBQ2xDLENB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
@@ -0,0 +1,12 @@
1
+ import { TgdGeometry } from "./../../../geometry/geometry";
2
+ import { TgdContext } from "../../../context";
3
+ import { TgdPainterMesh } from "../mesh";
4
+ import { ArrayNumber4 } from "../../../types";
5
+ export interface TgdPainterMeshHullOptions {
6
+ geometry: TgdGeometry;
7
+ color?: ArrayNumber4;
8
+ }
9
+ export declare class TgdPainterMeshHull extends TgdPainterMesh {
10
+ constructor(context: TgdContext, options: TgdPainterMeshHullOptions);
11
+ }
12
+ //# sourceMappingURL=hull.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hull.d.ts","sourceRoot":"","sources":["../../../../src/painter/mesh/hull/hull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGzC,MAAM,WAAW,yBAAyB;IACtC,QAAQ,EAAE,WAAW,CAAA;IACrB,KAAK,CAAC,EAAE,YAAY,CAAA;CACvB;AAED,qBAAa,kBAAmB,SAAQ,cAAc;gBACtC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,yBAAyB;CAMtE"}
@@ -0,0 +1,11 @@
1
+ import { TgdPainterMesh } from "../mesh/index.js";
2
+ import { TgdMaterialSolid } from "./../../../material/index.js";
3
+ export class TgdPainterMeshHull extends TgdPainterMesh {
4
+ constructor(context, options) {
5
+ super(context, {
6
+ geometry: options.geometry,
7
+ material: new TgdMaterialSolid({ color: options.color }),
8
+ });
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWludGVyL21lc2gvaHVsbC9odWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBT2hELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxjQUFjO0lBQ2xELFlBQVksT0FBbUIsRUFBRSxPQUFrQztRQUMvRCxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ1gsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLFFBQVEsRUFBRSxJQUFJLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMzRCxDQUFDLENBQUE7SUFDTixDQUFDO0NBQ0oifQ==
@@ -2,6 +2,7 @@ import { TgdContext } from "../../../context";
2
2
  import { TgdGeometry } from "../../../geometry";
3
3
  import { TgdMaterial } from "../../../material";
4
4
  import { TgdMat4, TgdVec3 } from "../../../math";
5
+ import { TgdInterfaceTransformable } from "../../../interface";
5
6
  import { TgdPainter } from "../../painter";
6
7
  export interface TgdPainterMeshOptions {
7
8
  geometry: TgdGeometry;
@@ -10,9 +11,9 @@ export interface TgdPainterMeshOptions {
10
11
  }
11
12
  /**
12
13
  */
13
- export declare class TgdPainterMesh extends TgdPainter {
14
+ export declare class TgdPainterMesh extends TgdPainter implements TgdInterfaceTransformable {
14
15
  protected readonly context: TgdContext;
15
- matrixTransfo: TgdMat4;
16
+ matrixTransfoGlobal: TgdMat4;
16
17
  readonly material: TgdMaterial;
17
18
  private readonly prg;
18
19
  private readonly vao;
@@ -27,7 +28,7 @@ export declare class TgdPainterMesh extends TgdPainter {
27
28
  min: Readonly<TgdVec3>;
28
29
  max: Readonly<TgdVec3>;
29
30
  };
30
- readonly paint: () => void;
31
+ readonly paint: (time: number, delay: number) => void;
31
32
  delete(): void;
32
33
  }
33
34
  //# sourceMappingURL=mesh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mesh.d.ts","sourceRoot":"","sources":["../../../../src/painter/mesh/mesh/mesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAK1C,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,WAAW,CAAA;IACrB,QAAQ,EAAE,WAAW,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;GACG;AACH,qBAAa,cAAe,SAAQ,UAAU;IActC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU;IAbnC,aAAa,UAAgB;IACpC,SAAgB,QAAQ,EAAE,WAAW,CAAA;IAErC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,OAAO,CAAuB;gBAGf,OAAO,EAAE,UAAU,EACtC,OAAO,EAAE,qBAAqB;IAoDlC,kBAAkB,IAAI;QAClB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;QACtB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;KACzB;IA4BD,SAAgB,KAAK,aAuBpB;IAED,MAAM,IAAI,IAAI;CAGjB"}
1
+ {"version":3,"file":"mesh.d.ts","sourceRoot":"","sources":["../../../../src/painter/mesh/mesh/mesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAK5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,WAAW,CAAA;IACrB,QAAQ,EAAE,WAAW,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;GACG;AACH,qBAAa,cACT,SAAQ,UACR,YAAW,yBAAyB;IAehC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU;IAbnC,mBAAmB,UAAgB;IAC1C,SAAgB,QAAQ,EAAE,WAAW,CAAA;IAErC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,OAAO,CAAuB;gBAGf,OAAO,EAAE,UAAU,EACtC,OAAO,EAAE,qBAAqB;IA0DlC,kBAAkB,IAAI;QAClB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;QACtB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;KACzB;IA4BD,SAAgB,KAAK,SAAU,MAAM,SAAS,MAAM,UAuBnD;IAED,MAAM,IAAI,IAAI;CAGjB"}
@@ -1,12 +1,13 @@
1
1
  import { TgdMat4, TgdVec3 } from "./../../../math/index.js";
2
- import { TgdPainter } from "../../painter.js";
3
2
  import { TgdShaderFragment } from "./../../../shader/fragment.js";
4
3
  import { TgdShaderVertex } from "./../../../shader/vertex.js";
4
+ import { TgdPainter } from "../../painter.js";
5
+ import { tgdCodeStringify } from "./../../../shader/index.js";
5
6
  /**
6
7
  */
7
8
  export class TgdPainterMesh extends TgdPainter {
8
9
  context;
9
- matrixTransfo = new TgdMat4();
10
+ matrixTransfoGlobal = new TgdMat4();
10
11
  material;
11
12
  prg;
12
13
  vao;
@@ -40,10 +41,11 @@ export class TgdPainterMesh extends TgdPainter {
40
41
  },
41
42
  varying: material.varyings,
42
43
  functions: {
43
- "void applyMaterial()": material.vertexShaderCode,
44
+ "void applyMaterial()": tgdCodeStringify(material.vertexShaderCode),
45
+ "vec4 getPosition(vec4 pos)": material.vertexShaderCodeForGetPosition ?? "return pos;",
44
46
  },
45
47
  mainCode: [
46
- "gl_Position = uniProjectionMatrix * uniModelViewMatrix * uniTransfoMatrix * POSITION;",
48
+ "gl_Position = uniProjectionMatrix * uniModelViewMatrix * uniTransfoMatrix * getPosition(POSITION);",
47
49
  "applyMaterial();",
48
50
  ],
49
51
  }).code;
@@ -52,7 +54,7 @@ export class TgdPainterMesh extends TgdPainter {
52
54
  outputs: { FragColor: "vec4" },
53
55
  varying: material.varyings,
54
56
  functions: {
55
- "vec4 applyMaterial()": material.fragmentShaderCode,
57
+ "vec4 applyMaterial()": tgdCodeStringify(material.fragmentShaderCode),
56
58
  },
57
59
  mainCode: [`FragColor = applyMaterial();`],
58
60
  }).code;
@@ -93,11 +95,11 @@ export class TgdPainterMesh extends TgdPainter {
93
95
  this.bboxMax = max;
94
96
  return { min, max };
95
97
  }
96
- paint = () => {
97
- const { context, prg, geometry, material, drawMode, count, matrixTransfo, } = this;
98
+ paint = (time, delay) => {
99
+ const { context, prg, geometry, material, drawMode, count, matrixTransfoGlobal: matrixTransfo, } = this;
98
100
  const { gl, camera } = context;
99
101
  prg.use();
100
- material.setUniforms(prg);
102
+ material.setUniforms(prg, time, delay);
101
103
  prg.uniformMatrix4fv("uniTransfoMatrix", matrixTransfo);
102
104
  prg.uniformMatrix4fv("uniModelViewMatrix", camera.matrixModelView);
103
105
  prg.uniformMatrix4fv("uniProjectionMatrix", camera.matrixProjection);
@@ -114,4 +116,4 @@ export class TgdPainterMesh extends TgdPainter {
114
116
  this.vao.delete();
115
117
  }
116
118
  }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWludGVyL21lc2gvbWVzaC9tZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBUXBEO0dBQ0c7QUFDSCxNQUFNLE9BQU8sY0FBZSxTQUFRLFVBQVU7SUFjbkI7SUFiaEIsYUFBYSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7SUFDcEIsUUFBUSxDQUFhO0lBRXBCLEdBQUcsQ0FBWTtJQUNmLEdBQUcsQ0FBZ0I7SUFDbkIsWUFBWSxDQUFRO0lBQ3BCLEtBQUssQ0FBUTtJQUNiLFFBQVEsQ0FBYTtJQUNyQixRQUFRLEdBQVcsQ0FBQyxDQUFBO0lBQzdCLE9BQU8sR0FBbUIsSUFBSSxDQUFBO0lBQzlCLE9BQU8sR0FBbUIsSUFBSSxDQUFBO0lBRXRDLFlBQ3VCLE9BQW1CLEVBQ3RDLE9BQThCO1FBRTlCLEtBQUssRUFBRSxDQUFBO1FBSFksWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUl0QyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsUUFBUTtZQUNULE9BQU8sUUFBUSxDQUFDLFFBQVEsS0FBSyxRQUFRO2dCQUNqQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVE7Z0JBQ25CLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFR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
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWludGVyL21lc2gvbWVzaC9tZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQVE5QztHQUNHO0FBQ0gsTUFBTSxPQUFPLGNBQ1QsU0FBUSxVQUFVO0lBZ0JLO0lBYmhCLG1CQUFtQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7SUFDMUIsUUFBUSxDQUFhO0lBRXBCLEdBQUcsQ0FBWTtJQUNmLEdBQUcsQ0FBZ0I7SUFDbkIsWUFBWSxDQUFRO0lBQ3BCLEtBQUssQ0FBUTtJQUNiLFFBQVEsQ0FBYTtJQUNyQixRQUFRLEdBQVcsQ0FBQyxDQUFBO0lBQzdCLE9BQU8sR0FBbUIsSUFBSSxDQUFBO0lBQzlCLE9BQU8sR0FBbUIsSUFBSSxDQUFBO0lBRXRDLFlBQ3VCLE9BQW1CLEVBQ3RDLE9BQThCO1FBRTlCLEtBQUssRUFBRSxDQUFBO1FBSFksWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUl0QyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsUUFBUTtZQUNULE9BQU8sUUFBUSxDQUFDLFFBQVEsS0FBSyxRQUFRO2dCQUNqQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVE7Z0JBQ25C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
@@ -0,0 +1,2 @@
1
+ export * from "./node";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/painter/node/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./node.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci9ub2RlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFBIn0=
@@ -0,0 +1,32 @@
1
+ import { TgdMat4 } from "../../math";
2
+ import { TgdPainter } from "../painter";
3
+ import { TgdTransfo } from "../../math/transfo";
4
+ export interface TgdPainterNodeChild {
5
+ paint(time: number, delay: number): void;
6
+ delete(): void;
7
+ matrixTransfo: TgdMat4;
8
+ }
9
+ export interface TgdPainterNodeOptions {
10
+ children: Array<TgdPainterNode | TgdPainterNodeChild>;
11
+ }
12
+ /**
13
+ * A Node can hold others Nodes or any object providing the
14
+ * TgdPainterNodeChild interface.
15
+ *
16
+ * Each Node is a local space for its children.
17
+ */
18
+ export declare class TgdPainterNode extends TgdPainter {
19
+ parentTransfo: TgdTransfo;
20
+ readonly transfo: TgdTransfo;
21
+ private readonly matrixTransfo;
22
+ private parentUpdateCount;
23
+ private updateCount;
24
+ private readonly childrenNodes;
25
+ private readonly children;
26
+ constructor(options?: Partial<TgdPainterNodeOptions>);
27
+ delete(): void;
28
+ add(...children: Array<TgdPainterNode | TgdPainterNodeChild>): void;
29
+ remove(...children: Array<TgdPainterNode | TgdPainterNodeChild>): void;
30
+ paint(time: number, delay: number): void;
31
+ }
32
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/painter/node/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,MAAM,WAAW,mBAAmB;IAChC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,MAAM,IAAI,IAAI,CAAA;IACd,aAAa,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAC,CAAA;CACxD;AAED;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,UAAU;IACnC,aAAa,EAAE,UAAU,CAAmB;IACnD,SAAgB,OAAO,aAAmB;IAE1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;gBAEzC,OAAO,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAMxD,MAAM,IAAI,IAAI;IASd,GAAG,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAC;IAU5D,MAAM,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAC;IAY/D,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CA2B3C"}