nucleation 0.10.21 → 0.10.23

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 (314) hide show
  1. package/BlockPos.mjs +1 -0
  2. package/Dimensions.mjs +1 -0
  3. package/FieldRange.mjs +1 -0
  4. package/ItemScale.mjs +1 -0
  5. package/MeshBounds.mjs +1 -0
  6. package/MeshProgress.mjs +1 -0
  7. package/README.md +12 -0
  8. package/RegionBounds.mjs +1 -0
  9. package/Schematic.d.mts +32 -0
  10. package/Schematic.d.ts +32 -0
  11. package/Schematic.mjs +100 -0
  12. package/SdfBounds.mjs +1 -0
  13. package/SdfNormal.mjs +1 -0
  14. package/TextureInfo.mjs +1 -0
  15. package/diplomat-runtime.mjs +19 -14
  16. package/nucleation.wasm +0 -0
  17. package/package.json +7 -2
  18. package/renderer/AnimationEffect.d.mts +44 -0
  19. package/renderer/AnimationEffect.d.ts +44 -0
  20. package/renderer/AnimationEffect.mjs +204 -0
  21. package/renderer/Autostack.d.mts +43 -0
  22. package/renderer/Autostack.d.ts +43 -0
  23. package/renderer/Autostack.mjs +134 -0
  24. package/renderer/BlockPos.d.mts +28 -0
  25. package/renderer/BlockPos.d.ts +28 -0
  26. package/renderer/BlockPos.mjs +130 -0
  27. package/renderer/BlockState.d.mts +39 -0
  28. package/renderer/BlockState.d.ts +39 -0
  29. package/renderer/BlockState.mjs +134 -0
  30. package/renderer/Blocks.d.mts +91 -0
  31. package/renderer/Blocks.d.ts +91 -0
  32. package/renderer/Blocks.mjs +308 -0
  33. package/renderer/Brush.d.mts +99 -0
  34. package/renderer/Brush.d.ts +99 -0
  35. package/renderer/Brush.mjs +335 -0
  36. package/renderer/BuildAnimation.d.mts +179 -0
  37. package/renderer/BuildAnimation.d.ts +179 -0
  38. package/renderer/BuildAnimation.mjs +1148 -0
  39. package/renderer/BuildingTool.d.mts +46 -0
  40. package/renderer/BuildingTool.d.ts +46 -0
  41. package/renderer/BuildingTool.mjs +121 -0
  42. package/renderer/CellExecutor.d.mts +51 -0
  43. package/renderer/CellExecutor.d.ts +51 -0
  44. package/renderer/CellExecutor.mjs +171 -0
  45. package/renderer/CellularSdfConfig.d.mts +22 -0
  46. package/renderer/CellularSdfConfig.d.ts +22 -0
  47. package/renderer/CellularSdfConfig.mjs +69 -0
  48. package/renderer/ChunkMeshResult.d.mts +75 -0
  49. package/renderer/ChunkMeshResult.d.ts +75 -0
  50. package/renderer/ChunkMeshResult.mjs +253 -0
  51. package/renderer/CircuitBuilder.d.mts +118 -0
  52. package/renderer/CircuitBuilder.d.ts +118 -0
  53. package/renderer/CircuitBuilder.mjs +516 -0
  54. package/renderer/Curve3D.d.mts +27 -0
  55. package/renderer/Curve3D.d.ts +27 -0
  56. package/renderer/Curve3D.mjs +101 -0
  57. package/renderer/DefinitionRegion.d.mts +274 -0
  58. package/renderer/DefinitionRegion.d.ts +274 -0
  59. package/renderer/DefinitionRegion.mjs +973 -0
  60. package/renderer/Design.d.mts +348 -0
  61. package/renderer/Design.d.ts +348 -0
  62. package/renderer/Design.mjs +1334 -0
  63. package/renderer/Diff.d.mts +88 -0
  64. package/renderer/Diff.d.ts +88 -0
  65. package/renderer/Diff.mjs +316 -0
  66. package/renderer/Dimensions.d.mts +28 -0
  67. package/renderer/Dimensions.d.ts +28 -0
  68. package/renderer/Dimensions.mjs +130 -0
  69. package/renderer/DistanceField.d.mts +39 -0
  70. package/renderer/DistanceField.d.ts +39 -0
  71. package/renderer/DistanceField.mjs +114 -0
  72. package/renderer/ExecutionMode.d.mts +42 -0
  73. package/renderer/ExecutionMode.d.ts +42 -0
  74. package/renderer/ExecutionMode.mjs +127 -0
  75. package/renderer/Field3.d.mts +40 -0
  76. package/renderer/Field3.d.ts +40 -0
  77. package/renderer/Field3.mjs +160 -0
  78. package/renderer/FieldProgram.d.mts +40 -0
  79. package/renderer/FieldProgram.d.ts +40 -0
  80. package/renderer/FieldProgram.mjs +167 -0
  81. package/renderer/FieldProgramBinaryOp.d.mts +42 -0
  82. package/renderer/FieldProgramBinaryOp.d.ts +42 -0
  83. package/renderer/FieldProgramBinaryOp.mjs +118 -0
  84. package/renderer/FieldProgramBuilder.d.mts +104 -0
  85. package/renderer/FieldProgramBuilder.d.ts +104 -0
  86. package/renderer/FieldProgramBuilder.mjs +486 -0
  87. package/renderer/FieldProgramDistanceKind.d.mts +26 -0
  88. package/renderer/FieldProgramDistanceKind.d.ts +26 -0
  89. package/renderer/FieldProgramDistanceKind.mjs +78 -0
  90. package/renderer/FieldProgramUnaryOp.d.mts +34 -0
  91. package/renderer/FieldProgramUnaryOp.d.ts +34 -0
  92. package/renderer/FieldProgramUnaryOp.mjs +102 -0
  93. package/renderer/FieldProgramValueType.d.mts +25 -0
  94. package/renderer/FieldProgramValueType.d.ts +25 -0
  95. package/renderer/FieldProgramValueType.mjs +75 -0
  96. package/renderer/FieldRange.d.mts +15 -0
  97. package/renderer/FieldRange.d.ts +15 -0
  98. package/renderer/FieldRange.mjs +109 -0
  99. package/renderer/Fingerprint.d.mts +44 -0
  100. package/renderer/Fingerprint.d.ts +44 -0
  101. package/renderer/Fingerprint.mjs +197 -0
  102. package/renderer/GeneratedChunk.d.mts +35 -0
  103. package/renderer/GeneratedChunk.d.ts +35 -0
  104. package/renderer/GeneratedChunk.mjs +178 -0
  105. package/renderer/GeneratedChunkCoverage.d.mts +25 -0
  106. package/renderer/GeneratedChunkCoverage.d.ts +25 -0
  107. package/renderer/GeneratedChunkCoverage.mjs +75 -0
  108. package/renderer/GeneratedChunkOverlayMode.d.mts +24 -0
  109. package/renderer/GeneratedChunkOverlayMode.d.ts +24 -0
  110. package/renderer/GeneratedChunkOverlayMode.mjs +72 -0
  111. package/renderer/GeneratedWorldStream.d.mts +28 -0
  112. package/renderer/GeneratedWorldStream.d.ts +28 -0
  113. package/renderer/GeneratedWorldStream.mjs +86 -0
  114. package/renderer/Geo.d.mts +41 -0
  115. package/renderer/Geo.d.ts +41 -0
  116. package/renderer/Geo.mjs +121 -0
  117. package/renderer/Hdl.d.mts +56 -0
  118. package/renderer/Hdl.d.ts +56 -0
  119. package/renderer/Hdl.mjs +163 -0
  120. package/renderer/InterpolationSpace.d.mts +25 -0
  121. package/renderer/InterpolationSpace.d.ts +25 -0
  122. package/renderer/InterpolationSpace.mjs +73 -0
  123. package/renderer/IoLayout.d.mts +26 -0
  124. package/renderer/IoLayout.d.ts +26 -0
  125. package/renderer/IoLayout.mjs +81 -0
  126. package/renderer/IoLayoutBuilder.d.mts +73 -0
  127. package/renderer/IoLayoutBuilder.d.ts +73 -0
  128. package/renderer/IoLayoutBuilder.mjs +315 -0
  129. package/renderer/IoType.d.mts +41 -0
  130. package/renderer/IoType.d.ts +41 -0
  131. package/renderer/IoType.mjs +125 -0
  132. package/renderer/ItemModelConfig.d.mts +65 -0
  133. package/renderer/ItemModelConfig.d.ts +65 -0
  134. package/renderer/ItemModelConfig.mjs +223 -0
  135. package/renderer/ItemModelPackBuilder.d.mts +32 -0
  136. package/renderer/ItemModelPackBuilder.d.ts +32 -0
  137. package/renderer/ItemModelPackBuilder.mjs +104 -0
  138. package/renderer/ItemModelResult.d.mts +72 -0
  139. package/renderer/ItemModelResult.d.ts +72 -0
  140. package/renderer/ItemModelResult.mjs +268 -0
  141. package/renderer/ItemScale.d.mts +31 -0
  142. package/renderer/ItemScale.d.ts +31 -0
  143. package/renderer/ItemScale.mjs +133 -0
  144. package/renderer/LayoutFunction.d.mts +52 -0
  145. package/renderer/LayoutFunction.d.ts +52 -0
  146. package/renderer/LayoutFunction.mjs +159 -0
  147. package/renderer/MchprsWorld.d.mts +131 -0
  148. package/renderer/MchprsWorld.d.ts +131 -0
  149. package/renderer/MchprsWorld.mjs +423 -0
  150. package/renderer/MeshBounds.d.mts +40 -0
  151. package/renderer/MeshBounds.d.ts +40 -0
  152. package/renderer/MeshBounds.mjs +181 -0
  153. package/renderer/MeshConfig.d.mts +101 -0
  154. package/renderer/MeshConfig.d.ts +101 -0
  155. package/renderer/MeshConfig.mjs +306 -0
  156. package/renderer/MeshJob.d.mts +44 -0
  157. package/renderer/MeshJob.d.ts +44 -0
  158. package/renderer/MeshJob.mjs +116 -0
  159. package/renderer/MeshPhase.d.mts +38 -0
  160. package/renderer/MeshPhase.d.ts +38 -0
  161. package/renderer/MeshPhase.mjs +90 -0
  162. package/renderer/MeshProgress.d.mts +32 -0
  163. package/renderer/MeshProgress.d.ts +32 -0
  164. package/renderer/MeshProgress.mjs +134 -0
  165. package/renderer/MeshResult.d.mts +76 -0
  166. package/renderer/MeshResult.d.ts +76 -0
  167. package/renderer/MeshResult.mjs +269 -0
  168. package/renderer/MultiMeshResult.d.mts +50 -0
  169. package/renderer/MultiMeshResult.d.ts +50 -0
  170. package/renderer/MultiMeshResult.mjs +166 -0
  171. package/renderer/Nbt.d.mts +50 -0
  172. package/renderer/Nbt.d.ts +50 -0
  173. package/renderer/Nbt.mjs +161 -0
  174. package/renderer/NucleationError.d.mts +53 -0
  175. package/renderer/NucleationError.d.ts +53 -0
  176. package/renderer/NucleationError.mjs +136 -0
  177. package/renderer/OutputCondition.d.mts +45 -0
  178. package/renderer/OutputCondition.d.ts +45 -0
  179. package/renderer/OutputCondition.mjs +129 -0
  180. package/renderer/Palette.d.mts +157 -0
  181. package/renderer/Palette.d.ts +157 -0
  182. package/renderer/Palette.mjs +487 -0
  183. package/renderer/PaletteBuilder.d.mts +119 -0
  184. package/renderer/PaletteBuilder.d.ts +119 -0
  185. package/renderer/PaletteBuilder.mjs +457 -0
  186. package/renderer/README.md +67 -0
  187. package/renderer/RawMeshExport.d.mts +74 -0
  188. package/renderer/RawMeshExport.d.ts +74 -0
  189. package/renderer/RawMeshExport.mjs +243 -0
  190. package/renderer/RedstoneGraph.d.mts +58 -0
  191. package/renderer/RedstoneGraph.d.ts +58 -0
  192. package/renderer/RedstoneGraph.mjs +242 -0
  193. package/renderer/RegionBounds.d.mts +41 -0
  194. package/renderer/RegionBounds.d.ts +41 -0
  195. package/renderer/RegionBounds.mjs +182 -0
  196. package/renderer/RenderConfig.d.mts +101 -0
  197. package/renderer/RenderConfig.d.ts +101 -0
  198. package/renderer/RenderConfig.mjs +271 -0
  199. package/renderer/Renderer.d.mts +51 -0
  200. package/renderer/Renderer.d.ts +51 -0
  201. package/renderer/Renderer.mjs +219 -0
  202. package/renderer/ResourcePack.d.mts +105 -0
  203. package/renderer/ResourcePack.d.ts +105 -0
  204. package/renderer/ResourcePack.mjs +447 -0
  205. package/renderer/ResourcePackList.d.mts +32 -0
  206. package/renderer/ResourcePackList.d.ts +32 -0
  207. package/renderer/ResourcePackList.mjs +96 -0
  208. package/renderer/Routing.d.mts +66 -0
  209. package/renderer/Routing.d.ts +66 -0
  210. package/renderer/Routing.mjs +220 -0
  211. package/renderer/Schematic.d.mts +977 -0
  212. package/renderer/Schematic.d.ts +977 -0
  213. package/renderer/Schematic.mjs +3820 -0
  214. package/renderer/SchematicBuilder.d.mts +103 -0
  215. package/renderer/SchematicBuilder.d.ts +103 -0
  216. package/renderer/SchematicBuilder.mjs +401 -0
  217. package/renderer/SchematicRegions.d.mts +93 -0
  218. package/renderer/SchematicRegions.d.ts +93 -0
  219. package/renderer/SchematicRegions.mjs +411 -0
  220. package/renderer/SchematicSplitResult.d.mts +26 -0
  221. package/renderer/SchematicSplitResult.d.ts +26 -0
  222. package/renderer/SchematicSplitResult.mjs +84 -0
  223. package/renderer/Scripting.d.mts +40 -0
  224. package/renderer/Scripting.d.ts +40 -0
  225. package/renderer/Scripting.mjs +138 -0
  226. package/renderer/Sdf.d.mts +234 -0
  227. package/renderer/Sdf.d.ts +234 -0
  228. package/renderer/Sdf.mjs +1234 -0
  229. package/renderer/SdfAxis.d.mts +25 -0
  230. package/renderer/SdfAxis.d.ts +25 -0
  231. package/renderer/SdfAxis.mjs +75 -0
  232. package/renderer/SdfBounds.d.mts +19 -0
  233. package/renderer/SdfBounds.d.ts +19 -0
  234. package/renderer/SdfBounds.mjs +161 -0
  235. package/renderer/SdfCellMode.d.mts +26 -0
  236. package/renderer/SdfCellMode.d.ts +26 -0
  237. package/renderer/SdfCellMode.mjs +78 -0
  238. package/renderer/SdfNormal.d.mts +16 -0
  239. package/renderer/SdfNormal.d.ts +16 -0
  240. package/renderer/SdfNormal.mjs +122 -0
  241. package/renderer/Shape.d.mts +143 -0
  242. package/renderer/Shape.d.ts +143 -0
  243. package/renderer/Shape.mjs +458 -0
  244. package/renderer/SortStrategy.d.mts +86 -0
  245. package/renderer/SortStrategy.d.ts +86 -0
  246. package/renderer/SortStrategy.mjs +272 -0
  247. package/renderer/Store.d.mts +83 -0
  248. package/renderer/Store.d.ts +83 -0
  249. package/renderer/Store.mjs +369 -0
  250. package/renderer/StoreIo.d.mts +71 -0
  251. package/renderer/StoreIo.d.ts +71 -0
  252. package/renderer/StoreIo.mjs +292 -0
  253. package/renderer/TextureAtlas.d.mts +40 -0
  254. package/renderer/TextureAtlas.d.ts +40 -0
  255. package/renderer/TextureAtlas.mjs +122 -0
  256. package/renderer/TextureInfo.d.mts +34 -0
  257. package/renderer/TextureInfo.d.ts +34 -0
  258. package/renderer/TextureInfo.mjs +149 -0
  259. package/renderer/TickSettleMode.d.mts +34 -0
  260. package/renderer/TickSettleMode.d.ts +34 -0
  261. package/renderer/TickSettleMode.mjs +84 -0
  262. package/renderer/TickSimulation.d.mts +572 -0
  263. package/renderer/TickSimulation.d.ts +572 -0
  264. package/renderer/TickSimulation.mjs +1299 -0
  265. package/renderer/TypedCircuitExecutor.d.mts +101 -0
  266. package/renderer/TypedCircuitExecutor.d.ts +101 -0
  267. package/renderer/TypedCircuitExecutor.mjs +378 -0
  268. package/renderer/Value.d.mts +73 -0
  269. package/renderer/Value.d.ts +73 -0
  270. package/renderer/Value.mjs +275 -0
  271. package/renderer/VideoConfig.d.mts +15 -0
  272. package/renderer/VideoConfig.d.ts +15 -0
  273. package/renderer/VideoConfig.mjs +44 -0
  274. package/renderer/VoxelModel.d.mts +34 -0
  275. package/renderer/VoxelModel.d.ts +34 -0
  276. package/renderer/VoxelModel.mjs +113 -0
  277. package/renderer/Voxelizer.d.mts +80 -0
  278. package/renderer/Voxelizer.d.ts +80 -0
  279. package/renderer/Voxelizer.mjs +261 -0
  280. package/renderer/WorldChunkView.d.mts +75 -0
  281. package/renderer/WorldChunkView.d.ts +75 -0
  282. package/renderer/WorldChunkView.mjs +224 -0
  283. package/renderer/WorldGenerator.d.mts +75 -0
  284. package/renderer/WorldGenerator.d.ts +75 -0
  285. package/renderer/WorldGenerator.mjs +255 -0
  286. package/renderer/WorldSink.d.mts +50 -0
  287. package/renderer/WorldSink.d.ts +50 -0
  288. package/renderer/WorldSink.mjs +177 -0
  289. package/renderer/WorldStream.d.mts +45 -0
  290. package/renderer/WorldStream.d.ts +45 -0
  291. package/renderer/WorldStream.mjs +184 -0
  292. package/renderer/WsPartitionHints.d.mts +29 -0
  293. package/renderer/WsPartitionHints.d.ts +29 -0
  294. package/renderer/WsPartitionHints.mjs +102 -0
  295. package/renderer/WsProfile.d.mts +46 -0
  296. package/renderer/WsProfile.d.ts +46 -0
  297. package/renderer/WsProfile.mjs +152 -0
  298. package/renderer/WsRunResult.d.mts +83 -0
  299. package/renderer/WsRunResult.d.ts +83 -0
  300. package/renderer/WsRunResult.mjs +326 -0
  301. package/renderer/WsSegmentJob.d.mts +28 -0
  302. package/renderer/WsSegmentJob.d.ts +28 -0
  303. package/renderer/WsSegmentJob.mjs +81 -0
  304. package/renderer/diplomat-runtime.d.mts +15 -0
  305. package/renderer/diplomat-runtime.d.ts +15 -0
  306. package/renderer/diplomat-runtime.mjs +779 -0
  307. package/renderer/diplomat-wasm.mjs +52 -0
  308. package/renderer/diplomat.config.mjs +5 -0
  309. package/renderer/index.d.mts +193 -0
  310. package/renderer/index.d.ts +193 -0
  311. package/renderer/index.mjs +196 -0
  312. package/renderer/nucleation.wasm +0 -0
  313. package/renderer/veneer/design.d.ts +167 -0
  314. package/renderer/veneer/design.mjs +480 -0
