@nodecraft/rendermite 1.0.5 → 1.0.6

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 (110) hide show
  1. package/README.md +5 -0
  2. package/dist/atlas/registry.d.ts +3 -3
  3. package/dist/atlas/sources.d.ts +1 -1
  4. package/dist/{blend-Qvrn6YgK.d.ts → blend-CyDIxCne.d.ts} +1 -1
  5. package/dist/cache-Cr2ON3RQ.js +66 -0
  6. package/dist/cli.js +12 -6
  7. package/dist/compose-CQCb2LVv.js +104 -0
  8. package/dist/descriptor-DWebtkI1.js +26 -0
  9. package/dist/{discovery-D89pVVJA.d.ts → discovery-wiJBGryo.d.ts} +1 -1
  10. package/dist/dynamic/generators.d.ts +1 -1
  11. package/dist/dynamic/generators.js +1 -1
  12. package/dist/{encode-3u49i-eD.js → encode-D6dQu2dJ.js} +16 -4
  13. package/dist/{encode-C5kdAm45.d.ts → encode-DaNQF28M.d.ts} +1 -1
  14. package/dist/{entity-fallback-DfL0_eyf.js → entity-fallback-BRCeGKBT.js} +1 -1
  15. package/dist/{face-CpVdnf-w.d.ts → face-BIYg14TE.d.ts} +10 -4
  16. package/dist/{face-D-N1amV4.js → face-DmCiHUd5.js} +23 -10
  17. package/dist/{generators-CcVRG30y.js → generators-BlG4KmtP.js} +1 -1
  18. package/dist/{generators-CCB8h0mP.d.ts → generators-DhRov4RB.d.ts} +1 -1
  19. package/dist/{geo-Dq2zve09.js → geo-Diky41Tw.js} +6 -3
  20. package/dist/index.d.ts +14 -14
  21. package/dist/index.js +11 -11
  22. package/dist/{item-styles-DJ3LWZS2.js → item-styles-upgEO1yP.js} +1 -1
  23. package/dist/items/discovery.d.ts +1 -1
  24. package/dist/{jar-6T3xdgaL.d.ts → jar-CFkA-VgT.d.ts} +2 -1
  25. package/dist/{jar-Bt3i0ls4.js → jar-D9z-X7tA.js} +12 -12
  26. package/dist/{legacy-reshape-CewShfF3.js → legacy-reshape-C05SfAPR.js} +1 -1
  27. package/dist/{loader-A-BZa8J4.js → loader-B8NJO7pR.js} +12 -3
  28. package/dist/{loader-CBzn3Koc.js → loader-CfXMxcEV.js} +37 -7
  29. package/dist/{loader-C-6QN3xv.d.ts → loader-D22zZME7.d.ts} +2 -2
  30. package/dist/{loader-TFFNV4Jl.d.ts → loader-Myy22TDL.d.ts} +8 -2
  31. package/dist/{manager-dfI7b9N4.js → manager-CkletR5K.js} +29 -2
  32. package/dist/{manager-CoZaeQTu.d.ts → manager-Cv1NeFyF.d.ts} +28 -1
  33. package/dist/models/loader.d.ts +1 -1
  34. package/dist/models/loader.js +1 -1
  35. package/dist/mods/prepare.d.ts +1 -1
  36. package/dist/mods/prepare.js +1 -1
  37. package/dist/mods/synthesize.d.ts +2 -2
  38. package/dist/mods/synthesize.js +1 -1
  39. package/dist/mods/tints.d.ts +2 -2
  40. package/dist/mods/tints.js +1 -1
  41. package/dist/output/encode.d.ts +1 -1
  42. package/dist/output/encode.js +1 -1
  43. package/dist/output/item-styles.js +1 -1
  44. package/dist/pipeline-BIk1RRIp.js +221 -0
  45. package/dist/pipeline-zq-yU3Te.d.ts +58 -0
  46. package/dist/pool-CKGp1qup.js +131 -0
  47. package/dist/{prepare-BeUpXwaP.js → prepare-BESRrh6K.js} +4 -4
  48. package/dist/{prepare-gfR1aIjt.d.ts → prepare-CPxO0kKz.d.ts} +1 -1
  49. package/dist/{prepare-C8wRjAXP.js → prepare-Cc8QZ3j0.js} +4 -4
  50. package/dist/{prepare-wfWtaz_X.d.ts → prepare-Cs6QDqie.d.ts} +1 -1
  51. package/dist/{rasterizer-BHWDrmGz.js → rasterizer-76qO8TDh.js} +42 -4
  52. package/dist/{rasterizer-Dh35qXbn.d.ts → rasterizer-yqJkicm1.d.ts} +21 -2
  53. package/dist/render/blend.d.ts +1 -1
  54. package/dist/render/compose.d.ts +2 -2
  55. package/dist/render/compose.js +1 -1
  56. package/dist/render/entity-fallback.d.ts +6 -6
  57. package/dist/render/entity-fallback.js +1 -1
  58. package/dist/render/face.d.ts +2 -2
  59. package/dist/render/face.js +1 -1
  60. package/dist/render/fluid-bucket.d.ts +2 -2
  61. package/dist/render/geo.d.ts +4 -4
  62. package/dist/render/geo.js +1 -1
  63. package/dist/render/legacy-tints.d.ts +2 -2
  64. package/dist/render/obj.d.ts +5 -5
  65. package/dist/render/obj.js +1 -1
  66. package/dist/render/pipeline.d.ts +2 -0
  67. package/dist/render/pipeline.js +2 -0
  68. package/dist/render/rasterizer.d.ts +2 -2
  69. package/dist/render/rasterizer.js +2 -2
  70. package/dist/render/renderer.d.ts +2 -2
  71. package/dist/render/renderer.js +1 -1
  72. package/dist/render/tints.d.ts +1 -1
  73. package/dist/{renderer-LDhBNHcl.js → renderer-CjT19tHd.js} +130 -53
  74. package/dist/{renderer-nbMCw1Pl.d.ts → renderer-DVsZHAvf.d.ts} +23 -6
  75. package/dist/resources/cache.d.ts +30 -0
  76. package/dist/resources/cache.js +2 -0
  77. package/dist/resources/descriptor.d.ts +2 -0
  78. package/dist/resources/descriptor.js +2 -0
  79. package/dist/resources/jar.d.ts +1 -1
  80. package/dist/resources/jar.js +1 -1
  81. package/dist/resources/manager.d.ts +1 -1
  82. package/dist/resources/manager.js +1 -1
  83. package/dist/resources/synthetic.d.ts +1 -1
  84. package/dist/resources/synthetic.js +1 -1
  85. package/dist/resources/zip-reader.d.ts +5 -0
  86. package/dist/resources/zip-reader.js +2 -0
  87. package/dist/run-BnICOF4I.js +209 -0
  88. package/dist/{run-BlSZw9Qk.d.ts → run-CKUtynTy.d.ts} +12 -2
  89. package/dist/run.d.ts +1 -1
  90. package/dist/run.js +1 -1
  91. package/dist/{sources-DH9dk3KF.d.ts → sources-B9X9w3qP.d.ts} +1 -1
  92. package/dist/{synthesize-CRgSEmEp.js → synthesize-3Q0aaOnK.js} +1 -1
  93. package/dist/{synthetic-CDsj--li.d.ts → synthetic-Qk-BSUXO.d.ts} +5 -1
  94. package/dist/{synthetic-DC2bSnGe.js → synthetic-ZAUjXT7E.js} +0 -0
  95. package/dist/textures/loader.d.ts +1 -1
  96. package/dist/textures/loader.js +1 -1
  97. package/dist/{tints-CuG6GwQJ.js → tints-B8UJmZMu.js} +2 -2
  98. package/dist/{tints-txt-8xI5.d.ts → tints-DLBExVWN.d.ts} +2 -2
  99. package/dist/versions/legacy-reshape.d.ts +1 -1
  100. package/dist/versions/legacy-reshape.js +1 -1
  101. package/dist/versions/prepare.d.ts +1 -1
  102. package/dist/versions/prepare.js +1 -1
  103. package/dist/workers/pool.d.ts +36 -5
  104. package/dist/workers/pool.js +2 -67
  105. package/dist/workers/render-worker.d.ts +15 -0
  106. package/dist/workers/render-worker.js +40 -0
  107. package/dist/zip-reader-BSbJKUT1.js +156 -0
  108. package/package.json +4 -2
  109. package/dist/compose-qjhyBvnS.js +0 -41
  110. package/dist/run-CfnWIRY4.js +0 -316
