phoria2 1.0.0-rc.5 → 1.0.0-rc.7
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.
- package/README.md +13 -8
- package/dist/bloom.js +12 -16
- package/dist/bloom.js.map +1 -1
- package/dist/charts.js +681 -591
- package/dist/charts.js.map +1 -1
- package/dist/core.js +2012 -1363
- package/dist/core.js.map +1 -1
- package/dist/edit.js +88 -68
- package/dist/edit.js.map +1 -1
- package/dist/explain.js +2 -2
- package/dist/explain.js.map +1 -1
- package/dist/gltf.js +155 -151
- package/dist/gltf.js.map +1 -1
- package/dist/motion.js +39 -44
- package/dist/motion.js.map +1 -1
- package/dist/particles.js +24 -24
- package/dist/particles.js.map +1 -1
- package/dist/passes.js +125 -75
- package/dist/passes.js.map +1 -1
- package/dist/phoria2.js +1 -1
- package/dist/picking.js +48 -59
- package/dist/picking.js.map +1 -1
- package/dist/snapshot.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/types/OrbitControl.d.ts +22 -3
- package/dist/types/Raycaster.d.ts +12 -1
- package/dist/types/View.d.ts +25 -5
- package/dist/types/charts/legend.d.ts +3 -2
- package/dist/types/charts/marks.d.ts +7 -0
- package/dist/types/charts/network.d.ts +1 -4
- package/dist/types/charts/scales.d.ts +10 -3
- package/dist/types/ease.d.ts +4 -0
- package/dist/types/edit/History.d.ts +4 -0
- package/dist/types/frame.d.ts +43 -2
- package/dist/types/geometry/Geometry.d.ts +1 -1
- package/dist/types/geometry/bvh.d.ts +32 -0
- package/dist/types/labels.d.ts +9 -2
- package/dist/types/material/Material.d.ts +32 -12
- package/dist/types/material/Texture.d.ts +13 -2
- package/dist/types/motion/ease.d.ts +3 -4
- package/dist/types/presets.d.ts +12 -23
- package/dist/types/scene/Node.d.ts +56 -10
- package/dist/types/scene/cameras.d.ts +17 -6
- package/dist/types/scene/drawables.d.ts +15 -2
- package/dist/types/scene/lights.d.ts +24 -5
- package/dist/types/shadow.d.ts +15 -0
- package/dist/types/validate.d.ts +22 -0
- package/dist/types/webgl/passes.d.ts +24 -16
- package/dist/types/webgl/programs.d.ts +6 -0
- package/dist/types/webgl/resources.d.ts +16 -0
- package/dist/types/webgl/shaders.d.ts +2 -2
- package/llms-full.txt +92 -27
- package/llms.txt +3 -2
- package/package.json +2 -1
- package/schema/chart.schema.json +10 -6
- package/src/OrbitControl.js +361 -0
- package/src/Raycaster.js +290 -0
- package/src/View.js +1311 -0
- package/src/charts/Chart.js +466 -0
- package/src/charts/axes.js +146 -0
- package/src/charts/index.js +9 -0
- package/src/charts/legend.js +60 -0
- package/src/charts/marks.js +339 -0
- package/src/charts/network.js +344 -0
- package/src/charts/scales.js +316 -0
- package/src/charts/spec.js +252 -0
- package/src/charts/style.js +41 -0
- package/src/clip.js +105 -0
- package/src/describe.js +102 -0
- package/src/ease.js +12 -0
- package/src/edit/History.js +135 -0
- package/src/edit/TransformHandle.js +259 -0
- package/src/edit/index.js +10 -0
- package/src/explain.js +138 -0
- package/src/fog.js +71 -0
- package/src/frame.js +517 -0
- package/src/geometry/Curve.js +294 -0
- package/src/geometry/Geometry.js +247 -0
- package/src/geometry/bvh.js +168 -0
- package/src/geometry/fromPolygons.js +86 -0
- package/src/geometry/generators.js +767 -0
- package/src/geometry/outline.js +206 -0
- package/src/geometry/triangulate.js +127 -0
- package/src/gltf/Animation.js +137 -0
- package/src/gltf/index.js +8 -0
- package/src/gltf/load.js +533 -0
- package/src/hdr.js +71 -0
- package/src/index.js +57 -0
- package/src/irradiance.js +43 -0
- package/src/labelLayout.js +183 -0
- package/src/labels.js +340 -0
- package/src/material/Material.js +292 -0
- package/src/material/Texture.js +183 -0
- package/src/math/mat3.js +53 -0
- package/src/math/mat4.js +315 -0
- package/src/math/quat.js +123 -0
- package/src/math/vec2.js +29 -0
- package/src/math/vec3.js +131 -0
- package/src/math/vec4.js +35 -0
- package/src/math.js +12 -0
- package/src/motion/Timeline.js +195 -0
- package/src/motion/ease.js +3 -0
- package/src/motion/follow.js +119 -0
- package/src/motion/index.js +13 -0
- package/src/particles/Body.js +62 -0
- package/src/particles/Emitter.js +418 -0
- package/src/particles/index.js +9 -0
- package/src/presets.js +128 -0
- package/src/registry.js +26 -0
- package/src/resolve.js +35 -0
- package/src/scene/Node.js +668 -0
- package/src/scene/Scene.js +169 -0
- package/src/scene/cameras.js +174 -0
- package/src/scene/drawables.js +547 -0
- package/src/scene/lights.js +299 -0
- package/src/shadow.js +159 -0
- package/src/snapshot.js +93 -0
- package/src/tooltip.js +101 -0
- package/src/types.js +18 -0
- package/src/validate.js +180 -0
- package/src/value/Box3.js +109 -0
- package/src/value/Color.js +193 -0
- package/src/value/Euler.js +90 -0
- package/src/value/Mat4.js +67 -0
- package/src/value/Quat.js +134 -0
- package/src/value/Ray.js +120 -0
- package/src/value/Vec3.js +174 -0
- package/src/value/cssColors.js +37 -0
- package/src/watch.js +208 -0
- package/src/webgl/WebGLRenderer.js +636 -0
- package/src/webgl/bloom.js +262 -0
- package/src/webgl/context.js +214 -0
- package/src/webgl/passes.js +603 -0
- package/src/webgl/picking.js +306 -0
- package/src/webgl/programs.js +200 -0
- package/src/webgl/resources.js +418 -0
- package/src/webgl/shaders.js +828 -0
package/README.md
CHANGED
|
@@ -4,10 +4,15 @@ Small, friendly 3D for the web. A WebGL 2 renderer with PBR materials, instancin
|
|
|
4
4
|
labels, picking and particles, behind an API small enough to learn in an afternoon - aimed at
|
|
5
5
|
business apps: charts, labelled scenes, diagrams, dashboards and product viewers.
|
|
6
6
|
|
|
7
|
-
- **Small**: about
|
|
8
|
-
separate imports, and the heavier parts (shadows,
|
|
7
|
+
- **Small**: about 57 KB gzipped for a lit, interactive scene, and about 116 KB for everything;
|
|
8
|
+
charts, particles, glTF, motion and editing are separate imports, and the heavier parts (shadows,
|
|
9
|
+
HDR environments, GPU picking) load only when used.
|
|
9
10
|
- **Idle when nothing changes**: a view draws only when something in it changed, so a dashboard of
|
|
10
11
|
many views only updates when needed.
|
|
12
|
+
- **Any number of views on a page**: browsers allow about 16 WebGL contexts per page, so most
|
|
13
|
+
libraries need one big canvas and scissoring for a dashboard of tiles. phoria2 gives the first four
|
|
14
|
+
views their own context and draws the rest with one shared context, each still an ordinary canvas
|
|
15
|
+
in your layout. The chart lab demo runs over 100 live chart views.
|
|
11
16
|
- **Tells you what to write**: every option is checked, and a mistake throws an error that names
|
|
12
17
|
the fix - pass `colour` and you get `Material: use 'color'`. Written to be easy for coding
|
|
13
18
|
agents too.
|
|
@@ -51,12 +56,12 @@ own). Pin the version so a new release can't change your page:
|
|
|
51
56
|
<script type="importmap">
|
|
52
57
|
{
|
|
53
58
|
"imports": {
|
|
54
|
-
"phoria2": "https://cdn.jsdelivr.net/npm/phoria2@1.0.0-rc.
|
|
55
|
-
"phoria2/charts": "https://cdn.jsdelivr.net/npm/phoria2@1.0.0-rc.
|
|
56
|
-
"phoria2/particles": "https://cdn.jsdelivr.net/npm/phoria2@1.0.0-rc.
|
|
57
|
-
"phoria2/gltf": "https://cdn.jsdelivr.net/npm/phoria2@1.0.0-rc.
|
|
58
|
-
"phoria2/motion": "https://cdn.jsdelivr.net/npm/phoria2@1.0.0-rc.
|
|
59
|
-
"phoria2/edit": "https://cdn.jsdelivr.net/npm/phoria2@1.0.0-rc.
|
|
59
|
+
"phoria2": "https://cdn.jsdelivr.net/npm/phoria2@1.0.0-rc.7/dist/phoria2.js",
|
|
60
|
+
"phoria2/charts": "https://cdn.jsdelivr.net/npm/phoria2@1.0.0-rc.7/dist/charts.js",
|
|
61
|
+
"phoria2/particles": "https://cdn.jsdelivr.net/npm/phoria2@1.0.0-rc.7/dist/particles.js",
|
|
62
|
+
"phoria2/gltf": "https://cdn.jsdelivr.net/npm/phoria2@1.0.0-rc.7/dist/gltf.js",
|
|
63
|
+
"phoria2/motion": "https://cdn.jsdelivr.net/npm/phoria2@1.0.0-rc.7/dist/motion.js",
|
|
64
|
+
"phoria2/edit": "https://cdn.jsdelivr.net/npm/phoria2@1.0.0-rc.7/dist/edit.js"
|
|
60
65
|
}
|
|
61
66
|
}
|
|
62
67
|
</script>
|
package/dist/bloom.js
CHANGED
|
@@ -39,44 +39,43 @@ fragColor = vec4(linearToSrgb(c), a);
|
|
|
39
39
|
}
|
|
40
40
|
`, a = [e, n], o = [e, r], s = [e, i], c = 6, l = class {
|
|
41
41
|
#e = null;
|
|
42
|
-
#t =
|
|
43
|
-
#n = !1;
|
|
42
|
+
#t = !1;
|
|
44
43
|
constructor(e, t) {
|
|
45
44
|
this.gl = e, this.programs = t, this.reset();
|
|
46
45
|
}
|
|
47
46
|
reset() {
|
|
48
|
-
this.#e = null, this.#t =
|
|
47
|
+
this.#e = null, this.#t = !!this.gl.getExtension("EXT_color_buffer_float");
|
|
49
48
|
}
|
|
50
49
|
dispose() {
|
|
51
|
-
this.#
|
|
50
|
+
this.#r(), this.#e = null;
|
|
52
51
|
}
|
|
53
52
|
begin(e, t) {
|
|
54
|
-
let n = this.gl, r = this.#
|
|
53
|
+
let n = this.gl, r = this.#n(e, t);
|
|
55
54
|
n.bindFramebuffer(n.FRAMEBUFFER, r.multisampled), n.viewport(0, 0, e, t);
|
|
56
55
|
}
|
|
57
56
|
end(e) {
|
|
58
57
|
let t = this.gl, n = this.#e, { width: r, height: i, levels: c } = n;
|
|
59
|
-
t.bindFramebuffer(t.READ_FRAMEBUFFER, n.multisampled), t.bindFramebuffer(t.DRAW_FRAMEBUFFER, n.resolved), t.blitFramebuffer(0, 0, r, i, 0, 0, r, i, t.COLOR_BUFFER_BIT, t.NEAREST), t.bindFramebuffer(t.READ_FRAMEBUFFER, null), t.bindFramebuffer(t.DRAW_FRAMEBUFFER, null), t.disable(t.DEPTH_TEST), t.disable(t.CULL_FACE), t.disable(t.BLEND), t.depthMask(!1)
|
|
58
|
+
t.bindFramebuffer(t.READ_FRAMEBUFFER, n.multisampled), t.bindFramebuffer(t.DRAW_FRAMEBUFFER, n.resolved), t.blitFramebuffer(0, 0, r, i, 0, 0, r, i, t.COLOR_BUFFER_BIT, t.NEAREST), t.bindFramebuffer(t.READ_FRAMEBUFFER, null), t.bindFramebuffer(t.DRAW_FRAMEBUFFER, null), t.disable(t.DEPTH_TEST), t.disable(t.CULL_FACE), t.disable(t.BLEND), t.depthMask(!1);
|
|
60
59
|
let l = this.programs.ready("bloom-down", [], a);
|
|
61
60
|
t.useProgram(l.program);
|
|
62
61
|
let u = n.picture, d = r, f = i;
|
|
63
62
|
c.forEach((n, r) => {
|
|
64
|
-
t.bindFramebuffer(t.FRAMEBUFFER, n.framebuffer), t.viewport(0, 0, n.width, n.height), l.set("uSource", u), l.set("uTexel", [1 / d, 1 / f]), l.set("uThreshold", r === 0 ? Math.max(0, e.threshold) : -1),
|
|
63
|
+
t.bindFramebuffer(t.FRAMEBUFFER, n.framebuffer), t.viewport(0, 0, n.width, n.height), l.set("uSource", u), l.set("uTexel", [1 / d, 1 / f]), l.set("uThreshold", r === 0 ? Math.max(0, e.threshold) : -1), this.programs.drawFullscreen(), u = n.texture, d = n.width, f = n.height;
|
|
65
64
|
});
|
|
66
65
|
let p = this.programs.ready("bloom-up", [], o);
|
|
67
66
|
t.useProgram(p.program), t.enable(t.BLEND), t.blendFunc(t.ONE, t.ONE);
|
|
68
67
|
let m = Math.min(1, Math.max(0, e.radius));
|
|
69
68
|
for (let e = c.length - 1; e > 0; e--) {
|
|
70
69
|
let n = c[e], r = c[e - 1];
|
|
71
|
-
t.bindFramebuffer(t.FRAMEBUFFER, r.framebuffer), t.viewport(0, 0, r.width, r.height), p.set("uSource", n.texture), p.set("uTexel", [1 / n.width, 1 / n.height]), p.set("uWeight", m),
|
|
70
|
+
t.bindFramebuffer(t.FRAMEBUFFER, r.framebuffer), t.viewport(0, 0, r.width, r.height), p.set("uSource", n.texture), p.set("uTexel", [1 / n.width, 1 / n.height]), p.set("uWeight", m), this.programs.drawFullscreen();
|
|
72
71
|
}
|
|
73
72
|
t.disable(t.BLEND), t.bindFramebuffer(t.FRAMEBUFFER, null), t.viewport(0, 0, r, i);
|
|
74
73
|
let h = this.programs.ready("bloom-composite", [], s);
|
|
75
|
-
t.useProgram(h.program), h.set("uScene", n.picture), h.set("uBloom", c[0].texture), h.set("uStrength", Math.max(0, e.strength)),
|
|
74
|
+
t.useProgram(h.program), h.set("uScene", n.picture), h.set("uBloom", c[0].texture), h.set("uStrength", Math.max(0, e.strength)), this.programs.drawFullscreen(), t.depthMask(!0), t.enable(t.DEPTH_TEST), t.bindVertexArray(null);
|
|
76
75
|
}
|
|
77
|
-
#
|
|
76
|
+
#n(e, t) {
|
|
78
77
|
if (this.#e && this.#e.width === e && this.#e.height === t) return this.#e;
|
|
79
|
-
this.#
|
|
78
|
+
this.#r();
|
|
80
79
|
let n = this.gl, r = Math.min(4, n.getParameter(n.MAX_SAMPLES)), i = n.createFramebuffer();
|
|
81
80
|
n.bindFramebuffer(n.FRAMEBUFFER, i);
|
|
82
81
|
let a = n.createRenderbuffer();
|
|
@@ -94,7 +93,7 @@ fragColor = vec4(linearToSrgb(c), a);
|
|
|
94
93
|
height: t
|
|
95
94
|
};
|
|
96
95
|
}, l = s(e, t, n.RGBA8), u = [], d = e, f = t;
|
|
97
|
-
for (let e = 0; e < c && (d = Math.max(1, d >> 1), f = Math.max(1, f >> 1), !(e > 1 && Math.min(d, f) < 8)); e++) u.push(s(d, f, this.#
|
|
96
|
+
for (let e = 0; e < c && (d = Math.max(1, d >> 1), f = Math.max(1, f >> 1), !(e > 1 && Math.min(d, f) < 8)); e++) u.push(s(d, f, this.#t ? n.RGBA16F : n.RGBA8));
|
|
98
97
|
return n.bindFramebuffer(n.FRAMEBUFFER, null), n.bindRenderbuffer(n.RENDERBUFFER, null), this.#e = {
|
|
99
98
|
width: e,
|
|
100
99
|
height: t,
|
|
@@ -105,7 +104,7 @@ fragColor = vec4(linearToSrgb(c), a);
|
|
|
105
104
|
levels: u
|
|
106
105
|
}, this.#e;
|
|
107
106
|
}
|
|
108
|
-
#
|
|
107
|
+
#r() {
|
|
109
108
|
let e = this.#e;
|
|
110
109
|
if (!e) return;
|
|
111
110
|
let t = this.gl;
|
|
@@ -114,9 +113,6 @@ fragColor = vec4(linearToSrgb(c), a);
|
|
|
114
113
|
t.deleteFramebuffer(e.resolved), t.deleteTexture(e.picture);
|
|
115
114
|
for (let n of e.levels) t.deleteFramebuffer(n.framebuffer), t.deleteTexture(n.texture);
|
|
116
115
|
}
|
|
117
|
-
#a() {
|
|
118
|
-
return this.#t ||= this.gl.createVertexArray(), this.#t;
|
|
119
|
-
}
|
|
120
116
|
};
|
|
121
117
|
export { l as Bloom };
|
|
122
118
|
|
package/dist/bloom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bloom.js","names":["FULLSCREEN_VERTEX","COMMON","DOWN_FRAGMENT","UP_FRAGMENT","COMPOSITE_FRAGMENT","DOWN","UP","COMPOSITE","LEVELS","Bloom","gl","programs","#target","#
|
|
1
|
+
{"version":3,"file":"bloom.js","names":["FULLSCREEN_VERTEX","COMMON","DOWN_FRAGMENT","UP_FRAGMENT","COMPOSITE_FRAGMENT","DOWN","UP","COMPOSITE","LEVELS","Bloom","gl","programs","#target","#float","#free","target","#targetFor","width","height","down","source","sw","sh","level","i","settings","up","weight","levels","from","to","composite","samples","multisampled","color","depth","texture","t","format","w","h","framebuffer","picture","b"],"sources":[],"mappings":""}
|