@tolokoban/tgd 2.0.91 → 2.0.94

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 (31) hide show
  1. package/lib/dist/color/color.d.ts +5 -0
  2. package/lib/dist/color/color.d.ts.map +1 -1
  3. package/lib/dist/color/color.js +25 -6
  4. package/lib/dist/material/flat.d.ts +1 -1
  5. package/lib/dist/material/flat.d.ts.map +1 -1
  6. package/lib/dist/material/flat.js +1 -1
  7. package/lib/dist/material/index.d.ts +1 -0
  8. package/lib/dist/material/index.d.ts.map +1 -1
  9. package/lib/dist/material/index.js +2 -1
  10. package/lib/dist/material/solid.d.ts +11 -0
  11. package/lib/dist/material/solid.d.ts.map +1 -0
  12. package/lib/dist/material/solid.js +19 -0
  13. package/lib/dist/painter/points-cloud/points-cloud-morphing.d.ts.map +1 -1
  14. package/lib/dist/painter/points-cloud/points-cloud-morphing.js +8 -6
  15. package/lib/dist/painter/points-cloud/points-cloud.d.ts.map +1 -1
  16. package/lib/dist/painter/points-cloud/points-cloud.js +8 -6
  17. package/lib/dist/painter/sprites/sprites.d.ts.map +1 -1
  18. package/lib/dist/painter/sprites/sprites.js +3 -1
  19. package/package.json +1 -1
  20. package/lib/dist/geometry/tubes.d.ts +0 -19
  21. package/lib/dist/geometry/tubes.d.ts.map +0 -1
  22. package/lib/dist/geometry/tubes.js +0 -78
  23. package/lib/dist/painter/tubes/capsule.d.ts +0 -11
  24. package/lib/dist/painter/tubes/capsule.d.ts.map +0 -1
  25. package/lib/dist/painter/tubes/capsule.js +0 -109
  26. package/lib/dist/painter/tubes/segments-morphing.d.ts +0 -89
  27. package/lib/dist/painter/tubes/segments-morphing.d.ts.map +0 -1
  28. package/lib/dist/painter/tubes/segments-morphing.js +0 -215
  29. package/lib/dist/painter/tubes/segments.d.ts +0 -133
  30. package/lib/dist/painter/tubes/segments.d.ts.map +0 -1
  31. package/lib/dist/painter/tubes/segments.js +0 -270