@@ -0,0 +1,131 @@
1
+ import { Worker } from "node:worker_threads";
2
+ //#region src/workers/pool.ts
3
+ /**
4
+ * Worker-thread pool for parallel item rendering. Design goals born from the
5
+ * PHP tool's failure modes (docs/research/mod-failure-taxonomy.md): errors
6
+ * cross the worker boundary as structured data, a dead worker's in-flight items
7
+ * are reported rather than orphaned, and results stream back so output lands
8
+ * incrementally.
9
+ *
10
+ * Workers spawn as soon as the pool is constructed, so their asset indexing
11
+ * overlaps the caller's own discovery pass; each holds several tasks at once so
12
+ * native encoding overlaps the next item's rasterization; and the queue drains
13
+ * through a cursor, because shift() on a 400k-item array is quadratic.
14
+ */
15
+ var WorkerRenderPool = class {
16
+ options;
17
+ inFlightLimit;
18
+ workers = /* @__PURE__ */ new Set();
19
+ tasks = [];
20
+ cursor = 0;
21
+ started = false;
22
+ onResult = null;
23
+ settle = null;
24
+ settled = false;
25
+ /** Workers dying before completing anything mean a bad config, not bad luck. */
26
+ startupFailures = 0;
27
+ constructor(options) {
28
+ this.options = options;
29
+ this.inFlightLimit = Math.max(1, options.inFlight ?? 2);
30
+ for (let i = 0; i < Math.max(1, options.workers); i++) this.spawn();
31
+ }
32
+ spawn() {
33
+ const entry = {
34
+ worker: new Worker(this.options.workerUrl, { workerData: this.options.workerData }),
35
+ inFlight: /* @__PURE__ */ new Set(),
36
+ ready: false,
37
+ stopped: false
38
+ };
39
+ this.workers.add(entry);
40
+ entry.worker.on("message", (message) => {
41
+ if ("ready" in message) entry.ready = true;
42
+ else {
43
+ entry.inFlight.delete(message.id);
44
+ this.startupFailures = 0;
45
+ this.onResult?.(message);
46
+ }
47
+ this.pump(entry);
48
+ });
49
+ entry.worker.on("error", (err) => {
50
+ if (entry.inFlight.size === 0) {
51
+ this.startupFailures++;
52
+ if (this.startupFailures > 3) {
53
+ this.abort(err);
54
+ return;
55
+ }
56
+ }
57
+ this.fail(entry, `Worker crashed: ${err.message}`);
58
+ });
59
+ entry.worker.on("exit", (code) => {
60
+ if (code !== 0) this.fail(entry, `Worker exited with code ${code}`);
61
+ });
62
+ }
63
+ pump(entry) {
64
+ if (!this.started || entry.stopped || !entry.ready) return;
65
+ while (entry.inFlight.size < this.inFlightLimit && this.cursor < this.tasks.length) {
66
+ const task = this.tasks[this.cursor++];
67
+ entry.inFlight.add(task.id);
68
+ entry.worker.postMessage(task);
69
+ }
70
+ if (entry.inFlight.size === 0 && this.cursor >= this.tasks.length) this.retire(entry);
71
+ }
72
+ retire(entry) {
73
+ if (entry.stopped) return;
74
+ entry.stopped = true;
75
+ this.workers.delete(entry);
76
+ entry.worker.terminate().catch(() => {});
77
+ this.finish();
78
+ }
79
+ fail(entry, reason) {
80
+ if (entry.stopped) return;
81
+ for (const id of entry.inFlight) this.onResult?.({
82
+ id,
83
+ error: reason
84
+ });
85
+ entry.inFlight.clear();
86
+ entry.stopped = true;
87
+ this.workers.delete(entry);
88
+ if (this.started && this.cursor < this.tasks.length) this.spawn();
89
+ else this.finish();
90
+ }
91
+ finish() {
92
+ if (!this.settled && this.started && this.workers.size === 0) {
93
+ this.settled = true;
94
+ this.settle?.resolve();
95
+ }
96
+ }
97
+ abort(err) {
98
+ if (this.settled) return;
99
+ this.settled = true;
100
+ for (const entry of this.workers) {
101
+ entry.stopped = true;
102
+ entry.worker.terminate().catch(() => {});
103
+ }
104
+ this.workers.clear();
105
+ this.settle?.reject(err);
106
+ }
107
+ /** Run every task, calling back as results arrive. Terminates the pool after. */
108
+ async run(tasks, onResult) {
109
+ this.tasks = tasks;
110
+ this.onResult = onResult;
111
+ this.started = true;
112
+ try {
113
+ if (tasks.length > 0) await new Promise((resolve, reject) => {
114
+ this.settle = {
115
+ resolve,
116
+ reject
117
+ };
118
+ for (const entry of this.workers) this.pump(entry);
119
+ });
120
+ } finally {
121
+ await this.close();
122
+ }
123
+ }
124
+ async close() {
125
+ const workers = [...this.workers];
126
+ this.workers.clear();
127
+ await Promise.all(workers.map((entry) => entry.worker.terminate().catch(() => {})));
128
+ }
129
+ };
130
+ //#endregion
131
+ export { WorkerRenderPool as t };
@@ -1,7 +1,7 @@
1
- import { n as LayeredResourceManager } from "./manager-dfI7b9N4.js";
2
- import { n as harvestTintOverrides, t as curatedTintOverrides } from "./tints-CuG6GwQJ.js";
3
- import { n as UnsafeJarError, t as JarResourceManager } from "./jar-Bt3i0ls4.js";
4
- import { t as synthesizeItemModels } from "./synthesize-CRgSEmEp.js";
1
+ import { n as LayeredResourceManager } from "./manager-CkletR5K.js";
2
+ import { n as harvestTintOverrides, t as curatedTintOverrides } from "./tints-B8UJmZMu.js";
3
+ import { n as UnsafeJarError, t as JarResourceManager } from "./jar-D9z-X7tA.js";
4
+ import { t as synthesizeItemModels } from "./synthesize-3Q0aaOnK.js";
5
5
  //#region src/mods/prepare.ts
