@tolokoban/tgd 2.0.33 → 2.0.35

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 (103) hide show
  1. package/lib/dist/code/coords.d.ts +5 -0
  2. package/lib/dist/code/coords.d.ts.map +1 -1
  3. package/lib/dist/code/coords.js +7 -2
  4. package/lib/dist/code/index.d.ts +3 -0
  5. package/lib/dist/code/index.d.ts.map +1 -1
  6. package/lib/dist/code/index.js +4 -1
  7. package/lib/dist/code/math.d.ts +38 -0
  8. package/lib/dist/code/math.d.ts.map +1 -0
  9. package/lib/dist/code/math.js +70 -0
  10. package/lib/dist/code/noise.d.ts +21 -0
  11. package/lib/dist/code/noise.d.ts.map +1 -0
  12. package/lib/dist/code/noise.js +279 -0
  13. package/lib/dist/code/space.d.ts +24 -0
  14. package/lib/dist/code/space.d.ts.map +1 -0
  15. package/lib/dist/code/space.js +42 -0
  16. package/lib/dist/code/transfo.d.ts +2 -2
  17. package/lib/dist/code/transfo.d.ts.map +1 -1
  18. package/lib/dist/code/transfo.js +2 -2
  19. package/lib/dist/geometry/geometry.d.ts +4 -0
  20. package/lib/dist/geometry/geometry.d.ts.map +1 -1
  21. package/lib/dist/geometry/geometry.js +11 -3
  22. package/lib/dist/input/pointer.d.ts +5 -0
  23. package/lib/dist/input/pointer.d.ts.map +1 -1
  24. package/lib/dist/input/pointer.js +30 -2
  25. package/lib/dist/material/camera-light.d.ts +4 -15
  26. package/lib/dist/material/camera-light.d.ts.map +1 -1
  27. package/lib/dist/material/camera-light.js +55 -47
  28. package/lib/dist/material/depth.d.ts +0 -8
  29. package/lib/dist/material/depth.d.ts.map +1 -1
  30. package/lib/dist/material/depth.js +12 -14
  31. package/lib/dist/material/diffuse.d.ts +1 -12
  32. package/lib/dist/material/diffuse.d.ts.map +1 -1
  33. package/lib/dist/material/diffuse.js +53 -44
  34. package/lib/dist/material/face-orientation.d.ts +0 -12
  35. package/lib/dist/material/face-orientation.d.ts.map +1 -1
  36. package/lib/dist/material/face-orientation.js +40 -37
  37. package/lib/dist/material/flat.d.ts +1 -11
  38. package/lib/dist/material/flat.d.ts.map +1 -1
  39. package/lib/dist/material/flat.js +7 -9
  40. package/lib/dist/material/ghost.d.ts +1 -9
  41. package/lib/dist/material/ghost.d.ts.map +1 -1
  42. package/lib/dist/material/ghost.js +15 -15
  43. package/lib/dist/material/hull.d.ts +1 -14
  44. package/lib/dist/material/hull.d.ts.map +1 -1
  45. package/lib/dist/material/hull.js +22 -25
  46. package/lib/dist/material/index.d.ts +0 -1
  47. package/lib/dist/material/index.d.ts.map +1 -1
  48. package/lib/dist/material/index.js +1 -2
  49. package/lib/dist/material/material.d.ts +52 -5
  50. package/lib/dist/material/material.d.ts.map +1 -1
  51. package/lib/dist/material/material.js +15 -18
  52. package/lib/dist/material/normals.d.ts +0 -9
  53. package/lib/dist/material/normals.d.ts.map +1 -1
  54. package/lib/dist/material/normals.js +10 -12
  55. package/lib/dist/material/toon.d.ts +3 -13
  56. package/lib/dist/material/toon.d.ts.map +1 -1
  57. package/lib/dist/material/toon.js +76 -63
  58. package/lib/dist/painter/fragment-dhader/filter.d.ts +31 -0
  59. package/lib/dist/painter/fragment-dhader/filter.d.ts.map +1 -0
  60. package/lib/dist/painter/fragment-dhader/filter.js +161 -0
  61. package/lib/dist/painter/fragment-dhader/index.d.ts +2 -0
  62. package/lib/dist/painter/fragment-dhader/index.d.ts.map +1 -0
  63. package/lib/dist/painter/fragment-dhader/index.js +2 -0
  64. package/lib/dist/painter/fragment-shader/filter.d.ts +31 -0
  65. package/lib/dist/painter/fragment-shader/filter.d.ts.map +1 -0
  66. package/lib/dist/painter/fragment-shader/filter.js +161 -0
  67. package/lib/dist/painter/fragment-shader/fragment-shader.d.ts +29 -0
  68. package/lib/dist/painter/fragment-shader/fragment-shader.d.ts.map +1 -0
  69. package/lib/dist/painter/fragment-shader/fragment-shader.js +70 -0
  70. package/lib/dist/painter/fragment-shader/index.d.ts +2 -0
  71. package/lib/dist/painter/fragment-shader/index.d.ts.map +1 -0
  72. package/lib/dist/painter/fragment-shader/index.js +2 -0
  73. package/lib/dist/painter/framebuffer-msaa.d.ts +5 -2
  74. package/lib/dist/painter/framebuffer-msaa.d.ts.map +1 -1
  75. package/lib/dist/painter/framebuffer-msaa.js +2 -2
  76. package/lib/dist/painter/index.d.ts +1 -0
  77. package/lib/dist/painter/index.d.ts.map +1 -1
  78. package/lib/dist/painter/index.js +2 -1
  79. package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
  80. package/lib/dist/painter/mesh/gltf/gltf.js +1 -1
  81. package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
  82. package/lib/dist/painter/mesh/mesh/mesh.js +9 -12
  83. package/lib/dist/painter/segments/segments.js +3 -2
  84. package/lib/dist/painter/x-ray/x-ray.d.ts +8 -2
  85. package/lib/dist/painter/x-ray/x-ray.d.ts.map +1 -1
  86. package/lib/dist/painter/x-ray/x-ray.js +1 -1
  87. package/lib/dist/types/input-pointer.d.ts +4 -0
  88. package/lib/dist/types/input-pointer.d.ts.map +1 -1
  89. package/lib/dist/utils/cyclic-buffer.d.ts +12 -0
  90. package/lib/dist/utils/cyclic-buffer.d.ts.map +1 -0
  91. package/lib/dist/utils/cyclic-buffer.js +26 -0
  92. package/lib/dist/utils/index.d.ts +1 -0
  93. package/lib/dist/utils/index.d.ts.map +1 -1
  94. package/lib/dist/utils/index.js +2 -1
  95. package/lib/dist/utils/math.d.ts +1 -0
  96. package/lib/dist/utils/math.d.ts.map +1 -1
  97. package/lib/dist/utils/math.js +8 -1
  98. package/lib/dist/utils/webgl.d.ts +1 -1
  99. package/lib/dist/utils/webgl.d.ts.map +1 -1
  100. package/lib/dist/utils/webgl.js +4 -1
  101. package/package.json +2 -2
  102. package/lib/dist/painter/segments/segments.frag +0 -22
  103. package/lib/dist/painter/segments/segments.vert +0 -121
