@opsydyn/effect-three 0.0.0-stage → 0.1.0

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 (166) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/LICENSE +21 -0
  3. package/README.md +191 -2
  4. package/dist/index-4045wme0.js +129 -0
  5. package/dist/index-4045wme0.js.map +10 -0
  6. package/dist/index-ef8pbv9g.js +5118 -0
  7. package/dist/index-ef8pbv9g.js.map +40 -0
  8. package/dist/index.d.ts +12 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +1361 -0
  11. package/dist/index.js.map +14 -0
  12. package/dist/kernel/animation.d.ts +14 -0
  13. package/dist/kernel/animation.d.ts.map +1 -0
  14. package/dist/kernel/behaviours.d.ts +16 -0
  15. package/dist/kernel/behaviours.d.ts.map +1 -0
  16. package/dist/kernel/bodies.d.ts +60 -0
  17. package/dist/kernel/bodies.d.ts.map +1 -0
  18. package/dist/kernel/bodySources.d.ts +47 -0
  19. package/dist/kernel/bodySources.d.ts.map +1 -0
  20. package/dist/kernel/build.d.ts +564 -0
  21. package/dist/kernel/build.d.ts.map +1 -0
  22. package/dist/kernel/cameraMotion.d.ts +39 -0
  23. package/dist/kernel/cameraMotion.d.ts.map +1 -0
  24. package/dist/kernel/clock.d.ts +17 -0
  25. package/dist/kernel/clock.d.ts.map +1 -0
  26. package/dist/kernel/contactShadowPasses.d.ts +47 -0
  27. package/dist/kernel/contactShadowPasses.d.ts.map +1 -0
  28. package/dist/kernel/description.d.ts +1120 -0
  29. package/dist/kernel/description.d.ts.map +1 -0
  30. package/dist/kernel/diff.d.ts +90 -0
  31. package/dist/kernel/diff.d.ts.map +1 -0
  32. package/dist/kernel/environmentPresets.d.ts +30 -0
  33. package/dist/kernel/environmentPresets.d.ts.map +1 -0
  34. package/dist/kernel/equality.d.ts +64 -0
  35. package/dist/kernel/equality.d.ts.map +1 -0
  36. package/dist/kernel/frames.d.ts +55 -0
  37. package/dist/kernel/frames.d.ts.map +1 -0
  38. package/dist/kernel/index.d.ts +37 -0
  39. package/dist/kernel/index.d.ts.map +1 -0
  40. package/dist/kernel/index.js +335 -0
  41. package/dist/kernel/index.js.map +9 -0
  42. package/dist/kernel/instances.d.ts +26 -0
  43. package/dist/kernel/instances.d.ts.map +1 -0
  44. package/dist/kernel/labels.d.ts +45 -0
  45. package/dist/kernel/labels.d.ts.map +1 -0
  46. package/dist/kernel/loop.d.ts +49 -0
  47. package/dist/kernel/loop.d.ts.map +1 -0
  48. package/dist/kernel/materials.d.ts +24 -0
  49. package/dist/kernel/materials.d.ts.map +1 -0
  50. package/dist/kernel/motion.d.ts +36 -0
  51. package/dist/kernel/motion.d.ts.map +1 -0
  52. package/dist/kernel/orbit.d.ts +127 -0
  53. package/dist/kernel/orbit.d.ts.map +1 -0
  54. package/dist/kernel/overlays.d.ts +16 -0
  55. package/dist/kernel/overlays.d.ts.map +1 -0
  56. package/dist/kernel/performance.d.ts +41 -0
  57. package/dist/kernel/performance.d.ts.map +1 -0
  58. package/dist/kernel/physics.d.ts +166 -0
  59. package/dist/kernel/physics.d.ts.map +1 -0
  60. package/dist/kernel/physicsDebug.d.ts +18 -0
  61. package/dist/kernel/physicsDebug.d.ts.map +1 -0
  62. package/dist/kernel/pointer.d.ts +357 -0
  63. package/dist/kernel/pointer.d.ts.map +1 -0
  64. package/dist/kernel/renderKit.d.ts +48 -0
  65. package/dist/kernel/renderKit.d.ts.map +1 -0
  66. package/dist/kernel/renderer.d.ts +83 -0
  67. package/dist/kernel/renderer.d.ts.map +1 -0
  68. package/dist/kernel/resources.d.ts +112 -0
  69. package/dist/kernel/resources.d.ts.map +1 -0
  70. package/dist/kernel/sceneGraph.d.ts +155 -0
  71. package/dist/kernel/sceneGraph.d.ts.map +1 -0
  72. package/dist/kernel/sceneIndex.d.ts +90 -0
  73. package/dist/kernel/sceneIndex.d.ts.map +1 -0
  74. package/dist/kernel/stage.d.ts +87 -0
  75. package/dist/kernel/stage.d.ts.map +1 -0
  76. package/dist/kernel/textLayout.d.ts +29 -0
  77. package/dist/kernel/textLayout.d.ts.map +1 -0
  78. package/dist/kernel/tween.d.ts +35 -0
  79. package/dist/kernel/tween.d.ts.map +1 -0
  80. package/dist/kernel/xrInput.d.ts +107 -0
  81. package/dist/kernel/xrInput.d.ts.map +1 -0
  82. package/dist/kernel/xrLocomotion.d.ts +38 -0
  83. package/dist/kernel/xrLocomotion.d.ts.map +1 -0
  84. package/dist/runtime/FrameSource.d.ts +29 -0
  85. package/dist/runtime/FrameSource.d.ts.map +1 -0
  86. package/dist/runtime/ResourceRegistry.d.ts +18 -0
  87. package/dist/runtime/ResourceRegistry.d.ts.map +1 -0
  88. package/dist/runtime/SceneRuntime.d.ts +68 -0
  89. package/dist/runtime/SceneRuntime.d.ts.map +1 -0
  90. package/dist/runtime/SceneSchema.d.ts +2536 -0
  91. package/dist/runtime/SceneSchema.d.ts.map +1 -0
  92. package/dist/runtime/errors.d.ts +19 -0
  93. package/dist/runtime/errors.d.ts.map +1 -0
  94. package/dist/runtime/index.d.ts +11 -0
  95. package/dist/runtime/index.d.ts.map +1 -0
  96. package/dist/webgl/contactShadows.d.ts +5 -0
  97. package/dist/webgl/contactShadows.d.ts.map +1 -0
  98. package/dist/webgl/index.d.ts +11 -0
  99. package/dist/webgl/index.d.ts.map +1 -0
  100. package/dist/webgl/index.js +239 -0
  101. package/dist/webgl/index.js.map +13 -0
  102. package/dist/webgl/shaderGrid.d.ts +27 -0
  103. package/dist/webgl/shaderGrid.d.ts.map +1 -0
  104. package/dist/webgl/sky.d.ts +4 -0
  105. package/dist/webgl/sky.d.ts.map +1 -0
  106. package/dist/webgpu/contactShadows.d.ts +5 -0
  107. package/dist/webgpu/contactShadows.d.ts.map +1 -0
  108. package/dist/webgpu/index.d.ts +10 -0
  109. package/dist/webgpu/index.d.ts.map +1 -0
  110. package/dist/webgpu/index.js +216 -0
  111. package/dist/webgpu/index.js.map +13 -0
  112. package/dist/webgpu/shaderGrid.d.ts +5 -0
  113. package/dist/webgpu/shaderGrid.d.ts.map +1 -0
  114. package/dist/webgpu/sky.d.ts +4 -0
  115. package/dist/webgpu/sky.d.ts.map +1 -0
  116. package/package.json +82 -4
  117. package/src/index.ts +11 -0
  118. package/src/kernel/animation.ts +24 -0
  119. package/src/kernel/behaviours.ts +36 -0
  120. package/src/kernel/bodies.ts +338 -0
  121. package/src/kernel/bodySources.ts +203 -0
  122. package/src/kernel/build.ts +1325 -0
  123. package/src/kernel/cameraMotion.ts +202 -0
  124. package/src/kernel/clock.ts +35 -0
  125. package/src/kernel/contactShadowPasses.ts +207 -0
  126. package/src/kernel/description.ts +1197 -0
  127. package/src/kernel/diff.ts +383 -0
  128. package/src/kernel/environmentPresets.ts +38 -0
  129. package/src/kernel/equality.ts +604 -0
  130. package/src/kernel/frames.ts +124 -0
  131. package/src/kernel/index.ts +274 -0
  132. package/src/kernel/instances.ts +97 -0
  133. package/src/kernel/labels.ts +48 -0
  134. package/src/kernel/loop.ts +248 -0
  135. package/src/kernel/materials.ts +258 -0
  136. package/src/kernel/motion.ts +75 -0
  137. package/src/kernel/orbit.ts +554 -0
  138. package/src/kernel/overlays.ts +130 -0
  139. package/src/kernel/performance.ts +101 -0
  140. package/src/kernel/physics.ts +361 -0
  141. package/src/kernel/physicsDebug.ts +68 -0
  142. package/src/kernel/pointer.ts +785 -0
  143. package/src/kernel/renderKit.ts +53 -0
  144. package/src/kernel/renderer.ts +136 -0
  145. package/src/kernel/resources.ts +504 -0
  146. package/src/kernel/sceneGraph.ts +1440 -0
  147. package/src/kernel/sceneIndex.ts +219 -0
  148. package/src/kernel/stage.ts +157 -0
  149. package/src/kernel/textLayout.ts +102 -0
  150. package/src/kernel/tween.ts +80 -0
  151. package/src/kernel/xrInput.ts +230 -0
  152. package/src/kernel/xrLocomotion.ts +72 -0
  153. package/src/runtime/FrameSource.ts +41 -0
  154. package/src/runtime/ResourceRegistry.ts +24 -0
  155. package/src/runtime/SceneRuntime.ts +229 -0
  156. package/src/runtime/SceneSchema.ts +983 -0
  157. package/src/runtime/errors.ts +18 -0
  158. package/src/runtime/index.ts +10 -0
  159. package/src/webgl/contactShadows.ts +67 -0
  160. package/src/webgl/index.ts +19 -0
  161. package/src/webgl/shaderGrid.ts +196 -0
  162. package/src/webgl/sky.ts +42 -0
  163. package/src/webgpu/contactShadows.ts +83 -0
  164. package/src/webgpu/index.ts +19 -0
  165. package/src/webgpu/shaderGrid.ts +158 -0
  166. package/src/webgpu/sky.ts +35 -0