6
6
  /**
7
7
  * Mod asset composition: mod jars layered under the vanilla base (vanilla wins
@@ -1,4 +1,4 @@
1
- import { a as ResourceManager } from "./manager-CoZaeQTu.js";
1
+ import { a as ResourceManager } from "./manager-Cv1NeFyF.js";
2
2
  //#region src/mods/prepare.d.ts
3
3
  /** Loader-owned namespaces that never contain renderable mod items. */
4
4
  declare const LOADER_NAMESPACES: Set<string>;
@@ -1,8 +1,8 @@
1
1
  import { n as ResourceLocator } from "./locator-ycZzh_6z.js";
2
- import { n as LayeredResourceManager, t as FolderResourceManager } from "./manager-dfI7b9N4.js";
3
- import { n as MapResourceManager, t as KindFilteredResourceManager } from "./synthetic-DC2bSnGe.js";
4
- import { t as JarResourceManager } from "./jar-Bt3i0ls4.js";
5
- import { t as reshapeLegacyAssets } from "./legacy-reshape-CewShfF3.js";
2
+ import { n as LayeredResourceManager, t as FolderResourceManager } from "./manager-CkletR5K.js";
3
+ import { n as MapResourceManager, t as KindFilteredResourceManager } from "./synthetic-ZAUjXT7E.js";
4
+ import { t as JarResourceManager } from "./jar-D9z-X7tA.js";
5
+ import { t as reshapeLegacyAssets } from "./legacy-reshape-C05SfAPR.js";
6
6
  //#region src/versions/prepare.ts