@@ -0,0 +1,40 @@
1
+ // generated by diplomat-tool
2
+ import type { FieldProgramDistanceKind } from "./FieldProgramDistanceKind.mjs"
3
+ import type { NucleationError } from "./NucleationError.mjs"
4
+ import type { SdfBounds } from "./SdfBounds.mjs"
5
+ import type { SdfNormal } from "./SdfNormal.mjs"
6
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
7
+
8
+
9
+
10
+ /**
11
+ * A validated, sandboxed custom SDF field program: deterministic typed
12
+ * bytecode over scalar/vec3/bool values with bounded loops, carrying
13
+ * its own explicit finite bounds and distance-kind metadata. Build one
14
+ * with {@link FieldProgramBuilder} or import it from JSON.
15
+ */
16
+ export class FieldProgram {
17
+ /** @internal */
18
+ get ffiValue(): pointer;
19
+ /** @internal */
20
+ constructor();
21
+
22
+
23
+ static fromJsonString(json: string): FieldProgram;
24
+
25
+ toJson(): string;
26
+
27
+ evalAt(x: number, y: number, z: number): number;
28
+
29
+ /**
30
+ * Unit-length gradient of the scalar output at `(x, y, z)`: the
31
+ * program's own forward-mode analytic gradient where it's
32
+ * differentiable there, falling back to a numerical estimate
33
+ * (central differences via `epsilon`) otherwise.
34
+ */
35
+ gradient(x: number, y: number, z: number, epsilon: number): SdfNormal;
36
+
37
+ bounds(): SdfBounds;
38
+
39
+ distanceKind(): FieldProgramDistanceKind;
40
+ }
@@ -0,0 +1,167 @@
1
+ // generated by diplomat-tool
2
+ import { FieldProgramDistanceKind } from "./FieldProgramDistanceKind.mjs"
3
+ import { NucleationError } from "./NucleationError.mjs"
4
+ import { SdfBounds } from "./SdfBounds.mjs"
5
+ import { SdfNormal } from "./SdfNormal.mjs"
6
+ import wasm from "./diplomat-wasm.mjs";
7
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
8
+
9
+ const FieldProgram_box_destroy_registry = new FinalizationRegistry((ptr) => {
10
+ wasm.FieldProgram_destroy(ptr);
11
+ });
12
+
13
+ /**
14
+ * A validated, sandboxed custom SDF field program: deterministic typed
15
+ * bytecode over scalar/vec3/bool values with bounded loops, carrying
16
+ * its own explicit finite bounds and distance-kind metadata. Build one
17
+ * with {@link FieldProgramBuilder} or import it from JSON.
18
+ */
19
+ export class FieldProgram {
20
+ // Internal ptr reference:
21
+ #ptr = null;
22
+
23
+ // Lifetimes are only to keep dependencies alive.
24
+ // Since JS won't garbage collect until there are no incoming edges.
25
+ #selfEdge = [];
26
+
27
+ #internalConstructor(symbol, ptr, selfEdge) {
28
+ if (symbol !== diplomatRuntime.internalConstructor) {
29
+ console.error("FieldProgram is an Opaque type. You cannot call its constructor.");
30
+ return;
31
+ }
32
+ this.#ptr = ptr;
33
+ this.#selfEdge = selfEdge;
34
+
35
+ // Are we being borrowed? If not, we can register.
36
+ if (this.#selfEdge.length === 0) {
37
+ FieldProgram_box_destroy_registry.register(this, this.#ptr);
38
+ }
39
+
40
+ return this;
41
+ }
42
+ /** @internal */
43
+ get ffiValue() {
44
+ return this.#ptr;
45
+ }
46
+
47
+
48
+ static fromJsonString(json) {
49
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
50
+
51
+ const jsonSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, json)));
52
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
53
+
54
+
55
+ const result = wasm.FieldProgram_from_json_string(diplomatReceive.buffer, jsonSlice.ptr);
56
+
57
+ try {
58
+ if (!diplomatReceive.resultFlag) {
59
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
60
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
61
+ }
62
+ return new FieldProgram(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
63
+ }
64
+
65
+ finally {
66
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
67
+ functionCleanupArena.free();
68
+
69
+ diplomatReceive.free();
70
+ }
71
+ }
72
+
73
+ toJson() {
74
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
75
+
76
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
77
+
78
+
79
+ const result = wasm.FieldProgram_to_json(diplomatReceive.buffer, this.ffiValue, write.buffer);
80
+
81
+ try {
82
+ if (!diplomatReceive.resultFlag) {
83
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
84
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
85
+ }
86
+ return write.readString8();
87
+ }
88
+
89
+ finally {
90
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
91
+ diplomatReceive.free();
92
+ write.free();
93
+ }
94
+ }
95
+
96
+ evalAt(x, y, z) {
97
+
98
+ const result = wasm.FieldProgram_eval_at(this.ffiValue, x, y, z);
99
+
100
+ try {
101
+ return result;
102
+ }
103
+
104
+ finally {
105
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Unit-length gradient of the scalar output at `(x, y, z)`: the
111
+ * program's own forward-mode analytic gradient where it's
112
+ * differentiable there, falling back to a numerical estimate
113
+ * (central differences via `epsilon`) otherwise.
114
+ */
115
+ gradient(x, y, z, epsilon) {
116
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 13, 4, true);
117
+
118
+
119
+ const result = wasm.FieldProgram_gradient(diplomatReceive.buffer, this.ffiValue, x, y, z, epsilon);
120
+
121
+ try {
122
+ if (!diplomatReceive.resultFlag) {
123
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
124
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
125
+ }
126
+ return SdfNormal._fromFFI(diplomatRuntime.internalConstructor, diplomatReceive.buffer);
127
+ }
128
+
129
+ finally {
130
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
131
+ diplomatReceive.free();
132
+ }
133
+ }
134
+
135
+ bounds() {
136
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 24, 4, false);
137
+
138
+
139
+ const result = wasm.FieldProgram_bounds(diplomatReceive.buffer, this.ffiValue);
140
+
141
+ try {
142
+ return SdfBounds._fromFFI(diplomatRuntime.internalConstructor, diplomatReceive.buffer);
143
+ }
144
+
145
+ finally {
146
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
147
+ diplomatReceive.free();
148
+ }
149
+ }
150
+
151
+ distanceKind() {
152
+
153
+ const result = wasm.FieldProgram_distance_kind(this.ffiValue);
154
+
155
+ try {
156
+ return new FieldProgramDistanceKind(diplomatRuntime.internalConstructor, result);
157
+ }
158
+
159
+ finally {
160
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
161
+ }
162
+ }
163
+
164
+ constructor(symbol, ptr, selfEdge) {
165
+ return this.#internalConstructor(...arguments)
166
+ }
167
+ }
@@ -0,0 +1,42 @@
1
+ // generated by diplomat-tool
2
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
3
+
4
+
5
+
6
+ /**
7
+ * Binary field-program operations (see `crate::sdf::BinaryOp`). `Add`
8
+ * and `Sub` accept either two scalars or two vec3s.
9
+ */
10
+ export class FieldProgramBinaryOp {
11
+
12
+ /** @internal */
13
+ static fromValue(value: FieldProgramBinaryOp | string): FieldProgramBinaryOp;
14
+
15
+ get value(): string;
16
+
17
+ /** @internal */
18
+ get ffiValue(): number;
19
+
20
+ static Add : FieldProgramBinaryOp;
21
+ static Sub : FieldProgramBinaryOp;
22
+ static Mul : FieldProgramBinaryOp;
23
+ static Div : FieldProgramBinaryOp;
24
+ static Min : FieldProgramBinaryOp;
25
+ static Max : FieldProgramBinaryOp;
26
+ static Pow : FieldProgramBinaryOp;
27
+ static Atan2 : FieldProgramBinaryOp;
28
+ static Lt : FieldProgramBinaryOp;
29
+ static Le : FieldProgramBinaryOp;
30
+ static Gt : FieldProgramBinaryOp;
31
+ static Ge : FieldProgramBinaryOp;
32
+ static Eq : FieldProgramBinaryOp;
33
+ static Dot : FieldProgramBinaryOp;
34
+ static Cross : FieldProgramBinaryOp;
35
+ /**
36
+ * `vec3 * scalar`, componentwise.
37
+ */
38
+ static Scale : FieldProgramBinaryOp;
39
+
40
+
41
+ constructor(value: FieldProgramBinaryOp | string );
42
+ }
@@ -0,0 +1,42 @@
1
+ // generated by diplomat-tool
2
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
3
+
4
+
5
+
6
+ /**
7
+ * Binary field-program operations (see `crate::sdf::BinaryOp`). `Add`
8
+ * and `Sub` accept either two scalars or two vec3s.
9
+ */
10
+ export class FieldProgramBinaryOp {
11
+
12
+ /** @internal */
13
+ static fromValue(value: FieldProgramBinaryOp | string): FieldProgramBinaryOp;
14
+
15
+ get value(): string;
16
+
17
+ /** @internal */
18
+ get ffiValue(): number;
19
+
20
+ static Add : FieldProgramBinaryOp;
21
+ static Sub : FieldProgramBinaryOp;
22
+ static Mul : FieldProgramBinaryOp;
23
+ static Div : FieldProgramBinaryOp;
24
+ static Min : FieldProgramBinaryOp;
25
+ static Max : FieldProgramBinaryOp;
26
+ static Pow : FieldProgramBinaryOp;
27
+ static Atan2 : FieldProgramBinaryOp;
28
+ static Lt : FieldProgramBinaryOp;
29
+ static Le : FieldProgramBinaryOp;
30
+ static Gt : FieldProgramBinaryOp;
31
+ static Ge : FieldProgramBinaryOp;
32
+ static Eq : FieldProgramBinaryOp;
33
+ static Dot : FieldProgramBinaryOp;
34
+ static Cross : FieldProgramBinaryOp;
35
+ /**
36
+ * `vec3 * scalar`, componentwise.
37
+ */
38
+ static Scale : FieldProgramBinaryOp;
39
+
40
+
41
+ constructor(value: FieldProgramBinaryOp | string );
42
+ }
@@ -0,0 +1,118 @@
1
+ // generated by diplomat-tool
2
+ import wasm from "./diplomat-wasm.mjs";
3
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
4
+
5
+
6
+
7
+ /**
8
+ * Binary field-program operations (see `crate::sdf::BinaryOp`). `Add`
9
+ * and `Sub` accept either two scalars or two vec3s.
10
+ */
11
+ export class FieldProgramBinaryOp {
12
+ #value = undefined;
13
+
14
+ static #values = new Map([
15
+ ["Add", 0],
16
+ ["Sub", 1],
17
+ ["Mul", 2],
18
+ ["Div", 3],
19
+ ["Min", 4],
20
+ ["Max", 5],
21
+ ["Pow", 6],
22
+ ["Atan2", 7],
23
+ ["Lt", 8],
24
+ ["Le", 9],
25
+ ["Gt", 10],
26
+ ["Ge", 11],
27
+ ["Eq", 12],
28
+ ["Dot", 13],
29
+ ["Cross", 14],
30
+ ["Scale", 15]
31
+ ]);
32
+
33
+ static getAllEntries() {
34
+ return FieldProgramBinaryOp.#values.entries();
35
+ }
36
+
37
+ #internalConstructor(value) {
38
+ if (arguments.length > 1 && arguments[0] === diplomatRuntime.internalConstructor) {
39
+ // We pass in two internalConstructor arguments to create *new*
40
+ // instances of this type, otherwise the enums are treated as singletons.
41
+ if (arguments[1] === diplomatRuntime.internalConstructor ) {
42
+ this.#value = arguments[2];
43
+ return this;
44
+ }
45
+ return FieldProgramBinaryOp.#objectValues[arguments[1]];
46
+ }
47
+
48
+ if (value instanceof FieldProgramBinaryOp) {
49
+ return value;
50
+ }
51
+
52
+ let intVal = FieldProgramBinaryOp.#values.get(value);
53
+
54
+ // Nullish check, checks for null or undefined
55
+ if (intVal != null) {
56
+ return FieldProgramBinaryOp.#objectValues[intVal];
57
+ }
58
+
59
+ throw TypeError(value + " is not a FieldProgramBinaryOp and does not correspond to any of its enumerator values.");
60
+ }
61
+
62
+ /** @internal */
63
+ static fromValue(value) {
64
+ return new FieldProgramBinaryOp(value);
65
+ }
66
+
67
+ get value(){
68
+ return [...FieldProgramBinaryOp.#values.keys()][this.#value];
69
+ }
70
+
71
+ /** @internal */
72
+ get ffiValue(){
73
+ return this.#value;
74
+ }
75
+ static #objectValues = [
76
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 0),
77
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 1),
78
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 2),
79
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 3),
80
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 4),
81
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 5),
82
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 6),
83
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 7),
84
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 8),
85
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 9),
86
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 10),
87
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 11),
88
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 12),
89
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 13),
90
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 14),
91
+ new FieldProgramBinaryOp(diplomatRuntime.internalConstructor, diplomatRuntime.internalConstructor, 15),
92
+ ];
93
+
94
+ static Add = FieldProgramBinaryOp.#objectValues[0];
95
+ static Sub = FieldProgramBinaryOp.#objectValues[1];
96
+ static Mul = FieldProgramBinaryOp.#objectValues[2];
97
+ static Div = FieldProgramBinaryOp.#objectValues[3];
98
+ static Min = FieldProgramBinaryOp.#objectValues[4];
99
+ static Max = FieldProgramBinaryOp.#objectValues[5];
100
+ static Pow = FieldProgramBinaryOp.#objectValues[6];
101
+ static Atan2 = FieldProgramBinaryOp.#objectValues[7];
102
+ static Lt = FieldProgramBinaryOp.#objectValues[8];
103
+ static Le = FieldProgramBinaryOp.#objectValues[9];
104
+ static Gt = FieldProgramBinaryOp.#objectValues[10];
105
+ static Ge = FieldProgramBinaryOp.#objectValues[11];
106
+ static Eq = FieldProgramBinaryOp.#objectValues[12];
107
+ static Dot = FieldProgramBinaryOp.#objectValues[13];
108
+ static Cross = FieldProgramBinaryOp.#objectValues[14];
109
+ /**
110
+ * `vec3 * scalar`, componentwise.
111
+ */
112
+ static Scale = FieldProgramBinaryOp.#objectValues[15];
113
+
114
+
115
+ constructor(value) {
116
+ return this.#internalConstructor(...arguments)
117
+ }
118
+ }
@@ -0,0 +1,104 @@
1
+ // generated by diplomat-tool
2
+ import type { FieldProgram } from "./FieldProgram.mjs"
3
+ import type { FieldProgramBinaryOp } from "./FieldProgramBinaryOp.mjs"
4
+ import type { FieldProgramDistanceKind } from "./FieldProgramDistanceKind.mjs"
5
+ import type { FieldProgramUnaryOp } from "./FieldProgramUnaryOp.mjs"
6
+ import type { FieldProgramValueType } from "./FieldProgramValueType.mjs"
7
+ import type { NucleationError } from "./NucleationError.mjs"
8
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
9
+
10
+
11
+
12
+ /**
13
+ * Programmatic builder for a {@link FieldProgram}: append typed stack
14
+ * instructions, then {@link FieldProgramBuilder::build} to validate and
15
+ * obtain a {@link FieldProgram}. Consuming: every method after `build()`
16
+ * (successful or not) returns `AlreadyConsumed`.
17
+ */
18
+ export class FieldProgramBuilder {
19
+ /** @internal */
20
+ get ffiValue(): pointer;
21
+ /** @internal */
22
+ constructor();
23
+
24
+
25
+ static create(): FieldProgramBuilder;
26
+
27
+ /**
28
+ * Declare a new typed local slot and return its index.
29
+ */
30
+ addSlot(valueType: FieldProgramValueType): number;
31
+
32
+ pushConstScalar(value: number): void;
33
+
34
+ pushConstVec3(x: number, y: number, z: number): void;
35
+
36
+ pushConstBool(value: boolean): void;
37
+
38
+ /**
39
+ * Push the `Vec3` position the program is being evaluated at.
40
+ */
41
+ pushPos(): void;
42
+
43
+ loadLocal(slot: number): void;
44
+
45
+ storeLocal(slot: number): void;
46
+
47
+ /**
48
+ * Discard the top of the stack.
49
+ */
50
+ pop(): void;
51
+
52
+ unaryOp(op: FieldProgramUnaryOp): void;
53
+
54
+ binaryOp(op: FieldProgramBinaryOp): void;
55
+
56
+ /**
57
+ * Pop `(x, lo, hi)`, push `x` clamped to `[lo, hi]`.
58
+ */
59
+ clamp(): void;
60
+
61
+ /**
62
+ * Pop `(a, b, cond)`, push `a` if `cond` else `b`.
63
+ */
64
+ select(): void;
65
+
66
+ /**
67
+ * Pop `(x, y, z)`, push `Vec3([x, y, z])`.
68
+ */
69
+ makeVec3(): void;
70
+
71
+ /**
72
+ * Pop a `Bool`; if true, stop the nearest enclosing repeat after
73
+ * this iteration. Only valid inside `beginRepeat`/`endRepeat`.
74
+ */
75
+ breakIf(): void;
76
+
77
+ /**
78
+ * Open a new statically bounded repeat block; subsequent
79
+ * instructions append to its body until `endRepeat`.
80
+ */
81
+ beginRepeat(count: number): void;
82
+
83
+ /**
84
+ * Close the innermost open repeat block.
85
+ */
86
+ endRepeat(): void;
87
+
88
+ /**
89
+ * Declare which scalar slot holds the program's output.
90
+ */
91
+ setOutput(slot: number): void;
92
+
93
+ /**
94
+ * Set the program's explicit, author-asserted finite bounds.
95
+ */
96
+ setBounds(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): void;
97
+
98
+ setDistanceKind(kind: FieldProgramDistanceKind): void;
99
+
100
+ /**
101
+ * Validate and finalize. Consumes the builder even on failure.
102
+ */
103
+ build(): FieldProgram;
104
+ }
@@ -0,0 +1,104 @@
1
+ // generated by diplomat-tool
2
+ import type { FieldProgram } from "./FieldProgram.mjs"
3
+ import type { FieldProgramBinaryOp } from "./FieldProgramBinaryOp.mjs"
4
+ import type { FieldProgramDistanceKind } from "./FieldProgramDistanceKind.mjs"
5
+ import type { FieldProgramUnaryOp } from "./FieldProgramUnaryOp.mjs"
6
+ import type { FieldProgramValueType } from "./FieldProgramValueType.mjs"
7
+ import type { NucleationError } from "./NucleationError.mjs"
8
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
9
+
10
+
11
+
12
+ /**
13
+ * Programmatic builder for a {@link FieldProgram}: append typed stack
14
+ * instructions, then {@link FieldProgramBuilder::build} to validate and
15
+ * obtain a {@link FieldProgram}. Consuming: every method after `build()`
16
+ * (successful or not) returns `AlreadyConsumed`.
17
+ */
18
+ export class FieldProgramBuilder {
19
+ /** @internal */
20
+ get ffiValue(): pointer;
21
+ /** @internal */
22
+ constructor();
23
+
24
+
25
+ static create(): FieldProgramBuilder;
26
+
27
+ /**
28
+ * Declare a new typed local slot and return its index.
29
+ */
30
+ addSlot(valueType: FieldProgramValueType): number;
31
+
32
+ pushConstScalar(value: number): void;
33
+
34
+ pushConstVec3(x: number, y: number, z: number): void;
35
+
36
+ pushConstBool(value: boolean): void;
37
+
38
+ /**
39
+ * Push the `Vec3` position the program is being evaluated at.
40
+ */
41
+ pushPos(): void;
42
+
43
+ loadLocal(slot: number): void;
44
+
45
+ storeLocal(slot: number): void;
46
+
47
+ /**
48
+ * Discard the top of the stack.
49
+ */
50
+ pop(): void;
51
+
52
+ unaryOp(op: FieldProgramUnaryOp): void;
53
+
54
+ binaryOp(op: FieldProgramBinaryOp): void;
55
+
56
+ /**
57
+ * Pop `(x, lo, hi)`, push `x` clamped to `[lo, hi]`.
58
+ */
59
+ clamp(): void;
60
+
61
+ /**
62
+ * Pop `(a, b, cond)`, push `a` if `cond` else `b`.
63
+ */
64
+ select(): void;
65
+
66
+ /**
67
+ * Pop `(x, y, z)`, push `Vec3([x, y, z])`.
68
+ */
69
+ makeVec3(): void;
70
+
71
+ /**
72
+ * Pop a `Bool`; if true, stop the nearest enclosing repeat after
73
+ * this iteration. Only valid inside `beginRepeat`/`endRepeat`.
74
+ */
75
+ breakIf(): void;
76
+
77
+ /**
78
+ * Open a new statically bounded repeat block; subsequent
79
+ * instructions append to its body until `endRepeat`.
80
+ */
81
+ beginRepeat(count: number): void;
82
+
83
+ /**
84
+ * Close the innermost open repeat block.
85
+ */
86
+ endRepeat(): void;
87
+
88
+ /**
89
+ * Declare which scalar slot holds the program's output.
90
+ */
91
+ setOutput(slot: number): void;
92
+
93
+ /**
94
+ * Set the program's explicit, author-asserted finite bounds.
95
+ */
96
+ setBounds(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): void;
97
+
98
+ setDistanceKind(kind: FieldProgramDistanceKind): void;
99
+
100
+ /**
101
+ * Validate and finalize. Consumes the builder even on failure.
102
+ */
103
+ build(): FieldProgram;
104
+ }