@tolokoban/tgd 2.0.76 → 2.0.77
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"points-cloud.d.ts","sourceRoot":"","sources":["../../../src/painter/points-cloud/points-cloud.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"points-cloud.d.ts","sourceRoot":"","sources":["../../../src/painter/points-cloud/points-cloud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAIvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,OAAO,EAAE,WAAW,EAAsC,MAAM,aAAa,CAAA;AAE7E,MAAM,WAAW,4BAA4B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,SAAS,EAAE,YAAY,CAAA;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAA;IACtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,qBAAsB,SAAQ,UAAU;aAqE7B,OAAO,EAAE,UAAU;IApEvC;;OAEG;IACH,MAAM,CAAC,cAAc,CACjB,OAAO,GAAE,OAAO,CAAC;QACb,gBAAgB,EAAE,MAAM,CAAA;QACxB,iBAAiB,EAAE,MAAM,CAAA;QACzB,eAAe,EAAE,MAAM,CAAA;QACvB,eAAe,EAAE,MAAM,CAAA;QACvB,KAAK,EAAE,MAAM,CAAA;KAChB,CAAM,GACR,WAAW;IAsCd,SAAgB,KAAK,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,YAAY,CAAA;IACrB,gBAAgB,SAAI;IACpB,eAAe,SAAI;IAEnB,gBAAgB,SAAK;IACrB,iBAAiB,SAAO;IACxB,eAAe,SAAM;IACrB,eAAe,SAAI;IACnB,KAAK,SAAI;IAEhB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;gBAGhB,OAAO,EAAE,UAAU,EACnC,OAAO,EAAE,4BAA4B;IAgDzC,MAAM,IAAI,IAAI;IAMd,KAAK,IAAI,IAAI;IA4Bb,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;CA+DxB"}
|
|
@@ -11,15 +11,30 @@ export class TgdPainterPointsCloud extends TgdPainter {
|
|
|
11
11
|
* Draw spheres with simple diffuse/specular material.
|
|
12
12
|
*/
|
|
13
13
|
static fragCodeSphere(options = {}) {
|
|
14
|
-
const { specularExponent
|
|
14
|
+
const { specularExponent, specularIntensity, shadowThickness, shadowIntensity, light, } = options;
|
|
15
|
+
const SpE = typeof specularExponent === "number"
|
|
16
|
+
? specularExponent.toFixed(6)
|
|
17
|
+
: "uniSpecularExponent";
|
|
18
|
+
const SpI = typeof specularIntensity === "number"
|
|
19
|
+
? specularIntensity.toFixed(6)
|
|
20
|
+
: "uniSpecularIntensity";
|
|
21
|
+
const ShT = typeof shadowThickness === "number"
|
|
22
|
+
? shadowThickness.toFixed(6)
|
|
23
|
+
: "uniShadowThickness";
|
|
24
|
+
const ShI = typeof shadowIntensity === "number"
|
|
25
|
+
? shadowIntensity.toFixed(6)
|
|
26
|
+
: "uniShadowIntensity";
|
|
27
|
+
const L = typeof light === "number" ? light.toFixed(6) : "uniLight";
|
|
15
28
|
return [
|
|
16
29
|
"vec2 coords = 2.0 * (gl_PointCoord - vec2(.5));",
|
|
17
30
|
"float len = 1.0 - dot(coords, coords);",
|
|
18
31
|
"if (len < 0.0) discard;",
|
|
19
32
|
"gl_FragDepth = gl_FragCoord.z - len * 1e-5;",
|
|
20
|
-
`float light = smoothstep(0.0, ${
|
|
21
|
-
|
|
22
|
-
|
|
33
|
+
`float light = smoothstep(0.0, ${ShT}, len) * ${ShI} + (1.0 - ${ShI});`,
|
|
34
|
+
specularIntensity
|
|
35
|
+
? `float spec = pow(len, ${SpE}) * ${SpI};`
|
|
36
|
+
: "// No specular.",
|
|
37
|
+
`return color * vec4(vec3(light * ${L}), 1.0) + vec4(vec3(spec), 0.0);`,
|
|
23
38
|
];
|
|
24
39
|
}
|
|
25
40
|
constructor(context, options) {
|
|
@@ -166,4 +181,4 @@ export class TgdPainterPointsCloud extends TgdPainter {
|
|
|
166
181
|
return program;
|
|
167
182
|
}
|
|
168
183
|
}
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRzLWNsb3VkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhaW50ZXIvcG9pbnRzLWNsb3VkL3BvaW50cy1jbG91ZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFekMsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNqRCxPQUFPLEVBQWUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBc0U3RSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsVUFBVTtJQUNqRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQ2pCLFVBTUssRUFBRTtRQUVQLE1BQU0sRUFDRixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixlQUFlLEVBQ2YsS0FBSyxHQUNSLEdBQUcsT0FBTyxDQUFBO1FBQ1gsTUFBTSxHQUFHLEdBQ0wsT0FBTyxnQkFBZ0IsS0FBSyxRQUFRO1lBQ2hDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQTtRQUMvQixNQUFNLEdBQUcsR0FDTCxPQUFPLGlCQUFpQixLQUFLLFFBQVE7WUFDakMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDOUIsQ0FBQyxDQUFDLHNCQUFzQixDQUFBO1FBQ2hDLE1BQU0s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
|