7
7
  /**
8
8
  * Version-era detection and asset preparation, replacing the file-tree surgery
@@ -1,4 +1,4 @@
1
- import { a as ResourceManager } from "./manager-CoZaeQTu.js";
1
+ import { a as ResourceManager } from "./manager-Cv1NeFyF.js";
2
2
  //#region src/versions/prepare.d.ts
3
3
  /** Dotted-numeric compare handling both `1.21.8` and the `26.2` scheme. */
4
4
  declare function compareVersions(left: string, right: string): number;
@@ -6,10 +6,33 @@ function createFaceBuffer(width, height) {
6
6
  width,
7
7
  height,
8
8
  colors: new Float64Array(width * height * 4),
9
- depths: new Float64Array(width * height)
9
+ depths: new Float64Array(width * height),
10
+ dirty: {
11
+ minX: 0,
12
+ minY: 0,
13
+ maxX: width - 1,
14
+ maxY: height - 1
15
+ }
10
16
  };
11
17
  }
12
18
  /**
19
+ * Zero the written region and mark the buffer empty, so one scratch buffer can
20
+ * serve every face of a model. Allocating an image-sized color+depth pair per
21
+ * face is what made complex models allocate hundreds of megabytes transiently.
22
+ */
23
+ function clearFaceBuffer(buffer) {
24
+ const { dirty } = buffer;
25
+ for (let y = dirty.minY; y <= dirty.maxY; y++) {
26
+ const row = y * buffer.width;
27
+ buffer.colors.fill(0, (row + dirty.minX) * 4, (row + dirty.maxX + 1) * 4);
28
+ buffer.depths.fill(0, row + dirty.minX, row + dirty.maxX + 1);
29
+ }
30
+ dirty.minX = buffer.width;
31
+ dirty.minY = buffer.height;
32
+ dirty.maxX = -1;
33
+ dirty.maxY = -1;
34
+ }
35
+ /**
13
36
  * Retain only the rectangle containing visible pixels. Complex block models can
14
37
  * contain thousands of tiny faces; keeping a full icon-sized color/depth buffer
15
38
  * for each one turns a 64px render into gigabytes of transient memory.
@@ -19,7 +42,7 @@ function compactFaceBuffer(buffer) {
19
42
  let minY = buffer.height;
20
43
  let maxX = -1;
21
44
  let maxY = -1;
22
- for (let y = 0; y < buffer.height; y++) for (let x = 0; x < buffer.width; x++) {
45
+ for (let y = Math.max(buffer.dirty.minY, 0); y <= Math.min(buffer.dirty.maxY, buffer.height - 1); y++) for (let x = Math.max(buffer.dirty.minX, 0); x <= Math.min(buffer.dirty.maxX, buffer.width - 1); x++) {
23
46
  if (buffer.colors[(y * buffer.width + x) * 4 + 3] <= 0) continue;
24
47
  minX = Math.min(minX, x);
25
48
  minY = Math.min(minY, y);
@@ -43,7 +66,13 @@ function compactFaceBuffer(buffer) {
43
66
  width,
44
67
  height,
45
68
  colors,
46
- depths
69
+ depths,
70
+ dirty: {
71
+ minX: 0,
72
+ minY: 0,
73
+ maxX: width - 1,
74
+ maxY: height - 1
75
+ }
47
76
  };
48
77
  }
49
78
  /**
@@ -136,6 +165,15 @@ function drawTexturedTriangle(p1in, p2in, p3in, buffer, texture, cursor = new Ro
136
165
  const textureStep = lineLength ? 1 / lineLength : 0;
137
166
  let textureX = textureStep * .3;
138
167
  const rowOffset = row * width;
168
+ const spanMinX = Math.max(startX - 1, 0);
169
+ const spanMaxX = Math.min(endX + 1, width - 1);
170
+ if (spanMinX <= spanMaxX) {
171
+ const { dirty } = buffer;
172
+ dirty.minX = Math.min(dirty.minX, spanMinX);
173
+ dirty.maxX = Math.max(dirty.maxX, spanMaxX);
174
+ dirty.minY = Math.min(dirty.minY, row);
175
+ dirty.maxY = Math.max(dirty.maxY, row);
176
+ }
139
177
  for (let x = startX - 1; x <= endX + 1; x++) {
140
178
  const currentU = (1 - textureX) * startU + textureX * endU;
141
179
  const currentV = (1 - textureX) * startV + textureX * endV;
@@ -175,4 +213,4 @@ function drawTexturedTriangle(p1in, p2in, p3in, buffer, texture, cursor = new Ro
175
213
  }
176
214
  }
177
215
  //#endregion
178
- export { phpRound as a, drawTexturedTriangle as i, compactFaceBuffer as n, createFaceBuffer as r, RowCursor as t };
216
+ export { drawTexturedTriangle as a, createFaceBuffer as i, clearFaceBuffer as n, phpRound as o, compactFaceBuffer as r, RowCursor as t };
@@ -1,5 +1,12 @@
1
- import { t as FloatTexture } from "./blend-Qvrn6YgK.js";
1
+ import { t as FloatTexture } from "./blend-CyDIxCne.js";
2
2
  //#region src/render/rasterizer.d.ts
3
+ /** The rectangle of a buffer written since it was last cleared. */
4
+ interface DirtyRect {
5
+ minX: number;
6
+ minY: number;
7
+ maxX: number;
8
+ maxY: number;
9
+ }
3
10
  /** Per-face private color + depth buffers, image sized. */