@@ -0,0 +1,564 @@
1
+ /**
2
+ * Constructors that fill in defaults and return fully specified descriptions.
3
+ *
4
+ * @module
5
+ */
6
+ import type { AmbientLightNode, Animation, BasicMaterial, Body, Behave, BorrowedNode, Axis, BoxGeometry, Camera, ContactShadows, Environment, Gestures, GridNode, Sky, Xr, LabelAlign, LabelAnchorX, LabelAnchorY, LabelColorRange, LabelNode, MaterialSide, ShaderGridNode, TextAlign, TextBevel, TextGeometry, Overlay, Physics, BodyRef, Joint, JointKind, JointLimits, JointMotor, InteractionGroups, ColliderDescription, CapsuleGeometry, CircleGeometry, ConeGeometry, CylinderGeometry, DirectionalLightNode, HemisphereLightNode, Instance, InstancesNode, LambertMaterial, Easing, GeometryRef, GroupNode, MaterialRef, MeshNode, NormalMaterial, ShadowMaterial, OrthographicCamera, PhongMaterial, PhysicalMaterial, PerspectiveCamera, PlaneGeometry, PointLightNode, PostEffect, RenderSettings, RenderTexture, RingGeometry, ResourceDefinitions, Rgb, Rotation, SceneDescription, SceneNode, SphereGeometry, SpotLightNode, TorusGeometry, StandardMaterial, Transition, Vec3, View, ViewRect, XrAnchor, XrGlide, XrSpace, Handedness, HandJoint } from './description.ts';
7
+ /** Model-owned Euler angles in radians. */
8
+ export declare const fixed: (euler: Vec3) => Rotation;
9
+ /** A spin behaviour: `phase + radiansPerSecond * elapsedSeconds` about `axis`. */
10
+ export declare const spin: (options: {
11
+ readonly axis: Axis;
12
+ readonly radiansPerSecond: number;
13
+ readonly phase?: number;
14
+ }) => Rotation;
15
+ /** Box geometry. Each dimension defaults to 1. */
16
+ export declare const box: (size?: {
17
+ readonly width?: number;
18
+ readonly height?: number;
19
+ readonly depth?: number;
20
+ }) => BoxGeometry;
21
+ /** Sphere geometry. Defaults (as three.js): radius 1, 32 × 16 segments. */
22
+ export declare const sphere: (options?: {
23
+ readonly radius?: number;
24
+ readonly widthSegments?: number;
25
+ readonly heightSegments?: number;
26
+ }) => SphereGeometry;
27
+ /** Plane geometry in the XY plane, facing +Z. Each dimension defaults to 1. */
28
+ export declare const plane: (size?: {
29
+ readonly width?: number;
30
+ readonly height?: number;
31
+ }) => PlaneGeometry;
32
+ /** Cylinder geometry along Y. Defaults (as three.js): radius 1 top and bottom, height 1, 32 segments. */
33
+ export declare const cylinder: (options?: {
34
+ readonly radiusTop?: number;
35
+ readonly radiusBottom?: number;
36
+ readonly height?: number;
37
+ readonly radialSegments?: number;
38
+ }) => CylinderGeometry;
39
+ /** Torus geometry. Defaults (as three.js): radius 1, tube 0.4, 12 × 48 segments. */
40
+ export declare const torus: (options?: {
41
+ readonly radius?: number;
42
+ readonly tube?: number;
43
+ readonly radialSegments?: number;
44
+ readonly tubularSegments?: number;
45
+ }) => TorusGeometry;
46
+ /** Cone geometry along Y. Defaults (as three.js): radius 1, height 1, 32 segments. */
47
+ export declare const cone: (options?: {
48
+ readonly radius?: number;
49
+ readonly height?: number;
50
+ readonly radialSegments?: number;
51
+ }) => ConeGeometry;
52
+ /** Capsule geometry along Y. Defaults (as three.js): radius 1, height 1, 4 cap and 8 radial segments. */
53
+ export declare const capsule: (options?: {
54
+ readonly radius?: number;
55
+ readonly height?: number;
56
+ readonly capSegments?: number;
57
+ readonly radialSegments?: number;
58
+ }) => CapsuleGeometry;
59
+ /** Ring geometry facing +Z. Defaults (as three.js): radii 0.5 and 1, 32 segments. */
60
+ export declare const ring: (options?: {
61
+ readonly innerRadius?: number;
62
+ readonly outerRadius?: number;
63
+ readonly thetaSegments?: number;
64
+ }) => RingGeometry;
65
+ /** Circle geometry facing +Z. Defaults (as three.js): radius 1, 32 segments. */
66
+ export declare const circle: (options?: {
67
+ readonly radius?: number;
68
+ readonly segments?: number;
69
+ }) => CircleGeometry;
70
+ /**
71
+ * Text from the typeface font lent under `font`. Defaults as Drei's `Text3D`: size 1,
72
+ * depth 0.2, 8 curve segments, no bevel (a bevel given defaults to thickness 0.1, size
73
+ * 0.01, offset 0, 4 segments), not centred. Depth 0 draws flat text. Letter spacing (in
74
+ * ems), line height (a multiple of the font's) and alignment default to the font's own
75
+ * layout, left aligned; unlike Drei, where three ignores them, they apply.
76
+ */
77
+ export declare const text: (options: {
78
+ readonly text: string;
79
+ readonly font: string;
80
+ readonly size?: number;
81
+ readonly depth?: number;
82
+ readonly curveSegments?: number;
83
+ readonly bevel?: Partial<TextBevel>;
84
+ readonly center?: boolean;
85
+ readonly letterSpacing?: number;
86
+ readonly lineHeight?: number;
87
+ readonly align?: TextAlign;
88
+ }) => TextGeometry;
89
+ /** Position and scale changes apply immediately. The default. */
90
+ export declare const instant: () => Transition;
91
+ /** Position and scale changes ease to their new values over `seconds` of scene time. */
92
+ export declare const ease: (options: {
93
+ readonly seconds: number;
94
+ readonly easing?: Easing;
95
+ }) => Transition;
96
+ /**
97
+ * Unlit material. Defaults (as three.js): white, opaque, front faces.
98
+ */
99
+ export declare const basic: (options?: Partial<Omit<BasicMaterial, '_tag'>>) => BasicMaterial;
100
+ /**
101
+ * Matte material. Defaults (as three.js): white, no emission, smooth shading.
102
+ */
103
+ export declare const lambert: (options?: Partial<Omit<LambertMaterial, '_tag'>>) => LambertMaterial;
104
+ /**
105
+ * Shiny material. Defaults (as three.js): white, specular `0x111111`, shininess 30.
106
+ */
107
+ export declare const phong: (options?: Partial<Omit<PhongMaterial, '_tag'>>) => PhongMaterial;
108
+ /**
109
+ * Physically based material. Defaults (as three.js): white, roughness 1, metalness 0.
110
+ */
111
+ export declare const standard: (options?: Partial<Omit<StandardMaterial, '_tag'>>) => StandardMaterial;
112
+ /**
113
+ * Physically based material with clearcoat and transmission. Defaults (as three.js):
114
+ * the standard defaults, no clearcoat or transmission, index of refraction 1.5.
115
+ */
116
+ export declare const physical: (options?: Partial<Omit<PhysicalMaterial, '_tag'>>) => PhysicalMaterial;
117
+ /**
118
+ * Normal-coloured material, for debugging geometry. Defaults as three.js.
119
+ */
120
+ export declare const normalMaterial: (options?: Partial<Omit<NormalMaterial, '_tag'>>) => NormalMaterial;
121
+ /**
122
+ * A shadow catcher: shows only the shadows cast onto it (three.js's `ShadowMaterial`).
123
+ * Defaults as three.js: black, opacity 1. Needs `render.shadows` and `receiveShadow`.
124
+ */
125
+ export declare const shadowMaterial: (options?: {
126
+ readonly color?: Rgb;
127
+ readonly opacity?: number;
128
+ }) => ShadowMaterial;
129
+ /**
130
+ * A grid of lines on the XZ plane (three.js's `GridHelper`). Defaults as three.js: 10
131
+ * across, 10 divisions, lines 0x888888 and centre lines 0x444444, at the origin.
132
+ */
133
+ export declare const grid: (options: {
134
+ readonly key: string;
135
+ readonly position?: Vec3;
136
+ readonly size?: number;
137
+ readonly divisions?: number;
138
+ readonly color?: Rgb;
139
+ readonly centerColor?: Rgb;
140
+ }) => GridNode;
141
+ /**
142
+ * Drei's `Grid`, with its defaults: a 1 × 1 plane (pass `size`, or `infinite`), cells 0.5
143
+ * apart in black at thickness 0.5, sections 1 apart in `#2080ff` at thickness 1, fading
144
+ * over 100 units from the camera at strength 1, drawn on the back side.
145
+ */
146
+ export declare const shaderGrid: (options: {
147
+ readonly key: string;
148
+ readonly position?: Vec3;
149
+ readonly rotation?: Vec3;
150
+ readonly size?: readonly [width: number, height: number];
151
+ readonly cellSize?: number;
152
+ readonly cellThickness?: number;
153
+ readonly cellColor?: Rgb;
154
+ readonly sectionSize?: number;
155
+ readonly sectionThickness?: number;
156
+ readonly sectionColor?: Rgb;
157
+ readonly infinite?: boolean;
158
+ readonly followCamera?: boolean;
159
+ readonly fadeDistance?: number;
160
+ readonly fadeStrength?: number;
161
+ readonly fadeFrom?: number;
162
+ readonly side?: MaterialSide;
163
+ }) => ShaderGridNode;
164
+ /** A reference to a shared geometry defined in the scene's resources. */
165
+ export declare const sharedGeometry: (id: string) => GeometryRef;
166
+ /** A geometry lent under `id` (`store.lendGeometry`): empty until it is lent. */
167
+ export declare const lentGeometry: (id: string) => GeometryRef;
168
+ /** A reference to a shared material defined in the scene's resources. */
169
+ export declare const sharedMaterial: (id: string) => MaterialRef;
170
+ /** Key and optional transform shared by `group` and `mesh`. */
171
+ export type TransformOptions = {
172
+ readonly key: string;
173
+ readonly position?: Vec3;
174
+ readonly rotation?: Rotation;
175
+ readonly scale?: Vec3;
176
+ /** How position and scale changes are shown. Defaults to `instant()`. */
177
+ readonly transition?: Transition /** A registered behaviour to apply on top of the transform. */;
178
+ readonly behaviour?: Behave | null;
179
+ };
180
+ /** A group of child nodes. */
181
+ export declare const group: (options: TransformOptions & {
182
+ readonly interactive?: boolean;
183
+ readonly children?: ReadonlyArray<SceneNode>;
184
+ readonly body?: Body | null;
185
+ readonly follow?: XrSpace | null;
186
+ }) => GroupNode;
187
+ /** The head (the viewer), for content that stays in view. */
188
+ export declare const headSpace: () => XrSpace;
189
+ /** A tracked hand's joint (`index-finger-tip`, say). */
190
+ export declare const jointSpace: (hand: Handedness, joint: HandJoint) => XrSpace;
191
+ /** A controller's grip (where it is held) or its pointing ray. */
192
+ export declare const controllerSpace: (hand: Handedness, space?: 'grip' | 'ray') => XrSpace;
193
+ /** An anchor the scene placed with `xr({ anchors })`. */
194
+ export declare const anchorSpace: (id: string) => XrSpace;
195
+ /** A detected plane, by the id an `XrPlanes` event gave it. */
196
+ export declare const planeSpace: (id: string) => XrSpace;
197
+ /** A mesh the session detected (`xr({ meshes: true })`), by its id from `XrMeshes`. */
198
+ export declare const meshSpace: (id: string) => XrSpace;
199
+ /** The id a detected mesh's geometry is lent under, for `xrMesh` and the adapter. */
200
+ export declare const xrMeshGeometryId: (id: string) => string;
201
+ /**
202
+ * A detected mesh's geometry (`xr({ meshes: true })`), in its own space: put it in a
203
+ * group following `meshSpace(id)`. Empty until the session has detected it.
204
+ */
205
+ export declare const xrMesh: (id: string) => GeometryRef;
206
+ /** An anchor at a place in the scene (Euler rotation, unturned by default). */
207
+ export declare const xrAnchor: (options: {
208
+ readonly id: string;
209
+ readonly position: Vec3;
210
+ readonly rotation?: Vec3;
211
+ }) => XrAnchor;
212
+ /** A mesh. Not interactive unless `interactive` is true. */
213
+ export declare const mesh: (options: TransformOptions & {
214
+ readonly geometry: GeometryRef;
215
+ readonly material: MaterialRef;
216
+ readonly interactive?: boolean;
217
+ readonly castShadow?: boolean;
218
+ readonly receiveShadow?: boolean;
219
+ readonly body?: Body | null;
220
+ }) => MeshNode;
221
+ /**
222
+ * A rigid body for a mesh. Defaults as react-three-rapier's `RigidBody` and Rapier: dynamic,
223
+ * a cuboid collider from the bounding box, density 1, friction 0.5, restitution 0, no
224
+ * damping, gravity scale 1, no CCD, not a sensor, at rest, no impulse.
225
+ */
226
+ export declare const body: (options?: Partial<Body>) => Body;
227
+ /**
228
+ * Collision groups, as react-three-rapier's `interactionGroups(memberships, filters)`:
229
+ * in `memberships` (0 to 15), interacting with `filters` (every group when omitted).
230
+ */
231
+ export declare const interactionGroups: (memberships: number | ReadonlyArray<number>, filters?: number | ReadonlyArray<number>) => InteractionGroups;
232
+ /** A box collider, `halfExtents` from its middle, as react-three-rapier's `CuboidCollider`. */
233
+ export declare const cuboidCollider: (options: {
234
+ readonly halfExtents: Vec3;
235
+ readonly position?: Vec3;
236
+ readonly rotation?: Vec3;
237
+ readonly name?: string | null;
238
+ }) => ColliderDescription;
239
+ /** A ball collider, as `BallCollider`. */
240
+ export declare const ballCollider: (options: {
241
+ readonly radius: number;
242
+ readonly position?: Vec3;
243
+ readonly name?: string | null;
244
+ }) => ColliderDescription;
245
+ type Upright = {
246
+ readonly halfHeight: number;
247
+ readonly radius: number;
248
+ readonly position?: Vec3;
249
+ readonly rotation?: Vec3;
250
+ /** The name collisions report this collider by. */
251
+ readonly name?: string | null;
252
+ };
253
+ /** A capsule collider along y: `halfHeight` of cylinder, capped by `radius`. */
254
+ export declare const capsuleCollider: (options: Upright) => ColliderDescription;
255
+ /** A cylinder collider along y. */
256
+ export declare const cylinderCollider: (options: Upright) => ColliderDescription;
257
+ /** A cone collider along y, its point up. */
258
+ export declare const coneCollider: (options: Upright) => ColliderDescription;
259
+ /** A motor turning (or sliding) at `velocity`, with `factor` how hard it holds the speed. */
260
+ export declare const velocityMotor: (velocity: number, factor?: number) => JointMotor;
261
+ /** A motor holding `position`, as a spring of `stiffness` damped by `damping`. */
262
+ export declare const positionMotor: (position: number, stiffness: number, damping: number) => JointMotor;
263
+ /**
264
+ * A physics world. Defaults as react-three-rapier's `Physics`: Earth gravity
265
+ * `[0, -9.81, 0]`, running, fixed steps of 1/60 s, interpolated; no joints.
266
+ */
267
+ export declare const physics: (options?: Partial<Physics>) => Physics;
268
+ /** A node's body (`instance` omitted), or one instance's of an instances node. */
269
+ export declare const bodyRef: (key: string, instance?: string | null) => BodyRef;
270
+ /**
271
+ * A joint between two bodies, named by node key or `bodyRef`. Anchors default to each
272
+ * body's origin; the bodies still collide with each other unless `contacts` is false.
273
+ */
274
+ export declare const joint: (options: {
275
+ readonly key: string;
276
+ readonly a: string | BodyRef;
277
+ readonly b: string | BodyRef;
278
+ readonly anchorA?: Vec3;
279
+ readonly anchorB?: Vec3;
280
+ readonly kind: JointKind;
281
+ readonly contacts?: boolean;
282
+ }) => Joint;
283
+ /** Holds two bodies still relative to each other. Frames default to unturned. */
284
+ export declare const fixedJoint: (options?: {
285
+ readonly frameA?: Vec3;
286
+ readonly frameB?: Vec3;
287
+ }) => JointKind;
288
+ /** A ball and socket at the anchors. */
289
+ export declare const sphericalJoint: () => JointKind;
290
+ /** A hinge about `axis` (each body's own), limited to `limits` radians and driven by `motor` if given. */
291
+ export declare const revoluteJoint: (options: {
292
+ readonly axis: Vec3;
293
+ readonly limits?: JointLimits | null;
294
+ readonly motor?: JointMotor | null;
295
+ }) => JointKind;
296
+ /** A slider along `axis`, limited to `limits` and driven by `motor` if given. */
297
+ export declare const prismaticJoint: (options: {
298
+ readonly axis: Vec3;
299
+ readonly limits?: JointLimits | null;
300
+ readonly motor?: JointMotor | null;
301
+ }) => JointKind;
302
+ /** Keeps the anchors at most `length` apart. */
303
+ export declare const ropeJoint: (length: number) => JointKind;
304
+ /** Pulls the anchors towards `restLength` apart. */
305
+ export declare const springJoint: (options: {
306
+ readonly restLength: number;
307
+ readonly stiffness: number;
308
+ readonly damping: number;
309
+ }) => JointKind;
310
+ /**
311
+ * Gliding with the thumbsticks while presenting. Defaults as pmndrs/xr's
312
+ * `useXRControllerLocomotion`: 2 m/s, a snap turn of 45° (smooth turns at 2 rad/s).
313
+ */
314
+ export declare const glide: (options?: Partial<XrGlide>) => XrGlide;
315
+ /**
316
+ * Immersive presentation for a scene. Defaults: the player at the scene's origin facing
317
+ * −z, `local-floor` (as pmndrs/xr), the device's framebuffer scale, inputs drawn (rays
318
+ * and hand joints, where pmndrs/xr draws controller and hand models), no AR hit tests.
319
+ */
320
+ export declare const xr: (options?: Partial<Xr>) => Xr;
321
+ /** One instance. Defaults: at the origin, unrotated, unit scale, white. */
322
+ export declare const instance: (options: {
323
+ readonly key: string;
324
+ readonly position?: Vec3;
325
+ readonly rotation?: Vec3;
326
+ readonly scale?: Vec3;
327
+ readonly color?: Rgb;
328
+ }) => Instance;
329
+ /** Many instances of one geometry and material, drawn together. Not interactive by default. */
330
+ export declare const instances: (options: TransformOptions & {
331
+ readonly geometry: GeometryRef;
332
+ readonly material: MaterialRef;
333
+ readonly instances: ReadonlyArray<Instance>;
334
+ readonly interactive?: boolean;
335
+ readonly castShadow?: boolean;
336
+ readonly receiveShadow?: boolean;
337
+ readonly body?: Body | null;
338
+ }) => InstancesNode;
339
+ /** Applies a registered behaviour by name. Parameters default to the behaviour's own. */
340
+ export declare const behave: (name: string, params?: Readonly<Record<string, number>>) => Behave;
341
+ /** Plays an animation clip by name. Defaults: normal speed, looping. */
342
+ export declare const play: (clip: string, options?: {
343
+ readonly speed?: number;
344
+ readonly loop?: boolean;
345
+ }) => Animation;
346
+ /** An object lent to the resource store under `id`. Not interactive by default. */
347
+ export declare const borrowed: (options: TransformOptions & {
348
+ readonly id: string;
349
+ readonly interactive?: boolean;
350
+ readonly animation?: Animation | null;
351
+ readonly body?: Body | null;
352
+ }) => BorrowedNode;
353
+ export declare const label: (options: TransformOptions & {
354
+ readonly text: string;
355
+ readonly font?: string | null;
356
+ readonly fontSize?: number;
357
+ readonly color?: Rgb;
358
+ readonly fillOpacity?: number;
359
+ readonly anchorX?: LabelAnchorX;
360
+ readonly anchorY?: LabelAnchorY;
361
+ readonly maxWidth?: number | null;
362
+ readonly lineHeight?: number | null;
363
+ readonly letterSpacing?: number;
364
+ readonly textAlign?: LabelAlign;
365
+ readonly outlineWidth?: number;
366
+ readonly outlineColor?: Rgb;
367
+ readonly outlineOpacity?: number;
368
+ readonly outlineBlur?: number;
369
+ readonly colorRanges?: ReadonlyArray<LabelColorRange>;
370
+ readonly curveRadius?: number;
371
+ readonly material?: MaterialRef | null;
372
+ readonly interactive?: boolean;
373
+ }) => LabelNode;
374
+ /** A run of a label's characters in `color`, from character index `start`. */
375
+ export declare const colorRange: (start: number, color: Rgb) => LabelColorRange;
376
+ /** Ambient light. Defaults: white, intensity 1. */
377
+ export declare const ambientLight: (options: {
378
+ readonly key: string;
379
+ readonly color?: Rgb;
380
+ readonly intensity?: number;
381
+ }) => AmbientLightNode;
382
+ /**
383
+ * Directional light. Defaults: white, intensity 1, shining from `[0, 1, 0]`; no shadow,
384
+ * or a 512² shadow map covering ±5 world units (three.js's defaults) when casting.
385
+ */
386
+ export declare const directionalLight: (options: {
387
+ readonly key: string;
388
+ readonly color?: Rgb;
389
+ readonly intensity?: number;
390
+ readonly position?: Vec3;
391
+ readonly castShadow?: boolean;
392
+ readonly shadowMapSize?: number;
393
+ readonly shadowBias?: number;
394
+ readonly shadowArea?: number;
395
+ }) => DirectionalLightNode;
396
+ /** Point light. Defaults (as three.js): white, intensity 1, at the origin, no cut-off, decay 2. */
397
+ export declare const pointLight: (options: {
398
+ readonly key: string;
399
+ readonly color?: Rgb;
400
+ readonly intensity?: number;
401
+ readonly position?: Vec3;
402
+ readonly distance?: number;
403
+ readonly decay?: number;
404
+ readonly castShadow?: boolean;
405
+ readonly shadowMapSize?: number;
406
+ readonly shadowBias?: number;
407
+ }) => PointLightNode;
408
+ /**
409
+ * Spot light. Defaults (as three.js): white, intensity 1, at `[0, 1, 0]` aimed at the
410
+ * origin, no cut-off, a π/3 half-angle, a hard edge and decay 2.
411
+ */
412
+ export declare const spotLight: (options: {
413
+ readonly key: string;
414
+ readonly color?: Rgb;
415
+ readonly intensity?: number;
416
+ readonly position?: Vec3;
417
+ readonly target?: Vec3;
418
+ readonly distance?: number;
419
+ readonly angle?: number;
420
+ readonly penumbra?: number;
421
+ readonly decay?: number;
422
+ readonly castShadow?: boolean;
423
+ readonly shadowMapSize?: number;
424
+ readonly shadowBias?: number;
425
+ }) => SpotLightNode;
426
+ /** Hemisphere light. Defaults (as three.js): white sky and ground, intensity 1, from `[0, 1, 0]`. */
427
+ export declare const hemisphereLight: (options: {
428
+ readonly key: string;
429
+ readonly color?: Rgb;
430
+ readonly groundColor?: Rgb;
431
+ readonly intensity?: number;
432
+ readonly position?: Vec3;
433
+ }) => HemisphereLightNode;
434
+ /**
435
+ * Perspective camera. Defaults: fov 50, near 0.1, far 100, at `[0, 0, 5]` looking at the
436
+ * origin, no damping, not turning.
437
+ */
438
+ export declare const perspectiveCamera: (options?: Partial<Omit<PerspectiveCamera, '_tag'>>) => PerspectiveCamera;
439
+ /**
440
+ * Orthographic camera. Defaults (as React Three Fiber): zoom 1 (one CSS pixel per world
441
+ * unit, so set it), near 0.1, far 1000, at `[0, 0, 5]` looking at the origin.
442
+ */
443
+ export declare const orthographicCamera: (options?: Partial<Omit<OrthographicCamera, '_tag'>>) => OrthographicCamera;
444
+ /**
445
+ * Bloom: bright areas glow. Defaults: strength 1 (as three.js), radius 0.4 and threshold
446
+ * 0.85, so only the brightest areas bloom (three.js leaves these two unset).
447
+ */
448
+ export declare const bloom: (options?: {
449
+ readonly strength?: number;
450
+ readonly radius?: number;
451
+ readonly threshold?: number;
452
+ }) => PostEffect;
453
+ /** Vignette: darker edges. Defaults (as three.js's `VignetteShader`): offset 1, darkness 1. */
454
+ export declare const vignette: (options?: {
455
+ readonly offset?: number;
456
+ readonly darkness?: number;
457
+ }) => PostEffect;
458
+ /** Film grain. Defaults (as three.js's `FilmPass`): intensity 0.5, in colour. */
459
+ export declare const film: (options?: {
460
+ readonly intensity?: number;
461
+ readonly grayscale?: boolean;
462
+ }) => PostEffect;
463
+ /**
464
+ * Render settings. Defaults: frames on demand, full resolution, shadows off, no tone
465
+ * mapping, exposure 1, sRGB output. Two deliberate differences from React Three Fiber:
466
+ *
467
+ * - Frames default to `demand`, not `always`. Every visual change passes through the
468
+ * kernel, which knows when a frame is needed, so nothing has to call `invalidate` and
469
+ * idle scenes stop drawing.
470
+ * - Tone mapping defaults to `none`, not ACES, so a validated palette renders as given.
471
+ */
472
+ export declare const renderSettings: (options?: Partial<RenderSettings>) => RenderSettings;
473
+ /** A view of the scene through `camera` into `rect` of the canvas (default: all of it). */
474
+ export declare const view: (options: {
475
+ readonly key: string;
476
+ readonly camera: Camera;
477
+ readonly rect?: Partial<ViewRect>;
478
+ }) => View;
479
+ /**
480
+ * A scene rendered into a texture, lent under `id` for materials' `map`. Defaults:
481
+ * 512 × 512, the default camera, transparent.
482
+ */
483
+ export declare const renderTexture: (options: {
484
+ readonly id: string;
485
+ readonly width?: number;
486
+ readonly height?: number;
487
+ readonly camera?: Camera;
488
+ readonly background?: Rgb | null;
489
+ readonly children?: ReadonlyArray<SceneNode>;
490
+ }) => RenderTexture;
491
+ /** A scene description. */
492
+ /**
493
+ * Image-based lighting (Drei's `Environment`). Defaults as Drei: lighting only, no blur,
494
+ * intensities 1. Without `map`, three.js's `RoomEnvironment`; with it, the equirectangular
495
+ * texture lent under that id.
496
+ */
497
+ export declare const environment: (options?: {
498
+ readonly map?: string;
499
+ readonly background?: boolean | 'only';
500
+ readonly backgroundBlurriness?: number;
501
+ readonly backgroundIntensity?: number;
502
+ readonly environmentIntensity?: number;
503
+ }) => Environment;
504
+ /**
505
+ * Where Drei puts the sun from an inclination and azimuth, both 0 to 1
506
+ * (`calcPosFromAngles` in `src/core/Sky.tsx`).
507
+ */
508
+ export declare const sunPositionFromAngles: (inclination: number, azimuth: number) => Vec3;
509
+ /**
510
+ * A daylight sky. Defaults as Drei's `Sky`: the sun from inclination 0.6 and azimuth 0.1,
511
+ * turbidity 10, rayleigh 0.5, mie coefficient 0.005 and directional G 0.8, distance 1000,
512
+ * and no clouds. The sky is high dynamic range: use tone mapping (`aces`, as three.js's
513
+ * example and React Three Fiber's default), or it washes out to white.
514
+ */
515
+ export declare const sky: (options?: Partial<Sky>) => Sky;
516
+ /**
517
+ * Soft ground shadows (Drei's `ContactShadows`). Defaults as Drei: a 10 × 10 plane at the
518
+ * origin (Drei's `scale` 10), shadows from 0 to 10 units above, blur 1 with the smooth
519
+ * pass, opacity 1, black, 512 texels.
520
+ */
521
+ export declare const contactShadows: (options?: {
522
+ readonly position?: Vec3;
523
+ readonly size?: number | readonly [number, number];
524
+ readonly near?: number;
525
+ readonly far?: number;
526
+ readonly blur?: number;
527
+ readonly smooth?: boolean;
528
+ readonly opacity?: number;
529
+ readonly color?: Rgb;
530
+ readonly resolution?: number;
531
+ }) => ContactShadows;
532
+ /**
533
+ * A point to show HTML at (Drei's `Html`). Defaults: world space at the origin, not
534
+ * centred, constant size, never occluded, Drei's z-index range, the main camera.
535
+ */
536
+ export declare const overlay: (options: {
537
+ readonly key: string;
538
+ readonly node?: string;
539
+ readonly position?: Vec3;
540
+ readonly center?: boolean;
541
+ readonly distanceFactor?: number;
542
+ readonly occlude?: boolean;
543
+ readonly zIndexRange?: readonly [number, number];
544
+ readonly view?: string;
545
+ }) => Overlay;
546
+ export declare const scene: (options: {
547
+ readonly camera?: Camera;
548
+ readonly gestures?: Gestures;
549
+ readonly views?: ReadonlyArray<View>;
550
+ readonly renderTextures?: ReadonlyArray<RenderTexture>;
551
+ readonly overlays?: ReadonlyArray<Overlay>;
552
+ /** Optional staging: leave out or pass `null` for none, so a Model can switch it off. */
553
+ readonly environment?: Environment | null;
554
+ readonly sky?: Sky | null;
555
+ readonly contactShadows?: ContactShadows | null;
556
+ readonly physics?: Physics | null;
557
+ readonly xr?: Xr | null;
558
+ readonly measure?: ReadonlyArray<string>;
559
+ readonly render?: RenderSettings;
560
+ readonly resources?: Partial<ResourceDefinitions>;
561
+ readonly children?: ReadonlyArray<SceneNode>;
562
+ }) => SceneDescription;
563
+ export {};
564
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/kernel/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * How the rendered camera reaches its description: at once, or damped round its target;
3
+ * and how it turns round its target by itself (`autoRotate`).
4
+ *
5
+ * Behavioural reference: three.js `examples/jsm/controls/OrbitControls.js` at 0.186.1,
6
+ * `update` with `enableDamping`: each update closes `dampingFactor` of the remaining
7
+ * rotation and pan. Here the remaining way to the described pose closes by that fraction
8
+ * every sixtieth of a second of scene time, so the motion is the same at any frame rate,
9
+ * and the camera travels round the target (azimuth the short way) rather than through it.
10
+ * `autoRotate` is `update` with `autoRotate`: `rotateLeft` by `2π / 60 * autoRotateSpeed`
11
+ * a second, only while no gesture is in progress (`state === NONE`).
12
+ *
13
+ * @module
14
+ */
15
+ import { OrthographicCamera, type PerspectiveCamera } from 'three';
16
+ import type { Camera, Vec3 } from './description.ts';
17
+ export type CameraMotion = {
18
+ /**
19
+ * Aims at a described pose at scene time `now`. It is shown at once when `jump` is
20
+ * true, the camera has no damping, or nothing was shown before; otherwise `step`
21
+ * travels there. A new position, `lookAt` or zoom ends any turning (`autoRotate`).
22
+ */
23
+ readonly aim: (camera: PerspectiveCamera | OrthographicCamera, description: Camera, now: number, jump: boolean) => void;
24
+ /**
25
+ * Turns (`autoRotate`) and travels toward the aim up to scene time `now`. Returns
26
+ * whether it is still moving.
27
+ */
28
+ readonly step: (camera: PerspectiveCamera | OrthographicCamera, now: number) => boolean;
29
+ /** Lands on the aim at once. */
30
+ readonly settle: (camera: PerspectiveCamera | OrthographicCamera) => void;
31
+ readonly moving: () => boolean;
32
+ /** Stops turning while `held` (a gesture is pressed), as `OrbitControls` turns only idle. */
33
+ readonly hold: (held: boolean) => void;
34
+ /** Where turning has taken the camera, when it has turned since its description. */
35
+ readonly turned: () => Vec3 | undefined;
36
+ };
37
+ /** Creates the motion of one camera. Allocation-free once created. */
38
+ export declare const createCameraMotion: () => CameraMotion;
39
+ //# sourceMappingURL=cameraMotion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cameraMotion.d.ts","sourceRoot":"","sources":["../../src/kernel/cameraMotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,kBAAkB,EAAE,KAAK,iBAAiB,EAAsB,MAAM,OAAO,CAAC;AAEvF,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAwDrD,MAAM,MAAM,YAAY,GAAG;IACzB;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,CACZ,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,EAC9C,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,KACV,IAAI,CAAC;IACV;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACxF,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,KAAK,IAAI,CAAC;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC;IAC/B,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,SAAS,CAAC;CACzC,CAAC;AAKF,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,QAAO,YAmGrC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Scene time. Behaviours read elapsed seconds from here; pausing animation (for example
3
+ * under `prefers-reduced-motion`) freezes scene time while frames keep rendering, and
4
+ * resuming continues from the frozen value rather than jumping ahead.
5
+ *
6
+ * @module
7
+ */
8
+ export type SceneClock = {
9
+ /** Scene seconds elapsed while animating. */
10
+ readonly elapsedSeconds: () => number;
11
+ /** Freezes (`false`) or resumes (`true`) scene time. Idempotent. */
12
+ readonly setAnimating: (animating: boolean) => void;
13
+ readonly animating: () => boolean;
14
+ };
15
+ /** Creates a scene clock over a monotonic source of seconds. */
16
+ export declare const createSceneClock: (nowSeconds: () => number) => SceneClock;
17
+ //# sourceMappingURL=clock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/kernel/clock.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,UAAU,GAAG;IACvB,6CAA6C;IAC7C,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IACtC,oEAAoE;IACpE,QAAQ,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;CACnC,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,eAAgB,MAAM,MAAM,KAAG,UAiB3D,CAAC"}