@@ -1,133 +0,0 @@
1
- import type { TgdBuffer, TgdBufferOptionTarget, TgdBufferOptionUsage } from "../../buffer";
2
- import type { TgdCamera } from "../../camera";
3
- import type { WebglParams } from "../../context/webgl-params";
4
- import { TgdDataset } from "../../dataset";
5
- import { type TgdMaterial } from "../../material";
6
- import { TgdTransfo } from "../../math";
7
- import { TgdPainter } from "../painter";
8
- import type { ArrayNumber2, ArrayNumber4 } from "../../types";
9
- type DatasetOption = TgdPainterSegments | InstanceDataset | (() => InstanceDataset);
10
- export type TgdPainterSegmentsOptions = {
11
- /**
12
- * Number of faces around the cylinder.
13
- * Min is 3.
14
- *
15
- * Default to **3**.
16
- */
17
- roundness?: number;
18
- /**
19
- * With orthographic camera, this is a value in pixels.
20
- */
21
- minRadius?: number;
22
- /**
23
- * Multiply all the radii by this value.
24
- *
25
- * Default to `1`.
26
- */
27
- radiusMultiplier?: number;
28
- /**
29
- * Material to apply to the resulting mesh.
30
- */
31
- material?: TgdMaterial;
32
- /**
33
- * If a `TgdPainterSegments` is given, then the
34
- * data will be shared between the painters.
35
- */
36
- dataset: DatasetOption;
37
- };
38
- /**
39
- * @example
40
- * ```
41
- * const factory = new TgdPainterSegmentsData()
42
- * factory.add(
43
- * [0, 0, 0, .2],
44
- * [1, 0, 0, .1],
45
- * )
46
- * factory.add(
47
- * [0, 0, 0, .2],
48
- * [0, 1, 0, .1],
49
- * )
50
- * factory.add(
51
- * [0, 0, 0, .2],
52
- * [0, 0, 1, .1],
53
- * )
54
- * const segments = new TgdPainterSegments(
55
- * segment, factory
56
- * )
57
- * ```
58
- */
59
- export declare class TgdPainterSegments extends TgdPainter {
60
- protected readonly context: {
61
- gl: WebGL2RenderingContext;
62
- webglParams: WebglParams;
63
- camera: TgdCamera;
64
- };
65
- static createDataset({ attXYZR0, attUV0, attInfluence0, attXYZR1, attUV1, attInfluence1, buffer, usage, target, }?: Partial<{
66
- attXYZR0: string;
67
- attUV0: string;
68
- attInfluence0: string;
69
- attXYZR1: string;
70
- attUV1: string;
71
- attInfluence1: string;
72
- buffer: TgdBuffer;
73
- target: TgdBufferOptionTarget;
74
- usage: TgdBufferOptionUsage;
75
- }>): TgdDataset;
76
- readonly transfo: TgdTransfo;
77
- minRadius: number;
78
- radiusMultiplier: number;
79
- radiusConstant: number;
80
- radiusSwitch: number;
81
- instanceCount: number;
82
- private readonly vao;
83
- private readonly prg;
84
- private readonly vertexCount;
85
- private readonly material;
86
- constructor(context: {
87
- gl: WebGL2RenderingContext;
88
- webglParams: WebglParams;
89
- camera: TgdCamera;
90
- }, options: TgdPainterSegmentsOptions);
91
- getBuffer(): TgdBuffer | undefined;
92
- delete(): void;
93
- paint(time: number, delay: number): void;
94
- }
95
- type InstanceDataset = TgdDataset;
96
- export declare class TgdPainterSegmentsData {
97
- private _count;
98
- private readonly attXYZR0;
99
- private readonly attUV0;
100
- private readonly attInfluence0;
101
- private readonly attXYZR1;
102
- private readonly attUV1;
103
- private readonly attInfluence1;
104
- get count(): number;
105
- getXYZR0(index: number): ArrayNumber4;
106
- getXYZR1(index: number): ArrayNumber4;
107
- /**
108
- * @param XYZR0 (x,y,z) and radius of point A.
109
- * @param XYZR1 (x,y,z) and radius of point B.
110
- * @param UV0 Texture coordinates for point A.
111
- * @param UV1 Texture coordinates for point B.
112
- * @param radiusMultiplierInfluence0 If you put 0, the radius won't change regardless to the currently applied radius multiplicator.
113
- * @param radiusMultiplierInfluence1
114
- */
115
- add(XYZR0: ArrayNumber4, XYZR1: ArrayNumber4, UV0?: ArrayNumber2, UV1?: ArrayNumber2, radiusMultiplierInfluence0?: number, radiusMultiplierInfluence1?: number): void;
116
- /**
117
- * You can rename the attributes if you need to use
118
- * them in another Painter.
119
- */
120
- readonly makeDataset: (args?: Partial<{
121
- attXYZR0: string;
122
- attUV0: string;
123
- attInfluence0: string;
124
- attXYZR1: string;
125
- attUV1: string;
126
- attInfluence1: string;
127
- buffer: TgdBuffer;
128
- target: TgdBufferOptionTarget;
129
- usage: TgdBufferOptionUsage;
130
- }>) => InstanceDataset;
131
- }
132
- export {};
133
- //# sourceMappingURL=segments.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../../src/painter/tubes/segments.ts"],"names":[],"mappings":"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"}
@@ -1,270 +0,0 @@
1
- import { TgdDataset } from "./../../dataset/index.js";
2
- import { TgdMaterialFaceOrientation } from "./../../material/index.js";
3
- import { TgdTransfo } from "./../../math/index.js";
4
- import { TgdPainter } from "./../painter.js";
5
- import { TgdProgram } from "./../../program/index.js";
6
- import { TgdShaderFragment, TgdShaderVertex } from "./../../shader/index.js";
7
- import { TgdVertexArray } from "./../../vao/index.js";
8
- import { makeCapsule } from "./capsule.js";
9
- /**
10
- * @example
11
- * ```
12
- * const factory = new TgdPainterSegmentsData()
13
- * factory.add(
14
- * [0, 0, 0, .2],
15
- * [1, 0, 0, .1],
16
- * )
17
- * factory.add(
18
- * [0, 0, 0, .2],
19
- * [0, 1, 0, .1],
20
- * )
21
- * factory.add(
22
- * [0, 0, 0, .2],
23
- * [0, 0, 1, .1],
24
- * )
25
- * const segments = new TgdPainterSegments(
26
- * segment, factory
27
- * )
28
- * ```
29
- */
30
- export class TgdPainterSegments extends TgdPainter {
31
- static createDataset({ attXYZR0 = "attXYZR0", attUV0 = "attUV0", attInfluence0 = "attInfluence0", attXYZR1 = "attXYZR1", attUV1 = "attUV1", attInfluence1 = "attInfluence1", buffer, usage, target, } = {}) {
32
- const dataset = new TgdDataset({
33
- [attXYZR0]: "vec4",
34
- [attUV0]: "vec2",
35
- [attInfluence0]: "float",
36
- [attXYZR1]: "vec4",
37
- [attUV1]: "vec2",
38
- [attInfluence1]: "float",
39
- }, {
40
- divisor: 1,
41
- buffer,
42
- usage,
43
- target,
44
- });
45
- return dataset;
46
- }
47
- constructor(context, options) {
48
- var _a, _b, _c, _d, _e;
49
- super();
50
- this.context = context;
51
- this.transfo = new TgdTransfo();
52
- this.minRadius = 1;
53
- this.radiusMultiplier = 1;
54
- this.radiusConstant = 1;
55
- this.radiusSwitch = 0;
56
- this.instanceCount = 0;
57
- this.name = `TgdPainterSegments#${this.id}`;
58
- this.radiusMultiplier = (_a = options.radiusMultiplier) !== null && _a !== void 0 ? _a : 1;
59
- const { roundness = 3, minRadius = 1, dataset } = options;
60
- const geometry = makeCapsule(roundness);
61
- const material = (_b = options.material) !== null && _b !== void 0 ? _b : new TgdMaterialFaceOrientation();
62
- this.material = material;
63
- material.attPosition = geometry.attPosition;
64
- material.attNormal = geometry.attNormal;
65
- material.attUV = "((attUV0 + attUV1) * .5)";
66
- this.minRadius = minRadius;
67
- if (roundness > 127) {
68
- throw new Error("[TgdPainterSegments] Max roundness is 127!");
69
- }
70
- if (roundness < 0) {
71
- throw new Error("[TgdPainterSegments] Min roundness is 0!");
72
- }
73
- const vert = new TgdShaderVertex({
74
- uniforms: Object.assign({ uniTransfoMatrix: "mat4", uniModelViewMatrix: "mat4", uniProjectionMatrix: "mat4", uniMinRadius: "float", uniRadiusMultiplier: "float" }, material.uniforms),
75
- attributes: {
76
- [geometry.attPosition]: "vec3",
77
- [geometry.attNormal]: "vec3",
78
- attTip: "float",
79
- attXYZR0: "vec4",
80
- attXYZR1: "vec4",
81
- attUV0: "vec2",
82
- attUV1: "vec2",
83
- },
84
- varying: Object.assign(Object.assign({}, material.varyings), { varNormal: "vec3" }),
85
- functions: Object.assign(Object.assign({}, material.extraVertexShaderFunctions), { applyMaterial: [
86
- "void applyMaterial() {",
87
- [material.vertexShaderCode],
88
- "}",
89
- ], getPosition: [
90
- "vec4 getPosition(vec4 pos) {",
91
- [(_c = material.vertexShaderCodeForGetPosition) !== null && _c !== void 0 ? _c : "return pos;"],
92
- "}",
93
- ] }),
94
- mainCode: [
95
- "vec3 normal = NORMAL;",
96
- "vec3 pos = POSITION;",
97
- "vec4 xyzr = mix(attXYZR0, attXYZR1, attTip);",
98
- "vec3 center = xyzr.xyz;",
99
- "float radius = max(",
100
- [
101
- "xyzr.w * uniRadiusMultiplier,",
102
- "uniMinRadius * (uniProjectionMatrix * uniModelViewMatrix * uniTransfoMatrix * vec4(center, 1)).w",
103
- ],
104
- ");",
105
- "vec3 dir = attXYZR1.xyz - attXYZR0.xyz;",
106
- "float len = length(dir);",
107
- "if (len == 0.0) {",
108
- ["// Just a sphere", "pos *= radius;", "pos += center.xyz;"],
109
- "} else {",
110
- [
111
- "// Full capsule",
112
- "vec3 Z = dir / len;",
113
- "vec3 v = abs(Z.z) > 0.7 ? vec3(1,0,0) : vec3(0,0,1);",
114
- "vec3 Y = cross(v, Z);",
115
- "vec3 X = cross(Y, Z);",
116
- "mat3 mat = mat3(X, Y, Z);",
117
- "pos *= radius;",
118
- "pos = mat * pos + center.xyz;",
119
- "normal = mat * normal;",
120
- ],
121
- "}",
122
- "gl_Position = uniProjectionMatrix * uniModelViewMatrix * uniTransfoMatrix * vec4(pos, 1);",
123
- "applyMaterial();",
124
- "varNormal = normal;",
125
- ],
126
- }).code;
127
- const frag = new TgdShaderFragment({
128
- uniforms: material.uniforms,
129
- outputs: { FragColor: "vec4" },
130
- varying: material.varyings,
131
- functions: Object.assign(Object.assign({}, material.extraFragmentShaderFunctions), { applyMaterial: [
132
- "vec4 applyMaterial() {",
133
- [material.fragmentShaderCode],
134
- "}",
135
- ] }),
136
- mainCode: ["FragColor = applyMaterial();"],
137
- }).code;
138
- const prg = new TgdProgram(context.gl, {
139
- name: `TgdPainterSegments/TgdProgram#${this.id}`,
140
- vert,
141
- frag,
142
- });
143
- this.prg = prg;
144
- if (dataset instanceof TgdPainterSegments) {
145
- if (dataset.vao.gl !== context.gl) {
146
- throw new Error("[TgdPainterSegments] You cannot share a VAO accross different contexts!");
147
- }
148
- this.vao = dataset.vao;
149
- this.vao.share();
150
- this.instanceCount = dataset.instanceCount;
151
- }
152
- else if (dataset) {
153
- const instance = extract(dataset);
154
- instance.addAttributes({
155
- attXYZR0: "vec4",
156
- attUV0: "vec2",
157
- attInfluence0: "float",
158
- attXYZR1: "vec4",
159
- attUV1: "vec2",
160
- attInfluence1: "float",
161
- });
162
- this.vao = new TgdVertexArray(context.gl, prg, [geometry.dataset, instance], geometry.elements);
163
- this.instanceCount = instance.count;
164
- }
165
- else {
166
- console.error("[TgdPainterSegments] options =", options); // @FIXME: Remove this line written on 2026-02-04 at 19:53
167
- throw new Error("option `dataset` of TgdPainterSegments is undefined!");
168
- }
169
- this.vertexCount = (_e = (_d = geometry.elements) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0;
170
- }
171
- getBuffer() {
172
- return this.vao.getBuffer(1);
173
- }
174
- delete() {
175
- this.vao.delete();
176
- this.prg.delete();
177
- }
178
- paint(time, delay) {
179
- var _a, _b;
180
- const { context, prg, vao, vertexCount, instanceCount, material } = this;
181
- const { gl, camera } = context;
182
- gl.disable(gl.DITHER);
183
- prg.use();
184
- (_b = (_a = this.material).setUniforms) === null || _b === void 0 ? void 0 : _b.call(_a, { program: prg, context, time, delay });
185
- prg.uniform1f("uniMinRadius", (this.minRadius * 2) / gl.drawingBufferHeight);
186
- prg.uniform1f("uniRadiusMultiplier", this.radiusMultiplier);
187
- prg.uniformMatrix4fv("uniTransfoMatrix", this.transfo.matrix);
188
- prg.uniformMatrix4fv("uniModelViewMatrix", camera.matrixModelView);
189
- prg.uniformMatrix4fv("uniProjectionMatrix", camera.matrixProjection);
190
- material.applyState(this.context, () => {
191
- vao.bind();
192
- gl.drawElementsInstanced(gl.TRIANGLES, vertexCount, gl.UNSIGNED_SHORT, 0, instanceCount);
193
- vao.unbind();
194
- });
195
- }
196
- }
197
- export class TgdPainterSegmentsData {
198
- constructor() {
199
- this._count = 0;
200
- this.attXYZR0 = [];
201
- this.attUV0 = [];
202
- this.attInfluence0 = [];
203
- this.attXYZR1 = [];
204
- this.attUV1 = [];
205
- this.attInfluence1 = [];
206
- /**
207
- * You can rename the attributes if you need to use
208
- * them in another Painter.
209
- */
210
- this.makeDataset = (args = {}) => {
211
- const dataset = TgdPainterSegments.createDataset(args);
212
- const { attXYZR0 = "attXYZR0", attUV0 = "attUV0", attInfluence0 = "attInfluence0", attXYZR1 = "attXYZR1", attUV1 = "attUV1", attInfluence1 = "attInfluence1", } = args;
213
- dataset.set(attXYZR0, new Float32Array(this.attXYZR0));
214
- dataset.set(attUV0, new Float32Array(this.attUV0));
215
- dataset.set(attInfluence0, new Float32Array(this.attInfluence0));
216
- dataset.set(attXYZR1, new Float32Array(this.attXYZR1));
217
- dataset.set(attUV1, new Float32Array(this.attUV1));
218
- dataset.set(attInfluence1, new Float32Array(this.attInfluence1));
219
- return dataset;
220
- };
221
- }
222
- get count() {
223
- return this._count;
224
- }
225
- getXYZR0(index) {
226
- var _a, _b, _c, _d;
227
- const arr = this.attXYZR0;
228
- const offset = index * 4;
229
- return [
230
- (_a = arr[offset + 0]) !== null && _a !== void 0 ? _a : 0,
231
- (_b = arr[offset + 1]) !== null && _b !== void 0 ? _b : 0,
232
- (_c = arr[offset + 2]) !== null && _c !== void 0 ? _c : 0,
233
- (_d = arr[offset + 3]) !== null && _d !== void 0 ? _d : 0,
234
- ];
235
- }
236
- getXYZR1(index) {
237
- var _a, _b, _c, _d;
238
- const arr = this.attXYZR1;
239
- const offset = index * 4;
240
- return [
241
- (_a = arr[offset + 0]) !== null && _a !== void 0 ? _a : 0,
242
- (_b = arr[offset + 1]) !== null && _b !== void 0 ? _b : 0,
243
- (_c = arr[offset + 2]) !== null && _c !== void 0 ? _c : 0,
244
- (_d = arr[offset + 3]) !== null && _d !== void 0 ? _d : 0,
245
- ];
246
- }
247
- /**
248
- * @param XYZR0 (x,y,z) and radius of point A.
249
- * @param XYZR1 (x,y,z) and radius of point B.
250
- * @param UV0 Texture coordinates for point A.
251
- * @param UV1 Texture coordinates for point B.
252
- * @param radiusMultiplierInfluence0 If you put 0, the radius won't change regardless to the currently applied radius multiplicator.
253
- * @param radiusMultiplierInfluence1
254
- */
255
- add(XYZR0, XYZR1, UV0 = [0, 0], UV1 = [0, 0], radiusMultiplierInfluence0 = 1, radiusMultiplierInfluence1 = 1) {
256
- this.attXYZR0.push(...XYZR0);
257
- this.attUV0.push(...UV0);
258
- this.attInfluence0.push(radiusMultiplierInfluence0);
259
- this.attXYZR1.push(...XYZR1);
260
- this.attUV1.push(...UV1);
261
- this.attInfluence1.push(radiusMultiplierInfluence1);
262
- this._count++;
263
- }
264
- }
265
- function extract(arg) {
266
- if (typeof arg === "function")
267
- return arg();
268
- return arg;
269
- }
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci90dWJlcy9zZWdtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBb0IsMEJBQTBCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQW9DdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFVBQVU7SUFDakQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUNwQixRQUFRLEdBQUcsVUFBVSxFQUNyQixNQUFNLEdBQUcsUUFBUSxFQUNqQixhQUFhLEdBQUcsZUFBZSxFQUMvQixRQUFRLEdBQUcsVUFBVSxFQUNyQixNQUFNLEdBQUcsUUFBUSxFQUNqQixhQUFhLEdBQUcsZUFBZSxFQUMvQixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sTUFXRixFQUFFO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQzdCO1lBQ0MsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNO1lBQ2xCLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTTtZQUNoQixDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU87WUFDeEIsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNO1lBQ2xCLENBQUMsTUFB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