4
11
  interface FaceBuffer {
5
12
  /** Position within the final image (full-size scratch buffers start at 0,0). */
@@ -11,8 +18,20 @@ interface FaceBuffer {
11
18
  colors: Float64Array;
12
19
  /** Depth per pixel; 0 where never written — the overdraw band relies on that. */
13
20
  depths: Float64Array;
21
+ /**
22
+ * Where the rasterizer has written. A fresh buffer claims its whole extent
23
+ * so callers that fill it by hand still compact correctly; clearFaceBuffer
24
+ * resets it to empty, which is what makes buffer reuse cheap.
25
+ */
26
+ dirty: DirtyRect;
14
27
  }
15
28
  declare function createFaceBuffer(width: number, height: number): FaceBuffer;
29
+ /**
30
+ * Zero the written region and mark the buffer empty, so one scratch buffer can
31
+ * serve every face of a model. Allocating an image-sized color+depth pair per
32
+ * face is what made complex models allocate hundreds of megabytes transiently.
33
+ */
34
+ declare function clearFaceBuffer(buffer: FaceBuffer): void;
16
35
  /**
17
36
  * Retain only the rectangle containing visible pixels. Complex block models can
18
37
  * contain thousands of tiny faces; keeping a full icon-sized color/depth buffer
@@ -47,4 +66,4 @@ declare class RowCursor {
47
66
  declare function phpRound(value: number): number;
48
67
  declare function drawTexturedTriangle(p1in: RasterPoint, p2in: RasterPoint, p3in: RasterPoint, buffer: FaceBuffer, texture: FloatTexture, cursor?: RowCursor): void;
49
68
  //#endregion
50
- export { createFaceBuffer as a, compactFaceBuffer as i, RasterPoint as n, drawTexturedTriangle as o, RowCursor as r, phpRound as s, FaceBuffer as t };
69
+ export { clearFaceBuffer as a, drawTexturedTriangle as c, RowCursor as i, phpRound as l, FaceBuffer as n, compactFaceBuffer as o, RasterPoint as r, createFaceBuffer as s, DirtyRect as t };
@@ -1,2 +1,2 @@
1
- import { a as q16, c as toFloatTexture, i as darkenTexture, n as blendPixel, o as tintTexture, r as cloneFloatTexture, s as toByteTexture, t as FloatTexture } from "../blend-Qvrn6YgK.js";
1
+ import { a as q16, c as toFloatTexture, i as darkenTexture, n as blendPixel, o as tintTexture, r as cloneFloatTexture, s as toByteTexture, t as FloatTexture } from "../blend-CyDIxCne.js";
2
2
  export { FloatTexture, blendPixel, cloneFloatTexture, darkenTexture, q16, tintTexture, toByteTexture, toFloatTexture };
@@ -1,5 +1,5 @@
1
- import { t as FloatTexture } from "../blend-Qvrn6YgK.js";
2
- import { t as FaceBuffer } from "../rasterizer-Dh35qXbn.js";
1
+ import { t as FloatTexture } from "../blend-CyDIxCne.js";
2
+ import { n as FaceBuffer } from "../rasterizer-yqJkicm1.js";
3
3
  //#region src/render/compose.d.ts
4
4
  declare function combineFaceBuffers(width: number, height: number, faces: FaceBuffer[]): FloatTexture;
5
5
  //#endregion
@@ -1,2 +1,2 @@
1
- import { t as combineFaceBuffers } from "../compose-qjhyBvnS.js";
1
+ import { t as combineFaceBuffers } from "../compose-CQCb2LVv.js";
2
2
  export { combineFaceBuffers };
@@ -1,9 +1,9 @@
1
- import { a as ResourceManager } from "../manager-CoZaeQTu.js";
2
- import { i as TextureLoader } from "../loader-TFFNV4Jl.js";
3
- import { t as ModelLoader } from "../loader-C-6QN3xv.js";
4
- import { t as FloatTexture } from "../blend-Qvrn6YgK.js";
5
- import { n as TintColor } from "../face-CpVdnf-w.js";
6
- import { n as RenderOptions } from "../renderer-nbMCw1Pl.js";
1
+ import { a as ResourceManager } from "../manager-Cv1NeFyF.js";
2
+ import { i as TextureLoader } from "../loader-Myy22TDL.js";
3
+ import { t as ModelLoader } from "../loader-D22zZME7.js";
4
+ import { t as FloatTexture } from "../blend-CyDIxCne.js";
5
+ import { r as TintColor } from "../face-BIYg14TE.js";
6
+ import { i as RenderOptions } from "../renderer-DVsZHAvf.js";
7
7
  //#region src/render/entity-fallback.d.ts
8
8
  /**
9
9
  * Dyed variants of vanilla items whose models mods generate at runtime (quark's
@@ -1,2 +1,2 @@
1
- import { n as renderEntityFallback, r as spawnEggTints, t as renderDyedVariantFallback } from "../entity-fallback-DfL0_eyf.js";
1
+ import { n as renderEntityFallback, r as spawnEggTints, t as renderDyedVariantFallback } from "../entity-fallback-BRCeGKBT.js";
2
2
  export { renderDyedVariantFallback, renderEntityFallback, spawnEggTints };
@@ -1,2 +1,2 @@
1
- import { i as renderFace, n as TintColor, r as faceMaxZ, t as RenderableFace } from "../face-CpVdnf-w.js";
2
- export { RenderableFace, TintColor, faceMaxZ, renderFace };
1
+ import { a as renderFace, i as faceMaxZ, n as RenderableFace, r as TintColor, t as FaceShadeCache } from "../face-BIYg14TE.js";
2
+ export { FaceShadeCache, RenderableFace, TintColor, faceMaxZ, renderFace };
@@ -1,2 +1,2 @@
1
- import { n as renderFace, t as faceMaxZ } from "../face-D-N1amV4.js";
1
+ import { n as renderFace, t as faceMaxZ } from "../face-DmCiHUd5.js";
2
2
  export { faceMaxZ, renderFace };
@@ -1,5 +1,5 @@
1
- import { a as ResourceManager } from "../manager-CoZaeQTu.js";
2
- import { i as TextureLoader, r as Texture } from "../loader-TFFNV4Jl.js";
1
+ import { a as ResourceManager } from "../manager-Cv1NeFyF.js";
2
+ import { i as TextureLoader, r as Texture } from "../loader-Myy22TDL.js";
3
3
  //#region src/render/fluid-bucket.d.ts
4
4
  /**
5
5
  * Paint the fluid into a bucket sprite IN PLACE (pass a copy, never a cached
@@ -1,9 +1,9 @@
1
1
  import { n as ResourceLocator } from "../locator-jDbdUeTd.js";
2
- import { a as ResourceManager } from "../manager-CoZaeQTu.js";
3
- import { i as TextureLoader } from "../loader-TFFNV4Jl.js";
4
- import { t as FloatTexture } from "../blend-Qvrn6YgK.js";
2
+ import { a as ResourceManager } from "../manager-Cv1NeFyF.js";
3
+ import { i as TextureLoader } from "../loader-Myy22TDL.js";
4
+ import { t as FloatTexture } from "../blend-CyDIxCne.js";
5
5
  import { n as FaceGeometry } from "../geometry-BSVmKx5b.js";
6
- import { n as RenderOptions } from "../renderer-nbMCw1Pl.js";
6
+ import { i as RenderOptions } from "../renderer-DVsZHAvf.js";
7
7
  //#region src/render/geo.d.ts
8
8
  interface GeoCube {
9
9
  origin?: number[];
@@ -1,2 +1,2 @@
1
- import { i as renderGeo, n as geoToFaces, r as parseGeo, t as findGeoForItem } from "../geo-Dq2zve09.js";
1
+ import { i as renderGeo, n as geoToFaces, r as parseGeo, t as findGeoForItem } from "../geo-Diky41Tw.js";
2
2
  export { findGeoForItem, geoToFaces, parseGeo, renderGeo };
@@ -1,5 +1,5 @@
1
- import { i as TextureLoader } from "../loader-TFFNV4Jl.js";
2
- import { n as TintColor } from "../face-CpVdnf-w.js";
1
+ import { i as TextureLoader } from "../loader-Myy22TDL.js";
2
+ import { r as TintColor } from "../face-BIYg14TE.js";
3
3
  //#region src/render/legacy-tints.d.ts
4
4
  /**
5
5
  * Tints for a model rendered without an item definition (pre-1.21.4 eras and
@@ -1,9 +1,9 @@
1
- import { a as ResourceManager } from "../manager-CoZaeQTu.js";
2
- import { i as TextureLoader } from "../loader-TFFNV4Jl.js";
3
- import { r as ResolvedModel } from "../loader-C-6QN3xv.js";
4
- import { t as FloatTexture } from "../blend-Qvrn6YgK.js";
1
+ import { a as ResourceManager } from "../manager-Cv1NeFyF.js";
2
+ import { i as TextureLoader } from "../loader-Myy22TDL.js";
3
+ import { r as ResolvedModel } from "../loader-D22zZME7.js";
4
+ import { t as FloatTexture } from "../blend-CyDIxCne.js";
5
5
  import { n as Vec3 } from "../vector-DRKRi4--.js";
6
- import { n as RenderOptions } from "../renderer-nbMCw1Pl.js";
6
+ import { i as RenderOptions } from "../renderer-DVsZHAvf.js";
7
7
  //#region src/render/obj.d.ts
8
8
  interface ObjTriangle {
9
9
  positions: [Vec3, Vec3, Vec3];
@@ -1,2 +1,2 @@
1
- import { c as renderObjModel, o as parseMtl, s as parseObj } from "../renderer-LDhBNHcl.js";
1
+ import { c as renderObjModel, o as parseMtl, s as parseObj } from "../renderer-CjT19tHd.js";
2
2
  export { parseMtl, parseObj, renderObjModel };
@@ -0,0 +1,2 @@
1
+ import { i as RenderedFrames, n as ItemRenderOutcome, r as PipelineSettings, t as ItemPipeline } from "../pipeline-zq-yU3Te.js";
2
+ export { ItemPipeline, ItemRenderOutcome, PipelineSettings, RenderedFrames };
@@ -0,0 +1,2 @@
1
+ import { t as ItemPipeline } from "../pipeline-BIk1RRIp.js";
2
+ export { ItemPipeline };
@@ -1,2 +1,2 @@
1
- import { a as createFaceBuffer, i as compactFaceBuffer, n as RasterPoint, o as drawTexturedTriangle, r as RowCursor, s as phpRound, t as FaceBuffer } from "../rasterizer-Dh35qXbn.js";
2
- export { FaceBuffer, RasterPoint, RowCursor, compactFaceBuffer, createFaceBuffer, drawTexturedTriangle, phpRound };
1
+ import { a as clearFaceBuffer, c as drawTexturedTriangle, i as RowCursor, l as phpRound, n as FaceBuffer, o as compactFaceBuffer, r as RasterPoint, s as createFaceBuffer, t as DirtyRect } from "../rasterizer-yqJkicm1.js";
2
+ export { DirtyRect, FaceBuffer, RasterPoint, RowCursor, clearFaceBuffer, compactFaceBuffer, createFaceBuffer, drawTexturedTriangle, phpRound };
@@ -1,2 +1,2 @@
1
- import { a as phpRound, i as drawTexturedTriangle, n as compactFaceBuffer, r as createFaceBuffer, t as RowCursor } from "../rasterizer-BHWDrmGz.js";
2
- export { RowCursor, compactFaceBuffer, createFaceBuffer, drawTexturedTriangle, phpRound };
1
+ import { a as drawTexturedTriangle, i as createFaceBuffer, n as clearFaceBuffer, o as phpRound, r as compactFaceBuffer, t as RowCursor } from "../rasterizer-76qO8TDh.js";
2
+ export { RowCursor, clearFaceBuffer, compactFaceBuffer, createFaceBuffer, drawTexturedTriangle, phpRound };
@@ -1,2 +1,2 @@
1
- import { a as pointResize, i as boxDownscale, n as RenderOptions, o as renderModel, r as RenderedFrames, s as renderModelFrames, t as ItemRenderError } from "../renderer-nbMCw1Pl.js";
2
- export { ItemRenderError, RenderOptions, RenderedFrames, boxDownscale, pointResize, renderModel, renderModelFrames };
1
+ import { a as RenderedFrames, c as renderModel, i as RenderOptions, l as renderModelFrames, n as AnimationLimits, o as boxDownscale, r as ItemRenderError, s as pointResize, t as AnimationDiagnostics } from "../renderer-DVsZHAvf.js";
2
+ export { AnimationDiagnostics, AnimationLimits, ItemRenderError, RenderOptions, RenderedFrames, boxDownscale, pointResize, renderModel, renderModelFrames };
@@ -1,2 +1,2 @@
1
- import { a as renderModelFrames, i as renderModel, n as boxDownscale, r as pointResize, t as ItemRenderError } from "../renderer-LDhBNHcl.js";
1
+ import { a as renderModelFrames, i as renderModel, n as boxDownscale, r as pointResize, t as ItemRenderError } from "../renderer-CjT19tHd.js";
2
2
  export { ItemRenderError, boxDownscale, pointResize, renderModel, renderModelFrames };
@@ -1,2 +1,2 @@
1
- import { a as resolveTint, i as parseTintValue, n as InvalidTinterDefinitionError, o as resolveTints, r as TintContext, t as DYE_COLORS } from "../tints-txt-8xI5.js";
1
+ import { a as resolveTint, i as parseTintValue, n as InvalidTinterDefinitionError, o as resolveTints, r as TintContext, t as DYE_COLORS } from "../tints-DLBExVWN.js";
2
2
  export { DYE_COLORS, InvalidTinterDefinitionError, TintContext, parseTintValue, resolveTint, resolveTints };