@@ -1,8 +1,5 @@
1
- import { WebglAttributeType, WebglUniformType } from "../types";
2
1
  import { TgdMaterial } from "./material";
3
- import { TgdCodeBloc } from "../shader/code";
4
2
  import { TgdLight } from "../light";
5
- import { TgdProgram } from "../program";
6
3
  export type TgdMaterialFaceOrientationOptions = Partial<{
7
4
  light: TgdLight;
8
5
  ambient: TgdLight;
@@ -18,17 +15,8 @@ export declare class TgdMaterialFaceOrientation extends TgdMaterial {
18
15
  ambient: TgdLight;
19
16
  specularExponent: number;
20
17
  specularIntensity: number;
21
- readonly varyings: {
22
- [name: string]: WebglAttributeType;
23
- };
24
- readonly uniforms: {
25
- [name: string]: WebglUniformType;
26
- };
27
- readonly fragmentShaderCode: TgdCodeBloc;
28
- readonly vertexShaderCode: TgdCodeBloc;
29
18
  private readonly lightColor;
30
19
  private readonly ambientColor;
31
20
  constructor(options?: TgdMaterialFaceOrientationOptions);
32
- setUniforms(program: TgdProgram): void;
33
21
  }
34
22
  //# sourceMappingURL=face-orientation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"face-orientation.d.ts","sourceRoot":"","sources":["../../src/material/face-orientation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,MAAM,iCAAiC,GAAG,OAAO,CAAC;IACpD,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,QAAQ,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;CAC5B,CAAC,CAAA;AAEF;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,WAAW;IAChD,KAAK,WAEV;IACK,OAAO,WAAuD;IAC9D,gBAAgB,SAAK;IACrB,iBAAiB,SAAM;IAE9B,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChE,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAO7D;IACD,SAAgB,kBAAkB,EAAE,WAAW,CAAA;IAC/C,SAAgB,gBAAgB,EAAE,WAAW,CAAA;IAE7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;gBAEjC,OAAO,GAAE,iCAAsC;IAkC3D,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;CASzC"}
1
+ {"version":3,"file":"face-orientation.d.ts","sourceRoot":"","sources":["../../src/material/face-orientation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,MAAM,MAAM,iCAAiC,GAAG,OAAO,CAAC;IACpD,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,QAAQ,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;CAC5B,CAAC,CAAA;AAEF;;;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;CAyD9D"}
@@ -7,21 +7,51 @@ import { TgdLight } from "./../light/index.js";
7
7
  */
8
8
  export class TgdMaterialFaceOrientation extends TgdMaterial {
9
9
  constructor(options = {}) {
10
- super();
10
+ super({
11
+ uniforms: {
12
+ uniLight: "vec3",
13
+ uniLightDir: "vec3",
14
+ uniAmbient: "vec3",
15
+ uniSpecularExponent: "float",
16
+ uniSpecularIntensity: "float",
17
+ uniModelViewMatrix: "mat4",
18
+ },
19
+ varyings: {
20
+ varNormal: "vec3",
21
+ },
22
+ fragmentShaderCode: [
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;`,
35
+ ],
36
+ vertexShaderCode: ["varNormal = mat3(uniTransfoMatrix) * normal;"],
37
+ setUniforms: (program) => {
38
+ program.uniform3fv("uniLightDir", this.light.direction);
39
+ this.lightColor.from(this.light.color).scale(this.light.color.w);
40
+ program.uniform3fv("uniLight", this.lightColor);
41
+ this.ambientColor
42
+ .from(this.ambient.color)
43
+ .scale(this.ambient.color.w);
44
+ program.uniform3fv("uniAmbient", this.ambientColor);
45
+ program.uniform1f("uniSpecularExponent", this.specularExponent);
46
+ program.uniform1f("uniSpecularIntensity", this.specularIntensity);
47
+ },
48
+ });
11
49
  this.light = new TgdLight({
12
50
  direction: new TgdVec3(0.1, 0.2, -1).normalize(),
13
51
  });
14
52
  this.ambient = new TgdLight({ color: new TgdVec4(0.2, 0.1, 0, 0) });
15
53
  this.specularExponent = 20;
16
54
  this.specularIntensity = 0.5;
17
- this.uniforms = {
18
- uniLight: "vec3",
19
- uniLightDir: "vec3",
20
- uniAmbient: "vec3",
21
- uniSpecularExponent: "float",
22
- uniSpecularIntensity: "float",
23
- uniModelViewMatrix: "mat4",
24
- };
25
55
  this.lightColor = new TgdVec3();
26
56
  this.ambientColor = new TgdVec3();
27
57
  if (options.light) {
@@ -36,33 +66,6 @@ export class TgdMaterialFaceOrientation extends TgdMaterial {
36
66
  if (typeof options.specularIntensity === "number") {
37
67
  this.specularIntensity = options.specularIntensity;
38
68
  }
39
- this.fragmentShaderCode = [
40
- "vec3 normal = mat3(uniModelViewMatrix) * normalize(varNormal);",
41
- `float light = 1.0 - dot(normal, uniLightDir);`,
42
- `vec4 color = vec4(0.8 * (gl_FrontFacing ? vec3(0, .5, 1) : vec3(1, 0, 0)), 1.0);`,
43
- `float spec = max(0.0, reflect(uniLightDir, normal).z);`,
44
- `spec = pow(spec, uniSpecularExponent) * uniSpecularIntensity;`,
45
- `color = vec4(`,
46
- ` color.rgb * (`,
47
- ` uniAmbient + uniLight * light`,
48
- ` ) + vec3(spec),`,
49
- ` 1.0`,
50
- `);`,
51
- `return color;`,
52
- ];
53
- this.vertexShaderCode = ["varNormal = mat3(uniTransfoMatrix) * normal;"];
54
- this.varyings = {
55
- varNormal: "vec3",
56
- };
57
- }
58
- setUniforms(program) {
59
- program.uniform3fv("uniLightDir", this.light.direction);
60
- this.lightColor.from(this.light.color).scale(this.light.color.w);
61
- program.uniform3fv("uniLight", this.lightColor);
62
- this.ambientColor.from(this.ambient.color).scale(this.ambient.color.w);
63
- program.uniform3fv("uniAmbient", this.ambientColor);
64
- program.uniform1f("uniSpecularExponent", this.specularExponent);
65
- program.uniform1f("uniSpecularIntensity", this.specularIntensity);
66
69
  }
67
70
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZS1vcmllbnRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9mYWNlLW9yaWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQVVyQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsV0FBVztJQXVCdkQsWUFBWSxVQUE2QyxFQUFFO1FBQ3ZELEtBQUssRUFBRSxDQUFBO1FBdkJKLFVBQUssR0FBRyxJQUFJLFFBQVEsQ0FBQztZQUN4QixTQUFTLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRTtTQUNuRCxDQUFDLENBQUE7UUFDSyxZQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzlELHFCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUNyQixzQkFBaUIsR0FBRyxHQUFHLENBQUE7UUFHZCxhQUFRLEdBQXlDO1lBQzdELFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLG1CQUFtQixFQUFFLE9BQU87WUFDNUIsb0JBQW9CLEVBQUUsT0FBTztZQUM3QixrQkFBa0IsRUFBRSxNQUFNO1NBQzdCLENBQUE7UUFJZ0IsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7UUFDMUIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBSXpDLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUM5QixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFBO1FBQ2xDLENBQUM7UUFDRCxJQUFJLE9BQU8sT0FBTyxDQUFDLGdCQUFnQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUE7UUFDcEQsQ0FBQztRQUNELElBQUksT0FBTyxPQUFPLENBQUMsaUJBQWlCLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQTtRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHO1lBQ3RCLGdFQUFnRTtZQUNoRSwrQ0FBK0M7WUFDL0Msa0ZBQWtGO1lBQ2xGLHdEQUF3RDtZQUN4RCwrREFBK0Q7WUFDL0QsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQixtQ0FBbUM7WUFDbkMsbUJBQW1CO1lBQ25CLE9BQU87WUFDUCxJQUFJO1lBQ0osZUFBZTtTQUNsQixDQUFBO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsOENBQThDLENBQUMsQ0FBQTtRQUN4RSxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ1osU0FBUyxFQUFFLE1BQU07U0FDcEIsQ0FBQTtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBbUI7UUFDM0IsT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUN2RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNoRSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdEUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ25ELE9BQU8sQ0FBQyxTQUFTLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDL0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUNyRSxDQUFDO0NBQ0oifQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZS1vcmllbnRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9mYWNlLW9yaWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQVVyQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsV0FBVztJQVd2RCxZQUFZLFVBQTZDLEVBQUU7UUFDdkQsS0FBSyxDQUFDO1lBQ0YsUUFBUSxFQUFFO2dCQUNOLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLG1CQUFtQixFQUFFLE9BQU87Z0JBQzVCLG9CQUFvQixFQUFFLE9BQU87Z0JBQzdCLGtCQUFrQixFQUFFLE1BQU07YUFDN0I7WUFDRCxRQUFRLEVBQUU7Z0JBQ04sU0FBUyxFQUFFLE1BQU07YUFDcEI7WUFDRCxrQkFBa0IsRUFBRTtnQkFDaEIsZ0VBQWdFO2dCQUNoRSwrQ0FBK0M7Z0JBQy9DLGtGQUFrRjtnQkFDbEYsd0RBQXdEO2dCQUN4RCwrREFBK0Q7Z0JBQy9ELGVBQWU7Z0JBQ2YsaUJBQWlCO2dCQUNqQixtQ0FBbUM7Z0JBQ25DLG1CQUFtQjtnQkFDbkIsT0FBTztnQkFDUCxJQUFJO2dCQUNKLGVBQWU7YUFDbEI7WUFDRCxnQkFBZ0IsRUFBRSxDQUFDLDhDQUE4QyxDQUFDO1lBQ2xFLFdBQVcsRUFBRSxDQUFDLE9BQW1CLEVBQVEsRUFBRTtnQkFDdkMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtnQkFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ2hFLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtnQkFDL0MsSUFBSSxDQUFDLFlBQVk7cUJBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO3FCQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ2hDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtnQkFDbkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtnQkFDL0QsT0FBTyxDQUFDLFNBQVMsQ0FDYixzQkFBc0IsRUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUN6QixDQUFBO1lBQ0wsQ0FBQztTQUNKLENBQUMsQ0FBQTtRQXBEQyxVQUFLLEdBQUcsSUFBSSxRQUFRLENBQUM7WUFDeEIsU0FBUyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7U0FDbkQsQ0FBQyxDQUFBO1FBQ0ssWUFBTyxHQUFHLElBQUksUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM5RCxxQkFBZ0IsR0FBRyxFQUFFLENBQUE7UUFDckIsc0JBQWlCLEdBQUcsR0FBRyxDQUFBO1FBRWIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7UUFDMUIsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBOEN6QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUE7UUFDOUIsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUNsQyxDQUFDO1FBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFBO1FBQ3BELENBQUM7UUFDRCxJQUFJLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUE7UUFDdEQsQ0FBQztJQUNMLENBQUM7Q0FDSiJ9
@@ -1,20 +1,10 @@
1
- import { ArrayNumber4, WebglAttributeType, WebglUniformType } from "../types";
1
+ import { ArrayNumber4 } from "../types";
2
2
  import { TgdVec4 } from "../math";
3
3
  import { TgdMaterial } from "./material";
4
- import { TgdCodeBloc } from "../shader/code";
5
4
  export type TgdMaterialFlatOptions = Partial<{
6
5
  color: ArrayNumber4 | TgdVec4;
7
6
  }>;
8
7
  export declare class TgdMaterialFlat extends TgdMaterial {
9
- readonly varyings: {
10
- [name: string]: WebglAttributeType;
11
- };
12
- readonly uniforms: {
13
- [name: string]: WebglUniformType;
14
- };
15
- readonly fragmentShaderCode: TgdCodeBloc;
16
- readonly vertexShaderCode: TgdCodeBloc;
17
8
  constructor(options?: TgdMaterialFlatOptions);
18
- setUniforms(): void;
19
9
  }
20
10
  //# sourceMappingURL=flat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flat.d.ts","sourceRoot":"","sources":["../../src/material/flat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAA;CAChC,CAAC,CAAA;AAIF,qBAAa,eAAgB,SAAQ,WAAW;IAC5C,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChE,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAE7D;IACD,SAAgB,kBAAkB,EAAE,WAAW,CAAA;IAC/C,SAAgB,gBAAgB,EAAE,WAAW,CAAA;gBAEjC,OAAO,GAAE,sBAA2B;IAQhD,WAAW,IAAI,IAAI;CACtB"}
1
+ {"version":3,"file":"flat.d.ts","sourceRoot":"","sources":["../../src/material/flat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAA;CAChC,CAAC,CAAA;AAIF,qBAAa,eAAgB,SAAQ,WAAW;gBAChC,OAAO,GAAE,sBAA2B;CAUnD"}
@@ -4,15 +4,13 @@ const DEFAULT_COLOR = [0, 0, 0, 1];
4
4
  export class TgdMaterialFlat extends TgdMaterial {
5
5
  constructor(options = {}) {
6
6
  var _a;
7
- super();
8
- this.uniforms = {
9
- uniColor: "vec4",
10
- };
11
7
  const color = new TgdVec4((_a = options.color) !== null && _a !== void 0 ? _a : DEFAULT_COLOR);
12
- this.fragmentShaderCode = [`return vec4(${color.join(", ")});`];
13
- this.vertexShaderCode = [];
14
- this.varyings = {};
8
+ super({
9
+ uniforms: {
10
+ uniColor: "vec4",
11
+ },
12
+ fragmentShaderCode: [`return vec4(${color.join(", ")});`],
13
+ });
15
14
  }
16
- setUniforms() { }
17
15
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9mbGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQU94QyxNQUFNLGFBQWEsR0FBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUVoRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBUTVDLFlBQVksVUFBa0MsRUFBRTs7UUFDNUMsS0FBSyxFQUFFLENBQUE7UUFQSyxhQUFRLEdBQXlDO1lBQzdELFFBQVEsRUFBRSxNQUFNO1NBQ25CLENBQUE7UUFNRyxNQUFNLEtBQUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFBLE9BQU8sQ0FBQyxLQUFLLG1DQUFJLGFBQWEsQ0FBQyxDQUFBO1FBQ3pELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLGVBQWUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0lBRUQsV0FBVyxLQUFVLENBQUM7Q0FDekIifQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9mbGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQU14QyxNQUFNLGFBQWEsR0FBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUVoRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBQzVDLFlBQVksVUFBa0MsRUFBRTs7UUFDNUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBQSxPQUFPLENBQUMsS0FBSyxtQ0FBSSxhQUFhLENBQUMsQ0FBQTtRQUV6RCxLQUFLLENBQUM7WUFDRixRQUFRLEVBQUU7Z0JBQ04sUUFBUSxFQUFFLE1BQU07YUFDbkI7WUFDRCxrQkFBa0IsRUFBRSxDQUFDLGVBQWUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQzVELENBQUMsQ0FBQTtJQUNOLENBQUM7Q0FDSiJ9
@@ -1,20 +1,12 @@
1
- import { ArrayNumber4, WebglAttributeType } from "../types";
1
+ import { ArrayNumber4 } from "../types";
2
2
  import { TgdVec4 } from "../math";
3
3
  import { TgdMaterial } from "./material";
4
- import { TgdCodeBloc } from "../shader/code";
5
- import { TgdProgram } from "../program";
6
4
  export type TgdMaterialGhostOptions = Partial<{
7
5
  color: ArrayNumber4 | TgdVec4;
8
6
  exponent: number;
9
7
  intensity: number;
10
8
  }>;
11
9
  export declare class TgdMaterialGhost extends TgdMaterial {
12
- readonly varyings: {
13
- [name: string]: WebglAttributeType;
14
- };
15
- readonly fragmentShaderCode: TgdCodeBloc;
16
- readonly vertexShaderCode: TgdCodeBloc;
17
10
  constructor({ color, exponent, intensity, }?: TgdMaterialGhostOptions);
18
- setUniforms(_program: TgdProgram): void;
19
11
  }
20
12
  //# sourceMappingURL=ghost.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ghost.d.ts","sourceRoot":"","sources":["../../src/material/ghost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC;IAC1C,KAAK,EAAE,YAAY,GAAG,OAAO,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAC,CAAA;AAIF,qBAAa,gBAAiB,SAAQ,WAAW;IAC7C,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChE,SAAgB,kBAAkB,EAAE,WAAW,CAAA;IAC/C,SAAgB,gBAAgB,EAAE,WAAW,CAAA;gBAEjC,EACR,KAAqB,EACrB,QAAY,EACZ,SAAa,GAChB,GAAE,uBAA4B;IAkB/B,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;CAC1C"}
1
+ {"version":3,"file":"ghost.d.ts","sourceRoot":"","sources":["../../src/material/ghost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC;IAC1C,KAAK,EAAE,YAAY,GAAG,OAAO,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAC,CAAA;AAIF,qBAAa,gBAAiB,SAAQ,WAAW;gBACjC,EACR,KAAqB,EACrB,QAAY,EACZ,SAAa,GAChB,GAAE,uBAA4B;CAkBlC"}
@@ -3,20 +3,20 @@ import { TgdMaterial } from "./material.js";
3
3
  const DEFAULT_COLOR = new TgdVec4(0.6, 1, 0.9, 1);
4
4
  export class TgdMaterialGhost extends TgdMaterial {
5
5
  constructor({ color = DEFAULT_COLOR, exponent = 3, intensity = 3, } = {}) {
6
- super();
7
- this.fragmentShaderCode = [
8
- `float light = 1.0 - varNormal.z;`,
9
- `light = pow(light, ${exponent.toFixed(6)});`,
10
- `vec4 color = vec4(${color.join(", ")});`,
11
- `return vec4(color.rgb * ${intensity.toFixed(6)}, color.a) * light;`,
12
- ];
13
- this.vertexShaderCode = [
14
- "varNormal = mat3(uniModelViewMatrix) * normal;",
15
- ];
16
- this.varyings = {
17
- varNormal: "vec3",
18
- };
6
+ super({
7
+ fragmentShaderCode: [
8
+ `float light = 1.0 - varNormal.z;`,
9
+ `light = pow(light, ${exponent.toFixed(6)});`,
10
+ `vec4 color = vec4(${color.join(", ")});`,
11
+ `return vec4(color.rgb * ${intensity.toFixed(6)}, color.a) * light;`,
12
+ ],
13
+ vertexShaderCode: [
14
+ "varNormal = mat3(uniModelViewMatrix) * normal;",
15
+ ],
16
+ varyings: {
17
+ varNormal: "vec3",
18
+ },
19
+ });
19
20
  }
20
- setUniforms(_program) { }
21
21
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2hvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvZ2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBVXhDLE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRWpELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUFXO0lBSzdDLFlBQVksRUFDUixLQUFLLEdBQUcsYUFBYSxFQUNyQixRQUFRLEdBQUcsQ0FBQyxFQUNaLFNBQVMsR0FBRyxDQUFDLE1BQ1ksRUFBRTtRQUMzQixLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxrQkFBa0IsR0FBRztZQUN0QixrQ0FBa0M7WUFDbEMsc0JBQXNCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDN0MscUJBQXFCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDekMsMkJBQTJCLFNBQVMsQ0FBQyxPQUFPLENBQ3hDLENBQUMsQ0FDSixxQkFBcUI7U0FDekIsQ0FBQTtRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRztZQUNwQixnREFBZ0Q7U0FDbkQsQ0FBQTtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDWixTQUFTLEVBQUUsTUFBTTtTQUNwQixDQUFBO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFvQixJQUFTLENBQUM7Q0FDN0MifQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2hvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvZ2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBUXhDLE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRWpELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxXQUFXO0lBQzdDLFlBQVksRUFDUixLQUFLLEdBQUcsYUFBYSxFQUNyQixRQUFRLEdBQUcsQ0FBQyxFQUNaLFNBQVMsR0FBRyxDQUFDLE1BQ1ksRUFBRTtRQUMzQixLQUFLLENBQUM7WUFDRixrQkFBa0IsRUFBRTtnQkFDaEIsa0NBQWtDO2dCQUNsQyxzQkFBc0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDN0MscUJBQXFCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7Z0JBQ3pDLDJCQUEyQixTQUFTLENBQUMsT0FBTyxDQUN4QyxDQUFDLENBQ0oscUJBQXFCO2FBQ3pCO1lBQ0QsZ0JBQWdCLEVBQUU7Z0JBQ2QsZ0RBQWdEO2FBQ25EO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLFNBQVMsRUFBRSxNQUFNO2FBQ3BCO1NBQ0osQ0FBQyxDQUFBO0lBQ04sQ0FBQztDQUNKIn0=
@@ -1,9 +1,6 @@
1
- import { ArrayNumber4, WebglAttributeType, WebglUniformType } from "../types";
1
+ import { ArrayNumber4 } from "../types";
2
2
  import { TgdVec4 } from "../math";
3
3
  import { TgdMaterial } from "./material";
4
- import { TgdCodeBloc } from "../shader/code";
5
- import { TgdProgram } from "../program";
6
- import { TgdPainterStateOptions } from "../painter";
7
4
  export type TgdMaterialHullOptions = Partial<{
8
5
  color: ArrayNumber4 | TgdVec4;
9
6
  /**
@@ -23,16 +20,6 @@ export declare class TgdMaterialHull extends TgdMaterial {
23
20
  color: TgdVec4;
24
21
  thickness: number;
25
22
  zShift: number;
26
- readonly varyings: {
27
- [name: string]: WebglAttributeType;
28
- };
29
- readonly uniforms: {
30
- [name: string]: WebglUniformType;
31
- };
32
- readonly fragmentShaderCode: TgdCodeBloc;
33
- readonly vertexShaderCode: TgdCodeBloc;
34
- protected readonly state: Partial<TgdPainterStateOptions>;
35
23
  constructor(options?: TgdMaterialHullOptions);
36
- setUniforms(program: TgdProgram): void;
37
24
  }
38
25
  //# sourceMappingURL=hull.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hull.d.ts","sourceRoot":"","sources":["../../src/material/hull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAErD,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAA;IAC7B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CACpB,CAAC,CAAA;AAIF,qBAAa,eAAgB,SAAQ,WAAW;IACrC,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,SAAI;IACb,MAAM,SAAO;IAEpB,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChE,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAI7D;IACD,SAAgB,kBAAkB,EAAE,WAAW,CAAA;IAC/C,SAAgB,gBAAgB,EAAE,WAAW,CAAA;IAE7C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAExD;gBAEW,OAAO,GAAE,sBAA2B;IAiBhD,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;CAKzC"}
1
+ {"version":3,"file":"hull.d.ts","sourceRoot":"","sources":["../../src/material/hull.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAwC,MAAM,YAAY,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAKxC,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAA;IAC7B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CACpB,CAAC,CAAA;AAIF,qBAAa,eAAgB,SAAQ,WAAW;IACrC,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,SAAI;IACb,MAAM,SAAO;gBAER,OAAO,GAAE,sBAA2B;CA2BnD"}
@@ -5,35 +5,32 @@ const DEFAULT_COLOR = [0.111, 0.333, 0.999, 1];
5
5
  export class TgdMaterialHull extends TgdMaterial {
6
6
  constructor(options = {}) {
7
7
  var _a, _b, _c;
8
- super();
8
+ super({
9
+ uniforms: {
10
+ uniColor: "vec4",
11
+ uniExpansion: "float",
12
+ uniZ: "float",
13
+ },
14
+ fragmentShaderCode: [`return uniColor;`],
15
+ vertexShaderCode: [
16
+ "vec3 n = normalize(vec3((mat3(uniModelViewMatrix) * normal).xy, 0));",
17
+ "float size = uniExpansion * gl_Position.w;",
18
+ "n *= size;",
19
+ "gl_Position.xy += n.xy;",
20
+ "gl_Position.z += size * uniZ;",
21
+ ],
22
+ setUniforms: (program) => {
23
+ program.uniform4fv("uniColor", this.color);
24
+ program.uniform1f("uniExpansion", this.thickness * 0.01);
25
+ program.uniform1f("uniZ", this.zShift);
26
+ },
27
+ state: { cull: webglPresetCull.front },
28
+ });
9
29
  this.thickness = 1;
10
30
  this.zShift = 0.01;
11
- this.uniforms = {
12
- uniColor: "vec4",
13
- uniExpansion: "float",
14
- uniZ: "float",
15
- };
16
- this.state = {
17
- cull: webglPresetCull.front,
18
- };
19
31
  this.color = new TgdVec4((_a = options.color) !== null && _a !== void 0 ? _a : DEFAULT_COLOR);
20
32
  this.thickness = (_b = options.expansion) !== null && _b !== void 0 ? _b : 1;
21
33
  this.zShift = (_c = options.zShift) !== null && _c !== void 0 ? _c : 0.01;
22
- this.fragmentShaderCode = [`return uniColor;`];
23
- this.vertexShaderCode = [];
24
- this.varyings = {};
25
- this.vertexShaderCode = [
26
- "vec3 n = normalize(vec3((mat3(uniModelViewMatrix) * normal).xy, 0));",
27
- "float size = uniExpansion * gl_Position.w;",
28
- "n *= size;",
29
- "gl_Position.xy += n.xy;",
30
- "gl_Position.z += size * uniZ;",
31
- ];
32
- }
33
- setUniforms(program) {
34
- program.uniform4fv("uniColor", this.color);
35
- program.uniform1f("uniExpansion", this.thickness * 0.01);
36
- program.uniform1f("uniZ", this.zShift);
37
34
  }
38
35
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9odWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBcUJ4QyxNQUFNLGFBQWEsR0FBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUU1RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBa0I1QyxZQUFZLFVBQWtDLEVBQUU7O1FBQzVDLEtBQUssRUFBRSxDQUFBO1FBakJKLGNBQVMsR0FBRyxDQUFDLENBQUE7UUFDYixXQUFNLEdBQUcsSUFBSSxDQUFBO1FBR0osYUFBUSxHQUF5QztZQUM3RCxRQUFRLEVBQUUsTUFBTTtZQUNoQixZQUFZLEVBQUUsT0FBTztZQUNyQixJQUFJLEVBQUUsT0FBTztTQUNoQixDQUFBO1FBSWtCLFVBQUssR0FBb0M7WUFDeEQsSUFBSSxFQUFFLGVBQWUsQ0FBQyxLQUFLO1NBQzlCLENBQUE7UUFJRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLE1BQUEsT0FBTyxDQUFDLEtBQUssbUNBQUksYUFBYSxDQUFDLENBQUE7UUFDeEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFBLE9BQU8sQ0FBQyxTQUFTLG1DQUFJLENBQUMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQUEsT0FBTyxDQUFDLE1BQU0sbUNBQUksSUFBSSxDQUFBO1FBQ3BDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDcEIsc0VBQXNFO1lBQ3RFLDRDQUE0QztZQUM1QyxZQUFZO1lBQ1oseUJBQXlCO1lBQ3pCLCtCQUErQjtTQUNsQyxDQUFBO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFtQjtRQUMzQixPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUN4RCxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUMsQ0FBQztDQUNKIn0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9odWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBcUJ4QyxNQUFNLGFBQWEsR0FBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUU1RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBSzVDLFlBQVksVUFBa0MsRUFBRTs7UUFDNUMsS0FBSyxDQUFDO1lBQ0YsUUFBUSxFQUFFO2dCQUNOLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixZQUFZLEVBQUUsT0FBTztnQkFDckIsSUFBSSxFQUFFLE9BQU87YUFDaEI7WUFDRCxrQkFBa0IsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQ3hDLGdCQUFnQixFQUFFO2dCQUNkLHNFQUFzRTtnQkFDdEUsNENBQTRDO2dCQUM1QyxZQUFZO2dCQUNaLHlCQUF5QjtnQkFDekIsK0JBQStCO2FBQ2xDO1lBQ0QsV0FBVyxFQUFFLENBQUMsT0FBbUIsRUFBUSxFQUFFO2dCQUN2QyxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQzFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUE7Z0JBQ3hELE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUMxQyxDQUFDO1lBQ0QsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxLQUFLLEVBQUU7U0FDekMsQ0FBQyxDQUFBO1FBeEJDLGNBQVMsR0FBRyxDQUFDLENBQUE7UUFDYixXQUFNLEdBQUcsSUFBSSxDQUFBO1FBeUJoQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLE1BQUEsT0FBTyxDQUFDLEtBQUssbUNBQUksYUFBYSxDQUFDLENBQUE7UUFDeEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFBLE9BQU8sQ0FBQyxTQUFTLG1DQUFJLENBQUMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQUEsT0FBTyxDQUFDLE1BQU0sbUNBQUksSUFBSSxDQUFBO0lBQ3hDLENBQUM7Q0FDSiJ9
@@ -6,6 +6,5 @@ export * from "./ghost";
6
6
  export * from "./hull";
7
7
  export * from "./material";
8
8
  export * from "./normals";
9
- export * from "./solid";
10
9
  export * from "./toon";
11
10
  //# 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,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/material/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA"}
@@ -6,6 +6,5 @@ export * from "./ghost.js";
6
6
  export * from "./hull.js";
7
7
  export * from "./material.js";
8
8
  export * from "./normals.js";
9
- export * from "./solid.js";
10
9
  export * from "./toon.js";
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFFBQVEsQ0FBQSJ9
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxXQUFXLENBQUE7QUFDekIsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLFNBQVMsQ0FBQTtBQUN2QixjQUFjLFFBQVEsQ0FBQTtBQUN0QixjQUFjLFlBQVksQ0FBQTtBQUMxQixjQUFjLFdBQVcsQ0FBQTtBQUN6QixjQUFjLFFBQVEsQ0FBQSJ9
@@ -1,7 +1,51 @@
1
- import { TgdCodeBloc } from "../shader/code";
1
+ import { TgdCodeBloc, TgdCodeFunctions } from "../shader/code";
2
2
  import { TgdPainterStateOptions, WebglAttributeType, WebglUniformType } from "..";
3
3
  import { TgdProgram } from "../program";
4
- export declare abstract class TgdMaterial {
4
+ export interface TgdMaterialOptions {
5
+ /**
6
+ * Name of the vec4 attribute holding the vertex position.
7
+ * Default to `POSITION`.
8
+ */
9
+ attPosition: string;
10
+ /**
11
+ * Name of the vec3 attribute holding the normal.
12
+ * Default to `NORMAL`.
13
+ */
14
+ attNormal: string;
15
+ /**
16
+ * Name of the vec2 attribute holding the texture coordinates (UV).
17
+ * Default to `TEXCOORD_0`
18
+ */
19
+ attUV: string;
20
+ varyings: {
21
+ [name: string]: WebglAttributeType;
22
+ };
23
+ uniforms: {
24
+ [name: string]: WebglUniformType;
25
+ };
26
+ fragmentShaderCode: TgdCodeBloc;
27
+ extraFragmentShaderFunctions: TgdCodeFunctions;
28
+ vertexShaderCode: TgdCodeBloc;
29
+ extraVertexShaderFunctions: TgdCodeFunctions;
30
+ /**
31
+ * Body of the function `vec4 getPosition(vec4 pos)` of the vertex shader.
32
+ *
33
+ * By default, this body is `return pos;`.
34
+ * Yo can use this code to apply any transformation on the vertex position
35
+ * before convertion to screen space.
36
+ */
37
+ vertexShaderCodeForGetPosition: TgdCodeBloc;
38
+ /**
39
+ * If this function is defined, it will be called at each frame.
40
+ * Most of the time, it is used tu update the uniforms.
41
+ */
42
+ setUniforms(program: TgdProgram, time: number, delay: number): void;
43
+ /**
44
+ * You may need specific CULL, BLEND, DEPTH, ...
45
+ */
46
+ state: Partial<TgdPainterStateOptions>;
47
+ }
48
+ export declare class TgdMaterial {
5
49
  attPosition: string;
6
50
  attNormal: string;
7
51
  attUV: string;
@@ -23,11 +67,13 @@ export declare abstract class TgdMaterial {
23
67
  /**
24
68
  * The code of a `vec4 applyMaterial()` function.
25
69
  */
26
- abstract readonly fragmentShaderCode: TgdCodeBloc;
70
+ readonly fragmentShaderCode: TgdCodeBloc;
71
+ readonly extraFragmentShaderFunctions: TgdCodeFunctions;
27
72
  /**
28
73
  * The code of a `void applyMaterial(position, normal, uv)` function.
29
74
  */
30
- abstract readonly vertexShaderCode: TgdCodeBloc;
75
+ readonly vertexShaderCode: TgdCodeBloc;
76
+ readonly extraVertexShaderFunctions: TgdCodeFunctions;
31
77
  /**
32
78
  * Body of the function `vec4 getPosition(vec4 pos)` of the vertex shader.
33
79
  *
@@ -36,8 +82,9 @@ export declare abstract class TgdMaterial {
36
82
  * before convertion to screen space.
37
83
  */
38
84
  vertexShaderCodeForGetPosition?: TgdCodeBloc;
39
- abstract setUniforms(program: TgdProgram, time: number, delay: number): void;
85
+ readonly setUniforms: undefined | ((program: TgdProgram, time: number, delay: number) => void);
40
86
  protected readonly state: Partial<TgdPainterStateOptions>;
41
87
  applyState(gl: WebGL2RenderingContext, action: () => void): void;
88
+ constructor({ attPosition, attNormal, attUV, varyings, uniforms, fragmentShaderCode, extraFragmentShaderFunctions, vertexShaderCode, extraVertexShaderFunctions, vertexShaderCodeForGetPosition, setUniforms, state, }: Partial<TgdMaterialOptions>);
42
89
  }
43
90
  //# sourceMappingURL=material.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../../src/material/material.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAEH,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,IAAI,CAAA;AACX,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,8BAAsB,WAAW;IACtB,WAAW,SAAa;IACxB,SAAS,SAAW;IACpB,KAAK,SAAe;IAE3B;;;;;;;;OAQG;IACH,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAK;IAErE,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAK;IAEnE;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAA;IAEjD;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAA;IAE/C;;;;;;OAMG;IACH,8BAA8B,CAAC,EAAE,WAAW,CAAA;IAE5C,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAE5E,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAK;IAEvD,UAAU,CAAC,EAAE,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,IAAI;CASnE"}
1
+ {"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../../src/material/material.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAEH,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,IAAI,CAAA;AACX,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,WAAW,kBAAkB;IAC/B;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChD,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAA;IAC9C,kBAAkB,EAAE,WAAW,CAAA;IAC/B,4BAA4B,EAAE,gBAAgB,CAAA;IAC9C,gBAAgB,EAAE,WAAW,CAAA;IAC7B,0BAA0B,EAAE,gBAAgB,CAAA;IAC5C;;;;;;OAMG;IACH,8BAA8B,EAAE,WAAW,CAAA;IAC3C;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACnE;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAA;CACzC;AAED,qBAAa,WAAW;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IAEpB;;;;;;;;OAQG;IACH,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAEhE,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAA;IAE9D;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAA;IAExC,QAAQ,CAAC,4BAA4B,EAAE,gBAAgB,CAAA;IAEvD;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAA;IAEtC,QAAQ,CAAC,0BAA0B,EAAE,gBAAgB,CAAA;IAErD;;;;;;OAMG;IACH,8BAA8B,CAAC,EAAE,WAAW,CAAA;IAE5C,QAAQ,CAAC,WAAW,EACd,SAAS,GACT,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,CAAA;IAElE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAElD,UAAU,CAAC,EAAE,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,IAAI;gBAUpD,EACR,WAAwB,EACxB,SAAoB,EACpB,KAAoB,EACpB,QAAa,EACb,QAAa,EACb,kBAAqD,EACrD,4BAAiC,EACjC,gBAAqB,EACrB,0BAA+B,EAC/B,8BAA8C,EAC9C,WAAW,EACX,KAAU,GACb,EAAE,OAAO,CAAC,kBAAkB,CAAC;CAcjC"}
@@ -1,24 +1,21 @@
1
1
  import { TgdPainterState, } from "../index.js";
2
2
  export class TgdMaterial {
3
- constructor() {
4
- this.attPosition = "POSITION";
5
- this.attNormal = "NORMAL";
6
- this.attUV = "TEXCOORD_0";
7
- /**
8
- * Example:
9
- * ```
10
- * {
11
- * varNormal: "vec3",
12
- * varUV: "vec2"
13
- * }
14
- * ```
15
- */
16
- this.varyings = {};
17
- this.uniforms = {};
18
- this.state = {};
19
- }
20
3
  applyState(gl, action) {
21
4
  TgdPainterState.do(Object.assign({ gl }, this.state), action);
22
5
  }
6
+ constructor({ attPosition = "POSITION", attNormal = "NORMAL", attUV = "TEXCOORD_0", varyings = {}, uniforms = {}, fragmentShaderCode = ["return vec4(1, .666, .1, 1);"], extraFragmentShaderFunctions = {}, vertexShaderCode = [], extraVertexShaderFunctions = {}, vertexShaderCodeForGetPosition = "return pos;", setUniforms, state = {}, }) {
7
+ this.attPosition = attPosition;
8
+ this.attNormal = attNormal;
9
+ this.attUV = attUV;
10
+ this.varyings = varyings;
11
+ this.uniforms = uniforms;
12
+ this.fragmentShaderCode = fragmentShaderCode;
13
+ this.extraFragmentShaderFunctions = extraFragmentShaderFunctions;
14
+ this.vertexShaderCode = vertexShaderCode;
15
+ this.extraVertexShaderFunctions = extraVertexShaderFunctions;
16
+ this.vertexShaderCodeForGetPosition = vertexShaderCodeForGetPosition;
17
+ this.setUniforms = setUniforms;
18
+ this.state = state;
19
+ }
23
20
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILGVBQWUsR0FJbEIsTUFBTSxJQUFJLENBQUE7QUFHWCxNQUFNLE9BQWdCLFdBQVc7SUFBakM7UUFDVyxnQkFBVyxHQUFHLFVBQVUsQ0FBQTtRQUN4QixjQUFTLEdBQUcsUUFBUSxDQUFBO1FBQ3BCLFVBQUssR0FBRyxZQUFZLENBQUE7UUFFM0I7Ozs7Ozs7O1dBUUc7UUFDYSxhQUFRLEdBQTJDLEVBQUUsQ0FBQTtRQUVyRCxhQUFRLEdBQXlDLEVBQUUsQ0FBQTtRQXVCaEQsVUFBSyxHQUFvQyxFQUFFLENBQUE7SUFXbEUsQ0FBQztJQVRVLFVBQVUsQ0FBQyxFQUEwQixFQUFFLE1BQWtCO1FBQzVELGVBQWUsQ0FBQyxFQUFFLGlCQUVWLEVBQUUsSUFDQyxJQUFJLENBQUMsS0FBSyxHQUVqQixNQUFNLENBQ1QsQ0FBQTtJQUNMLENBQUM7Q0FDSiJ9
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWF0ZXJpYWwvbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILGVBQWUsR0FJbEIsTUFBTSxJQUFJLENBQUE7QUE0Q1gsTUFBTSxPQUFPLFdBQVc7SUErQ2IsVUFBVSxDQUFDLEVBQTBCLEVBQUUsTUFBa0I7UUFDNUQsZUFBZSxDQUFDLEVBQUUsaUJBRVYsRUFBRSxJQUNDLElBQUksQ0FBQyxLQUFLLEdBRWpCLE1BQU0sQ0FDVCxDQUFBO0lBQ0wsQ0FBQztJQUVELFlBQVksRUFDUixXQUFXLEdBQUcsVUFBVSxFQUN4QixTQUFTLEdBQUcsUUFBUSxFQUNwQixLQUFLLEdBQUcsWUFBWSxFQUNwQixRQUFRLEdBQUcsRUFBRSxFQUNiLFFBQVEsR0FBRyxFQUFFLEVBQ2Isa0JBQWtCLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxFQUNyRCw0QkFBNEIsR0FBRyxFQUFFLEVBQ2pDLGdCQUFnQixHQUFHLEVBQUUsRUFDckIsMEJBQTBCLEdBQUcsRUFBRSxFQUMvQiw4QkFBOEIsR0FBRyxhQUFhLEVBQzlDLFdBQVcsRUFDWCxLQUFLLEdBQUcsRUFBRSxHQUNnQjtRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUE7UUFDNUMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLDRCQUE0QixDQUFBO1FBQ2hFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQTtRQUN4QyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsMEJBQTBCLENBQUE7UUFDNUQsSUFBSSxDQUFDLDhCQUE4QixHQUFHLDhCQUE4QixDQUFBO1FBQ3BFLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ3RCLENBQUM7Q0FDSiJ9
@@ -1,14 +1,5 @@
1
- import { WebglAttributeType } from "../types";
2
1
  import { TgdMaterial } from "./material";
3
- import { TgdCodeBloc } from "../shader/code";
4
- import { TgdProgram } from "../program";
5
2
  export declare class TgdMaterialNormals extends TgdMaterial {
6
- readonly varyings: {
7
- [name: string]: WebglAttributeType;
8
- };
9
- readonly fragmentShaderCode: TgdCodeBloc;
10
- readonly vertexShaderCode: TgdCodeBloc;
11
3
  constructor();
12
- setUniforms(_program: TgdProgram): void;
13
4
  }
14
5
  //# sourceMappingURL=normals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"normals.d.ts","sourceRoot":"","sources":["../../src/material/normals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,qBAAa,kBAAmB,SAAQ,WAAW;IAC/C,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChE,SAAgB,kBAAkB,EAAE,WAAW,CAAA;IAC/C,SAAgB,gBAAgB,EAAE,WAAW,CAAA;;IAe7C,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;CAC1C"}
1
+ {"version":3,"file":"normals.d.ts","sourceRoot":"","sources":["../../src/material/normals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,qBAAa,kBAAmB,SAAQ,WAAW;;CAYlD"}
@@ -1,17 +1,15 @@
1
1
  import { TgdMaterial } from "./material.js";
2
2
  export class TgdMaterialNormals extends TgdMaterial {
3
3
  constructor() {
4
- super();
5
- this.fragmentShaderCode = [
6
- `vec3 color = vec3(1.0) + normalize(varNormal);`,
7
- `color *= 0.5;`,
8
- `return vec4(color, 1.0);`,
9
- ];
10
- this.vertexShaderCode = ["varNormal = NORMAL;"];
11
- this.varyings = {
12
- varNormal: "vec3",
13
- };
4
+ super({
5
+ varyings: { varNormal: "vec3" },
6
+ fragmentShaderCode: [
7
+ `vec3 color = vec3(1.0) + normalize(varNormal);`,
8
+ `color *= 0.5;`,
9
+ `return vec4(color, 1.0);`,
10
+ ],
11
+ vertexShaderCode: ["varNormal = NORMAL;"],
12
+ });
14
13
  }
15
- setUniforms(_program) { }
16
14
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9ub3JtYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFJeEMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQVc7SUFLL0M7UUFDSSxLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxrQkFBa0IsR0FBRztZQUN0QixnREFBZ0Q7WUFDaEQsZUFBZTtZQUNmLDBCQUEwQjtTQUM3QixDQUFBO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQTtRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ1osU0FBUyxFQUFFLE1BQU07U0FDcEIsQ0FBQTtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBb0IsSUFBUyxDQUFDO0NBQzdDIn0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9ub3JtYWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFeEMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQVc7SUFDL0M7UUFDSSxLQUFLLENBQUM7WUFDRixRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO1lBQy9CLGtCQUFrQixFQUFFO2dCQUNoQixnREFBZ0Q7Z0JBQ2hELGVBQWU7Z0JBQ2YsMEJBQTBCO2FBQzdCO1lBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztTQUM1QyxDQUFDLENBQUE7SUFDTixDQUFDO0NBQ0oifQ==
@@ -1,10 +1,8 @@
1
- import { ArrayNumber4, WebglAttributeType, WebglUniformType } from "../types";
1
+ import { ArrayNumber4 } from "../types";
2
2
  import { TgdVec4 } from "../math";
3
3
  import { TgdMaterial } from "./material";
4
- import { TgdCodeBloc } from "../shader/code";
5
4
  import { TgdLight } from "../light";
6
5
  import { TgdTexture2D } from "../texture";
7
- import { TgdProgram } from "../program";
8
6
  export type TgdMaterialToonOptions = Partial<{
9
7
  color: TgdVec4 | ArrayNumber4 | TgdTexture2D;
10
8
  light: TgdLight;
@@ -12,6 +10,7 @@ export type TgdMaterialToonOptions = Partial<{
12
10
  specularSharpness: number;
13
11
  specularSize: number;
14
12
  specularIntensity: number;
13
+ shades: number;
15
14
  }>;
16
15
  export type TgdMaterialToonShades = number;
17
16
  export declare class TgdMaterialToon extends TgdMaterial {
@@ -20,19 +19,10 @@ export declare class TgdMaterialToon extends TgdMaterial {
20
19
  specularSharpness: number;
21
20
  specularSize: number;
22
21
  specularIntensity: number;
23
- readonly varyings: {
24
- [name: string]: WebglAttributeType;
25
- };
26
- readonly uniforms: {
27
- [name: string]: WebglUniformType;
28
- };
29
- readonly fragmentShaderCode: TgdCodeBloc;
30
- readonly vertexShaderCode: TgdCodeBloc;
22
+ shades: number;
31
23
  private readonly texture;
32
24
  private readonly lightColor;
33
25
  private readonly ambientColor;
34
- private _shades;
35
26
  constructor(options?: TgdMaterialToonOptions);
36
- setUniforms(program: TgdProgram): void;
37
27
  }
38
28
  //# sourceMappingURL=toon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toon.d.ts","sourceRoot":"","sources":["../../src/material/toon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC/E,OAAO,EAAW,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;IAC5C,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,QAAQ,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;CAC5B,CAAC,CAAA;AAIF,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAA;AAE1C,qBAAa,eAAgB,SAAQ,WAAW;IACrC,KAAK,WAEV;IACK,OAAO,WAAuD;IAC9D,iBAAiB,SAAM;IACvB,YAAY,SAAM;IAClB,iBAAiB,SAAM;IAE9B,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAA;IAChE,SAAgB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAQ7D;IACD,SAAgB,kBAAkB,EAAE,WAAW,CAAA;IAC/C,SAAgB,gBAAgB,EAAE,WAAW,CAAA;IAE7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAE7C,OAAO,CAAC,OAAO,CAA2B;gBAE9B,OAAO,GAAE,sBAA2B;IAwDhD,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;CAazC"}
1
+ {"version":3,"file":"toon.d.ts","sourceRoot":"","sources":["../../src/material/toon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAwC,MAAM,YAAY,CAAA;AAC/E,OAAO,EAAW,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG3C,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;IAC5C,KAAK,EAAE,QAAQ,CAAA;IACf,OAAO,EAAE,QAAQ,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;CACjB,CAAC,CAAA;AAIF,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAA;AAE1C,qBAAa,eAAgB,SAAQ,WAAW;IACrC,KAAK,WAEV;IACK,OAAO,WAAuD;IAC9D,iBAAiB,SAAM;IACvB,YAAY,SAAM;IAClB,iBAAiB,SAAM;IACvB,MAAM,SAAI;IAEjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;gBAEjC,OAAO,GAAE,sBAA2B;CAmGnD"}