@drawcall/lod 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/at.js.map +1 -1
- package/dist/bake.js.map +1 -1
- package/dist/baked/codec.js.map +1 -1
- package/dist/baked/coverage.js.map +1 -1
- package/dist/baked/fields.js.map +1 -1
- package/dist/baked/index.js.map +1 -1
- package/dist/baked/interior/faces.js.map +1 -1
- package/dist/baked/interior/material.js.map +1 -1
- package/dist/baked/interior/rooms.js.map +1 -1
- package/dist/baked/low.js.map +1 -1
- package/dist/baked/raster.js.map +1 -1
- package/dist/baked/textures.js.map +1 -1
- package/dist/baked/transfer.js.map +1 -1
- package/dist/baked/unwrap.js.map +1 -1
- package/dist/baked/xatlas.js.map +1 -1
- package/dist/codec/container.js.map +1 -1
- package/dist/codec/mesh.js.map +1 -1
- package/dist/dispose.js.map +1 -1
- package/dist/foliage.js.map +1 -1
- package/dist/impostor/bake/atlas.js.map +1 -1
- package/dist/impostor/bake/fit.js.map +1 -1
- package/dist/impostor/bake/index.js.map +1 -1
- package/dist/impostor/bake/materials.js.map +1 -1
- package/dist/impostor/bake/sheet.js.map +1 -1
- package/dist/impostor/bake/source.js.map +1 -1
- package/dist/impostor/codec.js.map +1 -1
- package/dist/impostor/impostor.js.map +1 -1
- package/dist/impostor/ktx2/encode.js.map +1 -1
- package/dist/impostor/ktx2/transcode.js.map +1 -1
- package/dist/impostor/ktx2/uastc.js.map +1 -1
- package/dist/impostor/ktx2/wasm/encoder.js.map +1 -1
- package/dist/impostor/ktx2/wasm/transcoder.js.map +1 -1
- package/dist/impostor/ktx2/worker.js.map +1 -1
- package/dist/impostor/mesh/card.js.map +1 -1
- package/dist/impostor/mesh/index.js.map +1 -1
- package/dist/impostor/mesh/material.js.map +1 -1
- package/dist/impostor/mesh/surface.js.map +1 -1
- package/dist/impostor/mesh/textures.js.map +1 -1
- package/dist/impostor/octahedral.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/instanced/camera.js.map +1 -1
- package/dist/instanced/clusters.d.ts +18 -4
- package/dist/instanced/clusters.js +32 -11
- package/dist/instanced/clusters.js.map +1 -1
- package/dist/instanced/cull.js.map +1 -1
- package/dist/instanced/instances.js.map +1 -1
- package/dist/instanced/key.js.map +1 -1
- package/dist/instanced/levels.js.map +1 -1
- package/dist/instanced/lists.d.ts +4 -1
- package/dist/instanced/lists.js +4 -2
- package/dist/instanced/lists.js.map +1 -1
- package/dist/instanced/measure.js.map +1 -1
- package/dist/instanced/meshes.js.map +1 -1
- package/dist/instanced/mirror.js.map +1 -1
- package/dist/instanced/raycast.js.map +1 -1
- package/dist/instanced/rows.d.ts +8 -1
- package/dist/instanced/rows.js +10 -2
- package/dist/instanced/rows.js.map +1 -1
- package/dist/instanced/shape.js.map +1 -1
- package/dist/instanced/sort.d.ts +8 -4
- package/dist/instanced/sort.js +27 -21
- package/dist/instanced/sort.js.map +1 -1
- package/dist/instanced/update.d.ts +4 -3
- package/dist/instanced/update.js +20 -14
- package/dist/instanced/update.js.map +1 -1
- package/dist/levels/bounds.js.map +1 -1
- package/dist/levels/cameras.js.map +1 -1
- package/dist/levels/compile/contexts.js.map +1 -1
- package/dist/levels/compile/index.js.map +1 -1
- package/dist/levels/compile/pipelines.js.map +1 -1
- package/dist/levels/compiles.js.map +1 -1
- package/dist/levels/draw.js.map +1 -1
- package/dist/levels/fade.js.map +1 -1
- package/dist/levels/index.js.map +1 -1
- package/dist/levels/item.js.map +1 -1
- package/dist/levels/load.js.map +1 -1
- package/dist/levels/manager.js.map +1 -1
- package/dist/levels/material.js.map +1 -1
- package/dist/levels/renderer.js.map +1 -1
- package/dist/levels/requests.js.map +1 -1
- package/dist/levels/screen.js.map +1 -1
- package/dist/loader/build.js.map +1 -1
- package/dist/loader/context.js.map +1 -1
- package/dist/loader/entry.js.map +1 -1
- package/dist/loader/index.js.map +1 -1
- package/dist/loader/level.js.map +1 -1
- package/dist/loader/node.js.map +1 -1
- package/dist/loader/request.js.map +1 -1
- package/dist/loader/url.js.map +1 -1
- package/dist/lod.js +1 -0
- package/dist/lod.js.map +1 -1
- package/dist/meshopt.js.map +1 -1
- package/dist/node-process.js.map +1 -1
- package/dist/node.js.map +1 -1
- package/dist/simplify/cards.js.map +1 -1
- package/dist/simplify/index.js.map +1 -1
- package/dist/source/detail.d.ts +1 -1
- package/dist/source/detail.js +3 -1
- package/dist/source/detail.js.map +1 -1
- package/dist/source/deviation.js.map +1 -1
- package/dist/source/evaluator.js.map +1 -1
- package/dist/source/frame.js.map +1 -1
- package/dist/source/raycaster.js.map +1 -1
- package/dist/source/sampler.js.map +1 -1
- package/dist/source/source.js.map +1 -1
- package/dist/source/surface.js.map +1 -1
- package/dist/task.js.map +1 -1
- package/dist/three.d.ts +2 -1
- package/dist/three.js +1 -0
- package/dist/three.js.map +1 -1
- package/dist/tsl.js.map +1 -1
- package/dist/typegpu.js.map +1 -1
- package/dist/wind/bounds.js.map +1 -1
- package/dist/wind/hooks.js.map +1 -1
- package/dist/wind/index.js.map +1 -1
- package/dist/wind/sway.js.map +1 -1
- package/package.json +1 -1
- package/skills/lod/SKILL.md +1 -1
package/dist/levels/draw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["d","std","tgpu","toTsl","FADE","MAX_LEVELS","ANY_HEIGHT","DrawLevels","globalThis","__TYPEGPU_AUTONAME__","a","struct","count","i32","maxPixels","arrayOf","f32","empty","u32","coarsest","forced","fades","has","bits","level","drawLevels","levels","Array","from","length","_","i","Math","min","Draw","finer","fade","drawnLevel","gpuHas","fn","bool","$","__TYPEGPU_META__","WeakMap","set","f","index","v","name","undefined","ast","params","type","body","externals","d.u32","maxPixelsOf","found","__tsover_add","d.f32","d.i32","levelForHeight","height","loadedOrCoarser","loaded","settled","chosen","top","smoothstep","__tsover_mul","__tsover_sub","std.smoothstep","levelsToDraw","before","progress","after","__tsover_div","select","std.select","Error","drawnOf","vec4f","vec3f","low","high","x","y","z","w","drawn","d.arrayOf","d.vec3f","levelsToDrawNode"],"sources":["../../src/levels/draw.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["d","std","tgpu","toTsl","FADE","MAX_LEVELS","ANY_HEIGHT","DrawLevels","globalThis","__TYPEGPU_AUTONAME__","a","struct","count","i32","maxPixels","arrayOf","f32","empty","u32","coarsest","forced","fades","has","bits","level","drawLevels","levels","Array","from","length","_","i","Math","min","Draw","finer","fade","drawnLevel","gpuHas","fn","bool","$","__TYPEGPU_META__","WeakMap","set","f","index","v","name","undefined","ast","params","type","body","externals","d.u32","maxPixelsOf","found","__tsover_add","d.f32","d.i32","levelForHeight","height","loadedOrCoarser","loaded","settled","chosen","top","smoothstep","__tsover_mul","__tsover_sub","std.smoothstep","levelsToDraw","before","progress","after","__tsover_div","select","std.select","Error","drawnOf","vec4f","vec3f","low","high","x","y","z","w","drawn","d.arrayOf","d.vec3f","levelsToDrawNode"],"sources":["../../src/levels/draw.ts"],"sourcesContent":["import { d, std, tgpu } from \"typegpu\";\nimport { toTsl } from \"../typegpu.js\";\n\n// Which levels one object draws at a height, written once: a Lod calls levelsToDraw as plain JS for the CPU's measures,\n// and runs the same function per instance on the GPU, resolved into WGSL by TypeGPU.\n\n/** Share of each level's range over which its finer neighbour fades out. */\nexport const FADE = 0.1;\n\n/**\n * The most levels a Lod has. WGSL has no arrays of a size given at run time, so levelsToDraw reads\n * maxPixels from an array of this size, and the loaded sets are bits of one u32. The GPU side passes the array as two\n * vec4s, `low` and `high` (see `levelsToDrawNode`), which hold eight.\n */\nexport const MAX_LEVELS = 8;\n\n/**\n * The largest f32, which stands for any height levelsToDraw reads, as the maxPixels of level 0's Infinity: an f32\n * holds Infinity, but WGSL has no literal for it and assumes finite math, so TypeGPU refuses to pass it.\n */\nexport const ANY_HEIGHT = 3.4028234663852886e38;\n\n/**\n * The levels as levelsToDraw reads them, with the draw's settings: `maxPixels` per level, `empty` the bits of the\n * levels that draw nothing, `coarsest` the coarsest level that draws something (level 0 if none does), `forced` the\n * level every draw shows or -1, and `fades` 1 where levels fade (not in an orthographic camera or with a forced level),\n * else 0.\n */\nexport const DrawLevels = d.struct({\n count: d.i32,\n maxPixels: d.arrayOf(d.f32, MAX_LEVELS),\n empty: d.u32,\n coarsest: d.i32,\n forced: d.i32,\n fades: d.u32,\n});\n\n/** Whether bit `level` of `bits` is set: the levels of a set, such as the loaded ones, are bits of one number. */\nexport const has = (bits: number, level: number): boolean => ((bits >>> level) & 1) === 1;\n\n/** `levels` as levelsToDraw reads them, on the CPU and in the GPU's uniforms; `forced` a forced level or null. */\nexport function drawLevels(levels: readonly { maxPixels: number }[], empty: number, forced: number | null, fades: boolean): d.Infer<typeof DrawLevels> {\n const maxPixels = Array.from({ length: MAX_LEVELS }, (_, i) => Math.min(levels[i]?.maxPixels ?? 0, ANY_HEIGHT));\n let coarsest = 0;\n for (let i = 1; i < levels.length; i++) if (!has(empty, i)) coarsest = i;\n return { count: levels.length, maxPixels, empty, coarsest, forced: forced ?? -1, fades: forced === null && fades ? 1 : 0 };\n}\n\n/**\n * What one object draws: `level` with the signed fade `fade`, and `finer` with `-fade` (see fade.ts), so that each\n * pixel is drawn by exactly one of them; with `fade` 0 only `level` draws. `level` -1 draws nothing.\n */\nexport const Draw = d.struct({ level: d.i32, finer: d.i32, fade: d.f32 });\n\n/**\n * The level that draws most of an object's pixels in `draw`, or null for none. `level` keeps 1 - fade of them and\n * `finer` fade (see fade.ts), so `finer` once fade is above one half; at one half exactly, `level`.\n */\nexport function drawnLevel({ level, finer, fade }: d.Infer<typeof Draw>): number | null {\n if (level < 0) return null;\n return fade > 0.5 ? finer : level;\n}\n\n/** The GPU twin of `has` above, in code TypeGPU resolves: whether bit `index` of `bits` is set. */\nconst gpuHas = tgpu.fn(\n [d.u32, d.i32],\n d.bool,\n)((bits, index) => {\n \"use gpu\";\n return ((bits >>> d.u32(index)) & 1) === 1;\n});\n\n/**\n * Level `level`'s maxPixels. The array is walked rather than indexed: TypeScript types an index as possibly\n * undefined, and code TypeGPU resolves cannot narrow it.\n */\nconst maxPixelsOf = tgpu.fn(\n [DrawLevels, d.i32],\n d.f32,\n)((levels, level) => {\n \"use gpu\";\n let found = d.f32(0);\n let i = d.i32(0);\n for (const maxPixels of levels.maxPixels) {\n if (i === level) found = maxPixels;\n i += 1;\n }\n return found;\n});\n\n/** The level a `height` px tall object is drawn at: the last one whose maxPixels it fits; level 0 fits any height. */\nexport const levelForHeight = tgpu.fn(\n [d.f32, DrawLevels],\n d.i32,\n)((height, levels) => {\n \"use gpu\";\n let level = d.i32(0);\n let i = d.i32(0);\n for (const maxPixels of levels.maxPixels) {\n if (i > 0 && i < levels.count && height <= maxPixels) level = i;\n i += 1;\n }\n return level;\n});\n\n/** `level` once loaded, else the nearest loaded coarser level that draws something, else -1: never a finer one. */\nexport const loadedOrCoarser = tgpu.fn(\n [d.i32, DrawLevels, d.u32],\n d.i32,\n)((level, levels, loaded) => {\n \"use gpu\";\n if (gpuHas(loaded, level)) return level;\n for (let i = level + 1; i < levels.count; i++) {\n if (gpuHas(loaded, i) && !gpuHas(levels.empty, i)) return i;\n }\n return -1;\n});\n\n/** What an object `height` px tall draws once the levels of `loaded` are loaded, with no arrival under way. */\nconst settled = tgpu.fn(\n [d.f32, DrawLevels, d.u32],\n Draw,\n)((height, levels, loaded) => {\n \"use gpu\";\n // Nothing draws before the coarsest level that draws something: an object never vanishes as its camera backs away.\n if (!gpuHas(loaded, levels.coarsest)) return Draw({ level: -1, finer: -1, fade: 0 });\n let chosen = levels.forced;\n let fade = d.f32(0);\n if (chosen < 0) {\n chosen = levelForHeight(height, levels);\n if (levels.fades === 1 && chosen > 0) {\n const top = maxPixelsOf(levels, chosen);\n fade = std.smoothstep(top * (1 - FADE), top, height);\n }\n }\n const level = loadedOrCoarser(chosen, levels, loaded);\n if (level < 0) return Draw({ level: -1, finer: -1, fade: 0 });\n let finer = level;\n if (fade > 0 && gpuHas(loaded, chosen - 1)) finer = chosen - 1;\n if (finer === level) fade = 0;\n return Draw({ level, finer, fade });\n});\n\n/**\n * What an object `height` px tall draws: its level by height (or `levels.forced`), and inside the top FADE of that\n * level's range its finer neighbour too, each as `loaded` has them (see `loadedOrCoarser`). Nothing draws until the\n * coarsest level that draws something has loaded.\n *\n * While a level arrives, `progress` runs from 0 to 1 over the arrival (1 when none is under way) from what the levels\n * of `before` drew to what those of `loaded` draw, with two draws only: the old height fade collapses onto one level,\n * that level hands its pixels to the new one, and the new height fade opens. What arrives where nothing drew draws at\n * once.\n */\nexport const levelsToDraw = tgpu.fn(\n [d.f32, DrawLevels, d.u32, d.u32, d.f32],\n Draw,\n)((height, levels, loaded, before, progress) => {\n \"use gpu\";\n const after = settled(height, levels, loaded);\n if (progress >= 1) return after;\n const from = settled(height, levels, before);\n if (from.level < 0 || (from.level === after.level && from.finer === after.finer)) return after;\n let level = after.level;\n let finer = after.finer;\n let fade = d.f32(0);\n if (progress < 1 / 3) {\n level = from.level;\n finer = from.finer;\n if (from.fade > 0) fade = from.fade + (1 - from.fade) * progress * 3;\n } else if (progress < 2 / 3) {\n level = std.select(after.level, after.finer, after.fade > 0);\n finer = std.select(from.level, from.finer, from.fade > 0);\n fade = 1 - (progress - 1 / 3) * 3;\n } else if (after.fade > 0) {\n fade = 1 - (1 - after.fade) * (progress - 2 / 3) * 3;\n }\n if (level === finer) fade = 0;\n return Draw({ level, finer, fade });\n});\n\n// drawnOf passes maxPixels as two vec4s, `low` and `high`.\nif (MAX_LEVELS !== 8) throw new Error(\"Lod: levelsToDraw's WGSL passes maxPixels as two vec4s: MAX_LEVELS must be 8\");\n\n/**\n * levelsToDraw of the levels as `drawLevels` encodes them, with `low` and `high` holding maxPixels of levels 0 to 3 and\n * 4 to 7: a vec3 of the level, the finer level (as floats) and the fade.\n */\nconst drawnOf = tgpu.fn(\n [d.f32, d.i32, d.vec4f, d.vec4f, d.u32, d.i32, d.i32, d.u32, d.u32, d.u32, d.f32],\n d.vec3f,\n)((height, count, low, high, empty, coarsest, forced, fades, loaded, before, progress) => {\n \"use gpu\";\n const maxPixels = d.arrayOf(d.f32, MAX_LEVELS)([low.x, low.y, low.z, low.w, high.x, high.y, high.z, high.w]);\n const drawn = levelsToDraw(height, DrawLevels({ count, maxPixels, empty, coarsest, forced, fades }), loaded, before, progress);\n return d.vec3f(d.f32(drawn.level), d.f32(drawn.finer), drawn.fade);\n});\n\n/** drawnOf on the GPU, from its inputs as TSL nodes. */\nexport const levelsToDrawNode = toTsl(\n \"lodDraw\",\n [\"height\", \"count\", \"low\", \"high\", \"empty\", \"coarsest\", \"forced\", \"fades\", \"loaded\", \"before\", \"progress\"],\n drawnOf,\n);\n"],"mappings":"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","ignoreList":[]}
|
package/dist/levels/fade.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fade.js","sourceRoot":"","sources":["../../src/levels/fade.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fade.js","sourceRoot":"","sources":["../../src/levels/fade.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type Camera,\n Color,\n type IndirectStorageBufferAttribute,\n Matrix4,\n StorageBufferAttribute,\n StorageInstancedBufferAttribute,\n type Node,\n type NodeBuilder,\n type Object3D,\n} from \"three/webgpu\";\nimport {\n Fn,\n NodeUpdateType,\n bool,\n cameraProjectionMatrix,\n dot,\n float,\n fract,\n instanceIndex,\n modelWorldMatrix,\n normalLocal,\n positionLocal,\n transformNormal,\n varyingProperty,\n screenCoordinate,\n screenSize,\n select,\n storage,\n uniform,\n uniformGroup,\n varying,\n vec2,\n vec3,\n} from \"three/tsl\";\nimport { isImpostorMesh, isInstancedMesh, isStorageInstanced } from \"../three.js\";\nimport { column, isOrthographic, maxScale } from \"../tsl.js\";\n\n// The dithered fade between neighbouring levels of one object.\n//\n// Each draw of a level (a mesh, or one instance of it) has a signed fade f: f >= 0 keeps\n// the pixels whose dither is at least f, f < 0 those below -f, and f = 0 draws whole. In\n// a fade of progress t in (0, 1) the coarser level draws with t and the finer with -t,\n// so every pixel is drawn by exactly one of them. Shadow maps fade the same way, in\n// their own pixels: a fading object casts one shadow, a dithered mix of both levels'.\n//\n// Each level mesh of a Lod draws a list of slots, which the instance pass fills for each camera with the index of the\n// instance a slot draws and its fade (see `FadeSource`). Materials read them per object while it renders, so the copies\n// of one material every level draws with share one compiled shader (see material.ts).\n\n/**\n * For one camera, the instances a Lod's level meshes draw: per slot, the instance and its signed fade, and where the\n * camera's indirect draws of them lie, `DRAW_BYTES` apart in the order of the Lod's meshes.\n */\nexport interface InstanceSlots {\n /** the index of the instance each slot draws */\n readonly indices: StorageBufferAttribute;\n /** its signed fade */\n readonly fades: StorageBufferAttribute;\n /** Where the camera's indirect draws of the Lod's meshes start (see rows.ts). */\n readonly args: { readonly offset: number; readonly attribute: IndirectStorageBufferAttribute };\n}\n\n/** What a Lod's level meshes draw their instances from: every instance's matrix, and its colour (RGB and a pad). */\nexport interface DrawnInstances {\n matrices: StorageInstancedBufferAttribute;\n colors: StorageInstancedBufferAttribute;\n}\n\n/** How a mesh drawing instances is drawn: where its fade and shadow size come from. */\nexport interface FadeSource {\n /** per camera, the instance and signed fade of each slot; null for none (an ImpostorMesh of its own, drawing every instance) */\n slots: ((camera: Camera) => InstanceSlots | null) | null;\n /** one instance's bounding radius in its own space */\n radius: number;\n /** debug tint, white when off */\n tint: Color;\n /**\n * For a plain mesh of a Lod's level: the instances it draws, and `space`, where its geometry's space sits in the\n * source's (a Lod draws template geometry moved into the instance's space). An ImpostorMesh carries its own instances.\n */\n level?: { readonly instances: DrawnInstances; readonly space: Matrix4 };\n}\n\n/**\n * Per level mesh, where its fade comes from: a side table, as three's Object3D has no typed place for a package's state\n * (userData is the app's).\n */\nconst sources = new WeakMap<Object3D, FadeSource>();\n\n/** Draw `mesh` as `source` says: its materials read it while it renders. */\nexport const setFadeSource = (mesh: Object3D, source: FadeSource): void => void sources.set(mesh, source);\nexport const fadeSourceOf = (mesh: Object3D): FadeSource | undefined => sources.get(mesh);\n\nconst WHITE = new Color(1, 1, 1);\nconst of = (object: Object3D | null) => (object ? sources.get(object) : undefined);\n\n// Per-object values, shared by every material: each draw reads its own.\nconst instanceRadius = uniform(0).onObjectUpdate(({ object }) => of(object)?.radius ?? 0);\n\n/** This draw's debug tint (see `Lod.debug`). */\nexport const tint = uniform(new Color(1, 1, 1)).onObjectUpdate(({ object }) => of(object)?.tint ?? WHITE);\n\n/** Interleaved gradient noise over the pixels of the target being drawn. */\nexport const dither = (pixel: Node<\"vec2\">): Node<\"float\"> => fract(float(52.9829189).mul(fract(dot(pixel, vec2(0.06711056, 0.00583715)))));\n\n/** The level mesh `object` is, when it is a Lod's plain one. */\nconst levelOf = (object: Object3D | null) => of(object)?.level ?? null;\n\n/** The instances where `object` reads its matrices and colours from storage: its own, or its Lod's; else null. */\nfunction instancesOf(object: Object3D): { matrices: StorageInstancedBufferAttribute; colors: StorageInstancedBufferAttribute | null } | null {\n if (isImpostorMesh(object)) return { matrices: object.instanceMatrix, colors: object.instanceColor };\n const level = levelOf(object);\n if (level) return level.instances;\n return isInstancedMesh(object) && isStorageInstanced(object.instanceMatrix) ? { matrices: object.instanceMatrix, colors: null } : null;\n}\n\n/** Where `object`'s geometry space sits in its source's: moved for a Lod's plain level mesh (see `FadeSource`). */\nexport const spaceOf = (object: Object3D | null): Matrix4 | null => levelOf(object)?.space ?? null;\n\n// The draw buffers below are replaced per object, so they stay out of three's texture-keyed\n// binding caches: each render object has its own bindings of this group, while its shader\n// reads the shared nodes.\nconst instanceGroup = uniformGroup(\"lodInstances\", 2, NodeUpdateType.OBJECT);\n\nconst identity = new StorageInstancedBufferAttribute(new Float32Array(new Matrix4().elements), 16);\nconst matrices = storage(identity, \"mat4\", 0)\n .setName(\"lodInstanceMatrices\")\n .setGroup(instanceGroup)\n .toReadOnly()\n .onObjectUpdate(({ object }) => {\n const instances = object && instancesOf(object);\n if (!instances) throw new Error(\"Lod: instance draw has no matrices\");\n return instances.matrices;\n });\n/** `object`'s slots as `camera` draws it, when it draws slots. */\nfunction slotsOf(object: Object3D | null, camera: Camera | null) {\n const draw = of(object);\n return draw?.slots && camera ? draw.slots(camera) : null;\n}\nconst zero = new StorageBufferAttribute(new Float32Array(1), 1);\nconst fades = storage(zero, \"float\", 0)\n .setName(\"lodInstanceFades\")\n .setGroup(instanceGroup)\n .toReadOnly()\n .onObjectUpdate(({ object, camera }) => slotsOf(object, camera)?.fades ?? zero);\nconst none = new StorageBufferAttribute(new Uint32Array(1), 1);\nconst indices = storage(none, \"uint\", 0)\n .setName(\"lodInstanceSlots\")\n .setGroup(instanceGroup)\n .toReadOnly()\n .onObjectUpdate(({ object, camera }) => slotsOf(object, camera)?.indices ?? none);\n/** 1 when the draw's instances are slots the instance pass for each camera fills, else 0. */\nconst slotted = uniform(0, \"uint\").onObjectUpdate(({ object }) => Number(!!of(object)?.slots));\n\n/** The instance this draw's instance index stands for: the one in its slot, or itself. */\nconst instance = Fn(() => slotted.equal(1).select(indices.element(instanceIndex), instanceIndex));\n\n/** This draw's instance matrix when its matrices live in storage, else null. */\nexport function instanceMatrixOf(object: Object3D): Node<\"mat4\"> | null {\n return instancesOf(object) ? matrices.element(instance()) : null;\n}\n\n/** The colour of a draw whose instances have none: given one from the start, a draw's shader stays the same once they do. */\nexport const white = new StorageInstancedBufferAttribute(new Float32Array([1, 1, 1, 1]), 4);\nconst colors = storage(white, \"vec4\", 0)\n .setName(\"lodInstanceColors\")\n .setGroup(instanceGroup)\n .toReadOnly()\n .onObjectUpdate(({ object }) => (object && instancesOf(object)?.colors) || white);\nconst colorIndex = uniform(0, \"uint\").onObjectUpdate(({ object }) => {\n const colors = object && instancesOf(object)?.colors;\n return Number(!!colors && colors !== white);\n});\n\nexport const instanceColor = varying(colors.element(instance().mul(colorIndex)).xyz).setInterpolation(\"flat\");\n\n/** Apply the level's shared instance bindings before its own deformation, as Three does for InstancedMesh. */\nexport function placeInstances(builder: NodeBuilder): void {\n if (!levelOf(builder.object)) return;\n const matrix = matrices.element(instance());\n positionLocal.assign(matrix.mul(positionLocal).xyz);\n if (builder.geometry.hasAttribute(\"normal\")) normalLocal.assign(transformNormal(normalLocal, matrix));\n varyingProperty(\"vec3\", \"vInstanceColor\").assign(instanceColor);\n}\n\n/** This draw's signed fade. */\nexport const fade = Fn((builder): Node<\"float\"> => {\n if (isImpostorMesh(builder.object)) return varying(fades.element(instanceIndex.mul(slotted))).setInterpolation(\"flat\");\n if (!sources.get(builder.object)?.slots) return float(0);\n // Constant across the primitive: keep compute-written slots out of fragment bindings.\n return varying(fades.element(instanceIndex)).setInterpolation(\"flat\");\n});\n\n/** Whether this pixel is this draw's, by its fade: false on the other level's pixels. */\nexport const keepsPixel = Fn((): Node<\"bool\"> => {\n const f = fade();\n const d = dither(screenCoordinate.xy);\n return select(f.greaterThanEqual(0), d.greaterThanEqual(f), d.lessThan(f.negate()));\n});\n\n/**\n * Whether this draw is too small for the shadow map being drawn: narrower than a texel\n * of an orthographic (directional light's) map, it would cover a texel centre only by\n * chance, flickering as it or the map moves. Only valid in a shadow map render.\n */\nconst tooSmallToCast = Fn((builder): Node<\"bool\"> => {\n const { object } = builder;\n const instance = sources.has(object) ? instanceMatrixOf(object) : null;\n // A mesh drawing no instances of a Lod's or an ImpostorMesh's is never too small to cast.\n if (!instance) return bool(false);\n const diameter = maxScale(modelWorldMatrix.mul(instance)).mul(instanceRadius).mul(2);\n // projection[1][1] is 2 × zoom / (top - bottom)\n const texel = float(2).div(column(cameraProjectionMatrix, 1).y.mul(screenSize.y));\n return isOrthographic(cameraProjectionMatrix).and(diameter.lessThan(texel));\n});\n\n/** `position` in a shadow map render, or nothing (a point) when the draw is too small to cast. */\nexport const castPosition = (position: Node<\"vec3\">): Node<\"vec3\"> => select(tooSmallToCast(), vec3(0), position);\n"]}
|
package/dist/levels/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/levels/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/levels/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Color, type Box3, type Object3D } from \"three/webgpu\";\nimport type { d } from \"typegpu\";\nimport { at } from \"../at.js\";\nimport { levelBox } from \"./bounds.js\";\nimport { texelPixels } from \"../impostor/impostor.js\";\nimport { isImpostorMesh } from \"../three.js\";\nimport { FADE, MAX_LEVELS, drawLevels, type DrawLevels } from \"./draw.js\";\nimport { LevelHeights } from \"./load.js\";\n\n// The levels of a Lod: what one is, the checks a list of them passes, and their default thresholds.\n\n/**\n * One level of a Lod: an object given, or one `load` makes when a camera first needs it, which `box` bounds meanwhile.\n * `lod.levels` holds the same shape, with `object` the Lod's own copy, once there is one: the template its level meshes\n * are made from, never in the scene.\n *\n * Objects you give or load are yours to dispose, as a three Mesh never disposes its geometry or material; a Lod frees\n * only what it made of them. CachedLodLoader's are freed when the last Lod holding them is disposed (see `hold`).\n */\nexport interface LodLevel {\n /** The level's object: yours to dispose. */\n object?: Object3D;\n /**\n * Makes the level's object, yours to dispose. A load shared across several Lods runs once per Lod; memoize it to\n * share one object.\n */\n load?: () => Promise<Object3D>;\n /** A deferred level's bounds in the Lod's space; empty for a level that draws nothing. */\n box?: Box3;\n /**\n * Largest on-screen height, in CSS pixels × Lod.quality, at which this level draws: Infinity for level 0, the finest;\n * every later one at most (1 - Lod.fade) of its finer neighbour's, which leaves room for the fades. A deferred level\n * needs one. A given level without one gets one measured from its surface deviation (see `simplify`, `bakeMesh`) or\n * its impostor's texels, else half its finer neighbour's (512 for level 1), raised to leave room for the fades;\n * `lod.levels` holds what it got.\n */\n maxPixels?: number;\n /**\n * Holds what the level's object comes from while a Lod draws it: every Lod made from the level, a copy or clone\n * included, calls each distinct `hold` once as it is made, and the release it answers once it is disposed. CachedLodLoader's\n * levels free what they loaded when the last release is called, which spends them: a Lod made from them later throws.\n * CachedLodLoader's levels no Lod ever holds are never freed: they are yours until a Lod holds them.\n */\n hold?: () => () => void;\n}\n\n/** A level with its threshold, as `lod.levels` holds it. */\nexport type ThresholdedLevel = LodLevel & { maxPixels: number };\n\n/** Throws unless `levels` can be drawn: each given or deferred with a finite box, and thresholds as `LodLevel` says. */\nexport function checkLevels(levels: readonly ThresholdedLevel[], who: string): void {\n if (levels.length > MAX_LEVELS) throw new Error(`${who}: ${levels.length} levels, but at most ${MAX_LEVELS}`);\n levels.forEach(({ object, load, box }, i) => {\n if (!object && !load) throw new Error(`${who}: level ${i} has neither an object nor a load`);\n if (!object && !box) throw new Error(`${who}: deferred level ${i} needs a box`);\n if (box && !box.isEmpty() && ![...box.min.toArray(), ...box.max.toArray()].every(Number.isFinite))\n throw new Error(`${who}: level ${i}'s box must be finite`);\n });\n checkThresholds(\n levels.map(({ maxPixels }) => maxPixels),\n who,\n );\n}\n\n/** Throws unless `thresholds` are maxPixels as `LodLevel` says. */\nfunction checkThresholds(thresholds: readonly number[], who: string): void {\n thresholds.forEach((maxPixels, i) => {\n if (i === 0 && maxPixels !== Infinity) throw new Error(`${who}: level 0, the source, is used at any height: its maxPixels is Infinity, not ${maxPixels}`);\n if (!(maxPixels > 0)) throw new Error(`${who}: maxPixels must be > 0, got ${maxPixels}`);\n const finer = thresholds[i - 1];\n if (finer !== undefined && maxPixels > finer * (1 - FADE))\n throw new Error(\n `${who}: level ${i} has maxPixels ${maxPixels}, but at most ${finer * (1 - FADE)} (${1 - FADE} × level ${i - 1}'s ${finer}) leaves room for the fades`,\n );\n });\n}\n\n/**\n * `inputs` as `lod.levels` holds them: each object cloned, each threshold given or measured (see `LodLevel.maxPixels`)\n * for a source `diameter` across. Throws unless they can be drawn.\n */\nexport function levelsFrom(inputs: readonly LodLevel[], diameter: number, who: string): ThresholdedLevel[] {\n const thresholds = resolveThresholds(\n inputs.map(({ object, maxPixels }) => ({ maxPixels, measured: object && maxPixels === undefined ? measure(object) : undefined })),\n diameter,\n who,\n );\n const levels = inputs.map((input, i) => ({ ...input, object: input.object?.clone(), maxPixels: at(thresholds, i) }));\n checkLevels(levels, who);\n return levels;\n}\n\n/** The bits of the levels that draw nothing: an empty object or box. */\nexport function emptyLevels(levels: readonly LodLevel[]): number {\n return levels.reduce((bits, level, i) => (levelBox(level).isEmpty() ? bits | (1 << i) : bits), 0);\n}\n\n/** Debug tints by level index, see `Lod.debug`. */\nconst TINTS = [0xff6060, 0x60ff60, 0x6080ff, 0xffd040, 0xff60ff, 0x60ffff].map((hex) => new Color(hex));\nconst WHITE = new Color(1, 1, 1);\n\n/** Level `index`'s debug tint, or white. */\nexport const tintOf = (index: number, debug: boolean): Color => (debug ? at(TINTS, index % TINTS.length) : WHITE);\n\n/**\n * Per simplified or baked object, its deviation: a side table, as three's objects have no typed place for it (userData\n * is the app's).\n */\nconst deviations = new WeakMap<Object3D, number>();\n/** Surface deviation from the source, in the source's units. */\nexport const recordDeviation = (level: Object3D, deviation: number): void => void deviations.set(level, deviation);\nexport const deviationOf = (level: Object3D): number | undefined => deviations.get(level);\n\n/** What a level's default threshold is measured from: surface deviation, else impostor texels. */\ninterface Measured {\n deviation?: number;\n texels?: number;\n}\n\nexport function measure(object: Object3D): Measured {\n return { deviation: deviationOf(object), texels: isImpostorMesh(object) ? texelPixels(object.impostor) : undefined };\n}\n\n/** A level to find a threshold for: its own maxPixels, else what it measured. */\ninterface Measurable {\n maxPixels?: number;\n measured?: Measured;\n}\n\n/**\n * Thresholds for `levels` of an object `diameter` across: each level's own maxPixels, else its measured surface\n * deviation's or impostor texels' height, else half the previous one (512 for level 1), raised where needed to leave\n * room for the fades. Throws if the result does not (see `checkLevels`).\n */\nexport function resolveThresholds(levels: readonly Measurable[], diameter: number, who: string): number[] {\n let finer = 1024;\n const defaults = levels.map(({ maxPixels, measured }, index) => {\n if (index === 0) return Infinity;\n const base = !measured\n ? maxPixels\n : measured.deviation !== undefined\n ? diameter / Math.max(measured.deviation, diameter * 1e-4)\n : (measured.texels ?? finer / 2);\n if (base === undefined) throw new Error(`${who}: deferred level ${index} needs maxPixels`);\n finer = base;\n return base;\n });\n const thresholds = levels.map(() => Infinity);\n let next = 0;\n for (let i = levels.length - 1; i > 0; i--) {\n const value = levels[i]?.maxPixels ?? Math.max(at(defaults, i), 2 * next);\n thresholds[i] = value;\n next = value;\n }\n thresholds[0] = levels[0]?.maxPixels ?? Infinity;\n checkThresholds(thresholds, who);\n return thresholds;\n}\n\n/**\n * Levels as levelsToDraw reads them, and what they draw at each height once asked: all loaded, and with the two sets of\n * loaded levels last asked for (an arrival's levels before and after).\n */\ninterface Encoding {\n readonly levels: d.Infer<typeof DrawLevels>;\n heights: LevelHeights | null;\n readonly loading: LevelHeights[];\n}\n\n/**\n * A Lod's levels as levelsToDraw reads them (see `drawLevels`), checked and encoded again only when a\n * threshold or the forced level has changed. What it returns is shared: read it, do not hold on to it.\n */\nexport class EncodedLevels {\n private thresholds: number[] = [];\n private forced: number | null = null;\n /** For cameras that fade levels and for those that do not. */\n private encoded: { fading: Encoding; still: Encoding };\n\n constructor(\n private readonly levels: readonly ThresholdedLevel[],\n /** The bits of the levels that draw nothing. */\n private readonly empty: number,\n private readonly who: string,\n ) {\n this.encoded = this.encode(null);\n }\n\n /** The levels with `forced` the forced level, for a camera that `fades` levels or not. Throws unless they can be drawn. */\n get(forced: number | null, fades: boolean): d.Infer<typeof DrawLevels> {\n let changed = forced !== this.forced;\n for (let i = 0; i < this.levels.length && !changed; i++) changed = this.levels[i]?.maxPixels !== this.thresholds[i];\n if (changed) this.encoded = this.encode(forced);\n return (fades ? this.encoded.fading : this.encoded.still).levels;\n }\n\n /**\n * What `levels`, as `get` gave them, draw at each height with the levels of `loaded` loaded, all by default (see\n * LevelHeights): worked out the first time it is asked, and anew with the levels.\n */\n heights(levels: d.Infer<typeof DrawLevels>, loaded = (1 << levels.count) - 1): LevelHeights {\n const { fading, still } = this.encoded;\n const encoding = levels === fading.levels ? fading : levels === still.levels ? still : null;\n if (!encoding) throw new Error(`${this.who}: heights of levels it did not encode, or no longer does`);\n if (loaded === (1 << levels.count) - 1) return (encoding.heights ??= new LevelHeights(levels));\n const { loading } = encoding;\n const found = loading.find((heights) => heights.loaded === loaded);\n if (found) return found;\n const made = new LevelHeights(levels, loaded);\n loading.unshift(made);\n loading.length = Math.min(loading.length, 2);\n return made;\n }\n\n private encode(forced: number | null) {\n const { levels, empty, who } = this;\n checkLevels(levels, who);\n if (forced !== null && !levels[forced]) throw new Error(`${who}: forceLevel ${forced} is not a level`);\n this.thresholds = levels.map(({ maxPixels }) => maxPixels);\n this.forced = forced;\n const encoding = (fades: boolean): Encoding => ({ levels: drawLevels(levels, empty, forced, fades), heights: null, loading: [] });\n return { fading: encoding(true), still: encoding(false) };\n }\n}\n"]}
|
package/dist/levels/item.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../src/levels/item.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../src/levels/item.ts"],"names":[],"mappings":"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","sourcesContent":["import { DefaultLoadingManager, type LoadingManager, type Renderer } from \"three/webgpu\";\n\n/** How long a held item waits between looks at its renderer's renders (see `look`): a frame's time. */\nconst LOOK_MS = 16;\n\n/**\n * A Lod's item on a LoadingManager, held while it loads: the manager hears of it in a microtask, once the render that\n * changed it has returned, so what an app's callback does, such as throw or render, happens outside three's render.\n */\nexport class LoadingItem {\n /** The LoadingManager given; else three's default (see `manager`). */\n given: LoadingManager | undefined;\n /** The LoadingManager the held item started on, which it ends on. */\n private holding: LoadingManager | undefined;\n /** Whether the Lod was updated since the item's last look at its renderer, the renders then, and whether a look is due. */\n private updated = false;\n private renders = 0;\n private looking = false;\n\n /** `name` names the item: the Lod and its uuid. */\n constructor(private readonly name: string) {}\n\n /** Where the item goes. */\n get manager(): LoadingManager {\n return this.given ?? DefaultLoadingManager;\n }\n\n /** A render updated the Lod: the next look at the renderer's renders does not end the item. */\n touch(): void {\n this.updated = true;\n }\n\n /**\n * Hold the item if `held` and `renderer`, the one drawing the Lod, is known, else end it; while it is held, look at\n * the renderer's renders (see `look`). Before a render has updated the Lod it holds none: a host loading the Lod\n * renders it only once its LoadingManager is done.\n */\n sync(renderer: Renderer | null, held: boolean): void {\n this.hold(held && renderer !== null);\n if (!renderer || !this.holding || this.looking) return;\n // The first look only counts the renders: those still to come in this render are not without an update.\n this.updated = true;\n this.look(renderer);\n }\n\n /** Report a failure on the LoadingManager the item is held on, and end the item. */\n fail(): void {\n const manager = this.holding;\n const { name } = this;\n if (manager) queueMicrotask(() => manager.itemError(name));\n this.hold(false);\n }\n\n private hold(held: boolean): void {\n if (held === (this.holding !== undefined)) return;\n const { name } = this;\n if (held) {\n const manager = (this.holding = this.manager);\n queueMicrotask(() => manager.itemStart(name));\n return;\n }\n const manager = this.holding;\n this.holding = undefined;\n if (manager) queueMicrotask(() => manager.itemEnd(name));\n }\n\n /**\n * While the item is held, look a frame's time apart at the renderer's renders: a Lod its renderer rendered around for\n * a frame without updating it (hidden, on a layer no camera tests, out of the scene) ends its item; its next update\n * starts it again. Renders of other scenes in a separate task can end it early, and the next update reopens it; a\n * renderer that only compiles holds a hidden Lod's item.\n */\n private look(renderer: Renderer): void {\n this.looking = true;\n const timer: unknown = setTimeout(() => {\n this.looking = false;\n if (!this.holding) return;\n const renders = renderer.info.render.calls;\n if (renders !== this.renders && !this.updated) return this.hold(false);\n this.renders = renders;\n this.updated = false;\n this.look(renderer);\n }, LOOK_MS);\n // A held item must not hold Node.js open.\n if (typeof timer === \"object\" && timer !== null && \"unref\" in timer && typeof timer.unref === \"function\") timer.unref();\n }\n}\n"]}
|
package/dist/levels/load.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/levels/load.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/levels/load.ts"],"names":[],"mappings":"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","sourcesContent":["import type { d } from \"typegpu\";\nimport { at } from \"../at.js\";\nimport { ANY_HEIGHT, FADE, levelsToDraw, type Draw, type DrawLevels } from \"./draw.js\";\n\n// Which levels a camera needs loaded, and which it can draw.\n\n/**\n * The bits of the levels to load for objects whose heights on a camera's screen lie in `ranges` (shortest and tallest,\n * in px), read from `heights`, all levels loaded: every level a height in a range draws once all are loaded, the finer\n * neighbour inside a fade included, and with any that draws something the coarsest level that draws something, which\n * every draw waits for (see levelsToDraw). None where nothing draws.\n */\nexport function levelsToLoad(ranges: Iterable<readonly [shortest: number, tallest: number]>, heights: LevelHeights): number {\n const { count, empty, coarsest } = heights.levels;\n const all = (1 << count) - 1;\n let wanted = 0;\n for (const [shortest, tallest] of ranges) {\n wanted |= heights.drawnIn(shortest, tallest);\n // Every level that draws something is wanted already.\n if ((wanted & ~empty) === (all & ~empty)) break;\n }\n return wanted & ~empty ? wanted | (1 << coarsest) : wanted;\n}\n\n/**\n * How far, in f32 steps, a height where what levelsToDraw draws changes may lie from where `windowsOf` puts it: on the\n * CPU, TypeGPU rounds heights and maxPixels to f32 and computes a fade's start from them, which moves it by a step.\n */\nconst SLACK = 4;\n\n/**\n * The levels levelsToDraw draws with `levels` and the levels of `loaded` loaded, no arrival under way, at every height,\n * by intervals of heights: worked out once, as it walks every cluster's heights each frame and each of its CPU calls\n * through TypeGPU copies its arguments. What it draws changes only at a level's maxPixels and where its fade starts,\n * whatever is loaded (which only says what stands in for a level): it is asked at the ends of a few f32 steps around\n * each such height, and between them where it changes. levelsToDraw stays the only answer; this is where it changes.\n */\nexport class LevelHeights {\n /** The last f32 height of every interval but the last, ascending. */\n private readonly ends: number[] = [];\n /** The bits of the levels each interval draws: its level, and inside a fade the finer one too. */\n private readonly drawn: number[] = [];\n\n constructor(\n readonly levels: d.Infer<typeof DrawLevels>,\n readonly loaded = (1 << levels.count) - 1,\n ) {\n const ask = (height: number): number => drawnBits(levelsToDraw(height, levels, loaded, loaded, 1));\n let below = ask(0);\n this.drawn.push(below);\n for (const [low, high] of windowsOf(levels)) {\n if (ask(low) !== below) throw new Error(\"Lod: levelsToDraw changes away from every maxPixels and fade start\");\n const above = ask(high);\n // Every change inside the window: the last f32 height that draws what is below it, found by halving.\n for (let from = low; below !== above;) {\n let last = from;\n let past = high;\n while (step(last, 1) < past) {\n const middle = halfway(last, past);\n if (ask(middle) === below) last = middle;\n else past = middle;\n }\n below = ask(past);\n this.ends.push(last);\n this.drawn.push(below);\n from = past;\n }\n }\n // levelsToDraw takes no infinite f32: the largest finite one stands for every height above.\n if (ask(ANY_HEIGHT) !== below) throw new Error(\"Lod: levelsToDraw changes above every maxPixels\");\n }\n\n /** The bits of the levels objects from `shortest` to `tallest` px tall draw. */\n drawnIn(shortest: number, tallest: number): number {\n const last = this.interval(tallest);\n let bits = 0;\n for (let i = this.interval(shortest); i <= last; i++) bits |= at(this.drawn, i);\n return bits;\n }\n\n /** The interval holding `height`. */\n private interval(height: number): number {\n // levelsToDraw reads a height as an f32.\n const value = Math.fround(height);\n const { ends } = this;\n let index = 0;\n let end = ends.length;\n while (index < end) {\n const middle = (index + end) >>> 1;\n if (value > at(ends, middle)) index = middle + 1;\n else end = middle;\n }\n return index;\n }\n}\n\n/** The bits of the levels `draw` draws: its level, and its finer one while it fades; none for level -1. */\nexport function drawnBits({ level, finer, fade }: d.Infer<typeof Draw>): number {\n if (level < 0) return 0;\n return (1 << level) | (fade > 0 ? 1 << finer : 0);\n}\n\n/**\n * The f32 heights around which what levelsToDraw draws with `levels` may change, `SLACK` steps either side, ascending\n * and merged where they overlap: every level's maxPixels but the source's, and where its fade starts.\n */\nfunction windowsOf(levels: d.Infer<typeof DrawLevels>): [low: number, high: number][] {\n const edges: number[] = [];\n levels.maxPixels.forEach((maxPixels, level) => {\n if (level === 0 || level >= levels.count) return;\n edges.push(Math.fround(maxPixels), Math.fround(Math.fround(maxPixels) * (1 - FADE)));\n });\n edges.sort((a, b) => a - b);\n const windows: [number, number][] = [];\n for (const edge of edges) {\n const low = step(edge, -SLACK);\n const last = windows.at(-1);\n if (last && low <= last[1]) last[1] = step(edge, SLACK);\n else windows.push([low, step(edge, SLACK)]);\n }\n return windows;\n}\n\nconst float = new Float32Array(1);\nconst bits = new Uint32Array(float.buffer);\n\n/** The bits of ANY_HEIGHT, the largest finite f32. */\nconst LARGEST = 0x7f7fffff;\n\n/** The f32 `steps` steps from `value`, a height at or above 0, not below 0 nor above ANY_HEIGHT. */\nfunction step(value: number, steps: number): number {\n float[0] = value;\n bits[0] = Math.min(Math.max(at(bits, 0) + steps, 0), LARGEST);\n return at(float, 0);\n}\n\n/** An f32 between the f32s `low` and `high`, two or more steps apart, at or above 0. */\nfunction halfway(low: number, high: number): number {\n float[0] = low;\n const from = at(bits, 0);\n float[0] = high;\n bits[0] = from + Math.floor((at(bits, 0) - from) / 2);\n return at(float, 0);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/levels/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/levels/manager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Camera, Object3D, Object3DEventMap, Renderer } from \"three/webgpu\";\nimport type { d } from \"typegpu\";\nimport { nextTask } from \"../task.js\";\nimport { isObject3D, isScene, rootOf } from \"../three.js\";\nimport { compilerOf, type CompileFor } from \"./compile/index.js\";\nimport { CameraRenders } from \"./cameras.js\";\nimport type { RenderContext } from \"./compile/contexts.js\";\nimport { has, type DrawLevels } from \"./draw.js\";\nimport type { LodLevel } from \"./index.js\";\nimport { LoadingItem } from \"./item.js\";\nimport { CameraRequests } from \"./requests.js\";\nimport { ContextCompiles } from \"./compiles.js\";\nimport { checkRenderer } from \"./renderer.js\";\n\n/** How long an arriving level fades in for, over what drew in its place. */\nexport const ARRIVAL_MS = 200;\n\nexport interface LodEventMap extends Object3DEventMap {\n /** A compiled level has joined the loaded levels. */\n levelschange: {};\n /** Fetch, decode, or GPU preparation failed; the loaded levels still draw. */\n levelserror: { error: Error };\n}\n\n/** What a Lod makes of a level's loaded object: `object` compiles, then joins the loaded levels or is discarded. */\nexport interface PreparedLevel {\n object: Object3D;\n /** The level joins the loaded levels: it draws from now on. */\n join(): void;\n /** The compile failed, or the Lod was disposed meanwhile: free what preparing made. */\n discard(): void;\n}\n\n/** The level a load makes, while it runs and once it has made it or failed. */\ninterface Loading {\n promise: Promise<Object3D>;\n object?: Object3D;\n error?: Error;\n}\n\n/**\n * Loads a Lod's levels as its cameras request them, never blocking a render. The coarsest level that\n * draws something loads first, as nothing draws before it has (see levelsToDraw); the other levels a camera wants\n * start loading once it has loaded. Each level's load runs once; once the render that asked for it has ended, the Lod\n * prepares it (`prepare`), it compiles for the render context of every camera rendering the Lod and joins the loaded\n * levels. Levels join only between arrivals, each of which fades in for ARRIVAL_MS from the levels loaded `before` it.\n * Each render context seen for the first time compiles in the background every loaded level that draws something,\n * given ones included, that no camera rendering the Lod wants: three skips a draw whose pipeline a compileAsync is\n * still building, in any context that shares it, so a level a camera may draw now builds as it first draws instead.\n * Nothing is evicted: a level stays loaded until the Lod is disposed.\n *\n * A Lod draws with the first renderer that draws one of its meshes (see `see`), whose renders it learns its cameras\n * from. Once one has, it holds an item on its LoadingManager while anything a camera wants is missing, compiling or\n * arriving.\n */\nexport class LodLevelLoadManager {\n /** The bits of the levels that draw: given ones from the start, deferred ones once loaded and compiled. */\n loaded = 0;\n /** The bits loaded before the latest arrival (see `progress`). */\n before = 0;\n /** The first failure; it stops further loading. */\n error: Error | undefined;\n /** Whether a renderer has drawn the Lod: its shaders are being or have been built. */\n started = false;\n /** Whether a camera has asked for levels since the Lod was bound: until then it is pending. */\n private requested = false;\n /** Its item on a LoadingManager. */\n readonly item: LoadingItem;\n\n /**\n * The bits of the levels that draw nothing, the coarsest level that draws something, and the order levels load in: it\n * first, then coarse to fine.\n */\n private readonly empty: number;\n private readonly coarsest: number;\n private readonly order: number[];\n /** When the latest arrival began. */\n private arrival: number | undefined;\n /** Compiled levels waiting for the arrival under way to end. */\n private readonly ready = new Map<number, PreparedLevel>();\n /** Levels being prepared and compiled to join the loaded ones. */\n private readonly arriving = new Map<number, Promise<void>>();\n /** The background compiles of loaded levels, per render context. */\n private readonly compiles: ContextCompiles;\n /** Per level, its load once started. */\n private readonly loads = new Map<number, Loading>();\n /** What renders told of the cameras that drew the Lod. */\n private readonly seen = new CameraRenders();\n private disposed = false;\n /** What `LodLevel.hold` answered, each called once the Lod is disposed. */\n private readonly releases: (() => void)[];\n /** The renderer drawing the Lod and what the cameras rendering it there asked for, once one drew it (see `see`). */\n private bound: { readonly renderer: Renderer; readonly requests: CameraRequests } | null = null;\n\n constructor(\n private readonly lod: Object3D<LodEventMap>,\n /** The LoadingManager item's name, which errors name too: the kind of Lod and its uuid. */\n private readonly name: string,\n /** The levels as the Lod was given them: it holds them (see `LodLevel.hold`) until it is disposed. */\n private readonly levels: readonly LodLevel[],\n /** The levels as levelsToDraw reads them, for the ones that draw nothing and the coarsest that draws something. */\n { empty, coarsest }: d.Infer<typeof DrawLevels>,\n private readonly prepare: (level: number, loaded: Object3D) => PreparedLevel,\n /** What draws a loaded level, compiled for each render context it is wanted in. */\n private readonly drawnBy: (level: number) => readonly Object3D[],\n ) {\n this.loaded = this.before = levels.reduce((bits, level, i) => (level.object ? bits | (1 << i) : bits), 0);\n this.empty = empty;\n this.coarsest = coarsest;\n this.order = levels.length === 0 ? [] : [coarsest, ...[...levels.keys()].reverse().filter((level) => level !== coarsest)];\n this.releases = [...new Set(levels.flatMap(({ hold }) => (hold ? [hold] : [])))].map((hold) => hold());\n this.compiles = new ContextCompiles(\n (context, bits) => this.compileLevels(context, bits),\n (error) => this.report(error),\n );\n this.item = new LoadingItem(name);\n }\n\n /** How far the latest arrival has faded in, in [0, 1]: 1 once it has. */\n get progress(): number {\n if (this.arrival === undefined) return 1;\n return Math.min((performance.now() - this.arrival) / ARRIVAL_MS, 1);\n }\n\n /** The renderer drawing the Lod: the first that drew one of its meshes; null before. */\n get renderer(): Renderer | null {\n return this.bound?.renderer ?? null;\n }\n\n /**\n * `renderer` draws one of the Lod's meshes, as three tells a mesh but not a LOD's `update`: the first binds the Lod\n * to it, once checked to draw it; another throws.\n */\n see(renderer: Renderer): void {\n if (this.bound) {\n if (renderer !== this.bound.renderer) throw new Error(`${this.name}: another renderer than the first that drew it drew it`);\n return;\n }\n checkRenderer(renderer, this.name);\n this.bound = { renderer, requests: new CameraRequests(renderer, this.seen) };\n this.started = true;\n // Its first frame drew nothing of it: it holds its item until the next asks for what its cameras need.\n this.sync();\n }\n\n /** Whether `camera` still renders the Lod (see `CameraRequests.rendering`). */\n rendering(camera: Camera): boolean {\n return this.bound?.requests.rendering(camera) ?? false;\n }\n\n get pending(): boolean {\n if (this.disposed || this.error || !this.bound) return false;\n if (!this.requested) return true;\n const { requests } = this.bound;\n if (this.arriving.size > 0 || this.ready.size > 0 || (requests.needed() & ~this.loaded) !== 0) return true;\n return this.compiles.running(requests);\n }\n\n /**\n * `camera`, a shadow map's when `shadow`, wants the levels of the bits `wanted` (see levelsToLoad) in an update once\n * the Lod is bound to a renderer (see `see`): load what is missing, and answer the bits of the levels loaded now. Outside a\n * Scene a missing level is an error, as no render of it would load it.\n */\n request(camera: Camera, wanted: number, shadow: boolean): number {\n const scene = rootOf(this.lod);\n if (this.disposed || this.error) return this.loaded;\n if (!isScene(scene)) {\n if ((wanted & ~this.loaded) !== 0) throw new Error(`${this.name}: render a Scene that holds it to load the levels it needs`);\n return this.loaded;\n }\n this.item.touch();\n const { requests } = this.boundOrThrow();\n this.requested = true;\n const frame = requests.set(scene, camera, wanted, shadow);\n this.load(requests, camera, shadow, frame);\n this.sync();\n return this.loaded;\n }\n\n /**\n * The height `camera`, a shadow map's when `shadow`, draws at with `renderer` (see CameraRenders.heightOf), which\n * levels are chosen at.\n */\n heightOf(camera: Camera, renderer: Renderer, shadow: boolean): number {\n return this.seen.heightOf(camera, renderer, shadow);\n }\n\n /** The renderer drawing the Lod and its cameras' requests: known once it drew the Lod, before anything loads. */\n private boundOrThrow(): { readonly renderer: Renderer; readonly requests: CameraRequests } {\n if (!this.bound) throw new Error(`${this.name}: no renderer has updated it`);\n return this.bound;\n }\n\n /** What compiles for `cameras` are for: the shadow maps they drew, and the targets disposed. */\n private compileFor(cameras: Camera[]): CompileFor {\n return { shadows: this.seen.shadowsOf(cameras), isDisposed: (target) => this.seen.isDisposed(target) };\n }\n\n /**\n * Load what the cameras still rendering the Lod want, in `order`, compile for `camera`'s render context every loaded\n * level that draws something, none of them wants and is not yet compiled for it, and prepare the levels that have\n * loaded. `shadow` is whether a shadow map renders it, in the renderer's `frame`.\n */\n private load(requests: CameraRequests, camera: Camera, shadow: boolean, frame: number | null): void {\n const needed = requests.needed();\n const coarsestLoaded = !this.levelAt(this.coarsest).load || this.loads.get(this.coarsest)?.object !== undefined;\n for (const level of this.order) {\n const { load } = this.levelAt(level);\n if (!load || !has(needed, level) || this.loads.has(level) || (!coarsestLoaded && level !== this.coarsest)) continue;\n this.start(level, load);\n }\n // What draws never changes halfway through a frame: once a camera updated the Lod in it, its indirect draws among\n // them, a shadow map rendered later joins nothing. The camera's next update does; a Lod only shadow\n // maps update joins in theirs.\n if (!shadow || requests.cameraFrame !== frame) this.join();\n const context = this.seen.contextOf(camera);\n if (!context) return;\n this.compiles.compile(context, this.compiles.claim(context, this.loaded & ~this.empty & ~needed));\n const missing = needed & ~this.loaded;\n for (const level of this.order) {\n if (!has(missing, level) || !this.loads.get(level)?.object || this.arriving.has(level) || this.ready.has(level)) continue;\n this.arrive(level, context);\n }\n }\n\n /** Run level `level`'s `load`, holding the object it makes. */\n private start(level: number, load: () => Promise<Object3D>): void {\n const entry: Loading = {\n promise: Promise.resolve()\n .then(load)\n .then((object) => {\n if (!isObject3D(object)) throw new Error(`${this.name}: level ${level}'s load must return an Object3D`);\n entry.object = object;\n return object;\n })\n .catch((error: unknown) => {\n entry.error = error instanceof Error ? error : new Error(`${this.name}: level ${level} failed to load`, { cause: error });\n throw entry.error;\n }),\n };\n this.loads.set(level, entry);\n void entry.promise.catch((error: unknown) => this.report(error));\n }\n\n private levelAt(level: number): LodLevel {\n const found = this.levels[level];\n if (!found) throw new Error(`${this.name}: no level ${level}`);\n return found;\n }\n\n /** Compile the loaded levels of `bits` for `context`: a background compile (see ContextCompiles). */\n private async compileLevels(context: RenderContext, bits: number): Promise<void> {\n // A context whose target was disposed meanwhile is dropped: compiling would revive the target.\n if (this.disposed || !this.seen.holds(context)) return;\n const objects = this.order.filter((level) => has(bits, level)).flatMap((level) => this.drawnBy(level));\n const { renderer, requests } = this.boundOrThrow();\n const compileFor = this.compileFor(requests.cameras());\n await Promise.all(objects.map((object) => compilerOf(renderer).compileAsync(object, context, compileFor)));\n }\n\n /**\n * Prepare `level` once the render that asked for it has ended, if a camera still wants it then, and compile it for\n * the render context of every camera still rendering the Lod, `context` among them, to join the loaded levels: a\n * slow level never holds another's, and no camera draws it uncompiled.\n */\n private arrive(level: number, context: RenderContext): void {\n // A render runs within one task: the next starts after it has ended.\n const done = nextTask()\n .then(async () => {\n const object = this.loads.get(level)?.object;\n const { renderer, requests } = this.boundOrThrow();\n if (this.disposed || !object || !has(requests.needed(), level)) return;\n const cameras = requests.cameras();\n // Contexts whose targets were disposed meanwhile are dropped. A camera that starts rendering the Lod while it\n // arrives draws it with pipelines built in that frame.\n const seen = [context, ...cameras.flatMap((camera) => this.seen.contextOf(camera) ?? [])];\n const contexts = new Set(seen.filter((other) => this.seen.holds(other)));\n for (const other of contexts) this.compiles.claim(other, 1 << level);\n const prepared = this.prepare(level, object);\n try {\n const compileFor = this.compileFor(cameras);\n await Promise.all([...contexts].map((other) => compilerOf(renderer).compileAsync(prepared.object, other, compileFor)));\n } catch (error) {\n prepared.discard();\n throw error;\n }\n if (this.disposed) return prepared.discard();\n this.ready.set(level, prepared);\n })\n .catch((error: unknown) => this.report(error))\n .finally(() => {\n this.arriving.delete(level);\n this.join();\n });\n this.arriving.set(level, done);\n }\n\n /** Let compiled levels join the loaded ones, between arrivals: what draws never changes halfway through a fade. */\n private join(): void {\n if (this.disposed || this.ready.size === 0 || this.progress < 1) return;\n this.before = this.loaded;\n for (const [level, prepared] of this.ready) {\n prepared.join();\n this.loaded |= 1 << level;\n }\n this.ready.clear();\n this.arrival = performance.now();\n queueMicrotask(() => {\n if (!this.disposed) this.lod.dispatchEvent({ type: \"levelschange\" });\n });\n }\n\n /**\n * Hold the item while levels a camera wants are missing, compiling or arriving, and end it once they are done, so a host waiting for its LoadingManager renders its cameras complete. Called at\n * the end of each request.\n */\n private sync(): void {\n this.item.sync(this.renderer, !this.disposed && !this.error && (this.pending || this.progress < 1));\n }\n\n /**\n * The one failure rule, for a level that fails and for anything that throws while three renders, where a throw would\n * leave its internal target bound: note the error, log it, report it on the LoadingManager the item is held on and\n * end the item, and dispatch `levelserror`. Only the first is reported; it stops further loading.\n */\n report(error: unknown): void {\n if (this.disposed || this.error) return;\n const failure = (this.error = error instanceof Error ? error : new Error(\"Lod: level failed\", { cause: error }));\n console.error(failure);\n this.item.fail();\n this.lod.dispatchEvent({ type: \"levelserror\", error: failure });\n }\n\n /** Run `action`, part of an update or a draw callback, reporting what it throws instead. */\n guard(action: () => void): void {\n try {\n action();\n } catch (error) {\n this.report(error);\n }\n }\n\n /**\n * Stop loading, then `release` what the Lod made of its levels and let go of what it holds of them (see\n * `LodLevel.hold`), once nothing preparing, compiling or loading still uses them. What the levels gave or loaded is\n * not freed: it is whoever made it's.\n */\n dispose(release: () => void): void {\n this.disposed = true;\n this.item.sync(this.renderer, false);\n this.seen.dispose();\n for (const prepared of this.ready.values()) prepared.discard();\n this.ready.clear();\n const free = () => {\n release();\n for (const letGo of this.releases) letGo();\n };\n const finish = () => {\n const unsettled = [...this.loads.values()].flatMap((entry) => (!entry.object && !entry.error ? [entry.promise] : []));\n // A mesh decode can begin its source-material dependency after disposal starts.\n if (unsettled.length) void Promise.allSettled(unsettled).then(free);\n else free();\n };\n const tasks = [...this.arriving.values(), ...this.compiles.tasks()];\n if (tasks.length > 0) void Promise.all(tasks).then(finish);\n else finish();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material.js","sourceRoot":"","sources":["../../src/levels/material.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"material.js","sourceRoot":"","sources":["../../src/levels/material.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Material, Node, NodeBuilder, NodeMaterial } from \"three/webgpu\";\nimport { Fn, output, positionLocal, vec4 } from \"three/tsl\";\nimport { castPosition, keepsPixel, placeInstances, tint } from \"./fade.js\";\nimport { toNodeMaterial } from \"../three.js\";\nimport { isNodeOf } from \"../tsl.js\";\nimport { sway } from \"../wind/sway.js\";\n\n// Side tables, as three's Material has no typed place for a package's state (userData is the app's).\n/** Copy → the material it copies. */\nconst originals = new WeakMap<Material, Material>();\n/** Original → its copies, still and swaying. */\nconst copies = new WeakMap<Material, { still?: NodeMaterial; swaying?: NodeMaterial }>();\n\n/** A slot the original set, as the type it builds to. */\nfunction slot<T extends \"bool\" | \"vec3\" | \"vec4\">(node: Node, type: T, builder: NodeBuilder): Node<T> {\n if (!isNodeOf(node, type, builder)) throw new Error(`@drawcall/lod: a material's ${type} slot builds to ${node.getNodeType(builder)}`);\n return node;\n}\n\n/**\n * The copy of `material` (or of the material it copies) a level of a Lod draws\n * with: it keeps only the pixels of its draw (see fade.ts), tints by\n * its level, casts nothing into shadow maps too coarse for it and, `swaying`, sways in\n * the wind of whatever object draws it (see Wind). Made once per original and kind, and\n * shared by every level drawing it: what differs per object is read while it renders.\n * Freed with the original.\n */\nexport function levelMaterial(material: Material, swaying = false): NodeMaterial {\n const original = originalOf(material);\n let known = copies.get(original);\n if (!known) copies.set(original, (known = {}));\n const kind = swaying ? \"swaying\" : \"still\";\n const existing = known[kind];\n if (existing) return existing;\n const copy = toNodeMaterial(original);\n const { maskNode, outputNode, positionNode, castShadowPositionNode } = copy;\n copy.maskNode = Fn((builder) => (maskNode ? slot(maskNode, \"bool\", builder).and(keepsPixel()) : keepsPixel()))();\n // The tint goes on what the material outputs: its colour slot is left as it is.\n copy.outputNode = Fn((builder) => (outputNode ? slot(outputNode, \"vec4\", builder) : output).mul(vec4(tint, 1)))();\n const position = (builder: NodeBuilder) => {\n placeInstances(builder);\n const own = positionNode ? slot(positionNode, \"vec3\", builder) : positionLocal;\n return swaying ? sway(own) : own;\n };\n copy.positionNode = Fn(position)();\n copy.castShadowPositionNode = Fn((builder) => {\n if (!castShadowPositionNode) return castPosition(position(builder));\n placeInstances(builder);\n return castPosition(slot(castShadowPositionNode, \"vec3\", builder));\n })();\n known[kind] = copy;\n originals.set(copy, original);\n original.addEventListener(\"dispose\", () => copy.dispose());\n return copy;\n}\n\n/** The material a level copy was made from, or `material` itself. */\nexport const originalOf = (material: Material): Material => originals.get(material) ?? material;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/levels/renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEpD,kHAAkH;AAClH,gEAAgE;AAEhE;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,QAAkB;IAC1C,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACrH,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,QAAkB,EAAW,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,CAAC,IAAI,IAAI,CAAC;AAEvI;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,GAAW;IAC3D,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,IAAI;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,+HAA+H,CAAC,CAAC;IACzJ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,0EAA0E,CAAC,CAAC;AACzJ,CAAC;AAED,yHAAyH;AACzH,MAAM,UAAU,iBAAiB,CAAC,QAAkB;IAClD,MAAM,MAAM,GAAY,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChE,MAAM,MAAM,GAAY,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7G,MAAM,IAAI,GAAY,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACjH,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,KAAK,IAAI,KAAK,GAAoB,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM;QAAE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAAE,OAAO,IAAI,CAAC;IAC7I,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAe,EAAW,EAAE,CACvD,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,8BAA8B,CAAC,KAAK,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/levels/renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEpD,kHAAkH;AAClH,gEAAgE;AAEhE;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,QAAkB;IAC1C,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACrH,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,QAAkB,EAAW,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,sBAAsB,CAAC,IAAI,IAAI,CAAC;AAEvI;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,GAAW;IAC3D,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,IAAI;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,+HAA+H,CAAC,CAAC;IACzJ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,0EAA0E,CAAC,CAAC;AACzJ,CAAC;AAED,yHAAyH;AACzH,MAAM,UAAU,iBAAiB,CAAC,QAAkB;IAClD,MAAM,MAAM,GAAY,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChE,MAAM,MAAM,GAAY,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7G,MAAM,IAAI,GAAY,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACjH,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,KAAK,IAAI,KAAK,GAAoB,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM;QAAE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAAE,OAAO,IAAI,CAAC;IAC7I,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAe,EAAW,EAAE,CACvD,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,8BAA8B,CAAC,KAAK,IAAI,CAAC","sourcesContent":["import type { Object3D, Renderer } from \"three/webgpu\";\nimport { isScene, isShadowPass } from \"../three.js\";\n\n// What a Lod learns of the renderer drawing it, and when. three r186 shows much of it through no public API: each\n// read of one of its private fields below says why none serves.\n\n/**\n * How deep in renders `renderer` is: -1 outside them, 0 in a render of its own, 1 in one it draws inside another, as it\n * draws shadow maps and post-processing. Read from r186's `_callDepth`: three keeps a draw's built shader per depth,\n * and no public API tells which.\n */\nexport function callDepth(renderer: Renderer): number {\n const depth: unknown = Reflect.get(renderer, \"_callDepth\");\n if (typeof depth !== \"number\") throw new Error(\"Lod: three's renderer keeps no call depth (lod mirrors three r186)\");\n return depth;\n}\n\n/**\n * Whether `renderer` is rendering or compiling now, as it is while it updates what it draws; not while an app calls\n * `update` itself or another renderer draws. A compile is told by r186's `_compilationPromises`, which no public API\n * shows.\n */\nexport const busy = (renderer: Renderer): boolean => callDepth(renderer) >= 0 || Reflect.get(renderer, \"_compilationPromises\") != null;\n\n/**\n * Throws unless `renderer` can draw a Lod, `who`: three's WebGPU backend, whose device has indirect-first-instance, as\n * each level's draws start at its list (see update.ts).\n */\nexport function checkRenderer(renderer: Renderer, who: string): void {\n if (Reflect.get(renderer.backend, \"isWebGPUBackend\") !== true)\n throw new Error(`${who}: draws with WebGPU only, but its renderer runs another backend (WebGPURenderer falls back to WebGL2 where WebGPU is missing)`);\n if (!renderer.hasFeature(\"indirect-first-instance\")) throw new Error(`${who}: needs the GPU feature indirect-first-instance, which this device lacks`);\n}\n\n/** The largest storage binding `renderer`'s device takes: r186's WebGPU backend's `device`, which three's types omit. */\nexport function maxStorageBinding(renderer: Renderer): number {\n const device: unknown = Reflect.get(renderer.backend, \"device\");\n const limits: unknown = typeof device === \"object\" && device !== null ? Reflect.get(device, \"limits\") : null;\n const size: unknown = typeof limits === \"object\" && limits !== null ? Reflect.get(limits, \"maxStorageBufferBindingSize\") : null;\n if (typeof size !== \"number\") throw new Error(\"Lod: its renderer has no WebGPU device (lod mirrors three r186)\");\n return size;\n}\n\n/**\n * Whether the scene `node` is in is being drawn into a shadow map: three's shadow map render\n * draws it with its own override material, and calls `update` on every LOD with the\n * light's camera, which must not switch the levels the scene's camera chose.\n */\nexport function inShadowMap(node: Object3D): boolean {\n for (let scene: Object3D | null = node; scene; scene = scene.parent) if (isScene(scene) && isShadowPass(scene.overrideMaterial)) return true;\n return false;\n}\n\n/**\n * Whether `target` is the framebuffer target r186 draws the canvas (or output target) through when tone mapping or\n * the output colour space needs a final pass. A draw meant for the output sees it as the active target; a compile for\n * the output leaves the target unset and lets three resolve it.\n */\nexport const isOutputPass = (target: unknown): boolean =>\n typeof target === \"object\" && target !== null && Reflect.get(target, \"isPostProcessingRenderTarget\") === true;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../src/levels/requests.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../src/levels/requests.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Camera, Renderer, Scene } from \"three/webgpu\";\nimport { busy, inShadowMap } from \"./renderer.js\";\nimport type { CameraRenders } from \"./cameras.js\";\n\n/** A camera's last request, the round it was made in and, a shadow map's, the renderer's frame. */\ninterface Request {\n levels: number;\n round: number;\n frame: number | null;\n}\n\n/**\n * What the cameras rendering a Lod asked of it: per camera the levels it wants, and whether it still renders the Lod.\n * The renderer's updates of the Lod are counted in rounds: a round ends when a camera updates it a second time, so a\n * round holds one update by each camera that renders it once a frame, whatever their order. Shadow maps do not count.\n */\nexport class CameraRequests {\n /** The frame a camera, not a shadow map's, last updated the Lod in. */\n cameraFrame: number | null = null;\n /** The cameras still rendering the Lod (see `fresh`), and what they asked for. */\n private readonly requests = new Map<Camera, Request>();\n private round = 0;\n /** The cameras that updated the Lod in the round under way. */\n private readonly inRound = new Set<Camera>();\n\n constructor(\n /** The renderer drawing the Lod. */\n private readonly renderer: Renderer,\n /** What renders told of the cameras that drew the Lod. */\n private readonly seen: CameraRenders,\n ) {}\n\n /**\n * `camera`, a shadow map's when `shadow`, rendering `scene`, wants the levels of the bits `wanted`: note it, drop the\n * cameras that stopped rendering the Lod, and answer the renderer's frame.\n */\n set(scene: Scene, camera: Camera, wanted: number, shadow: boolean): number {\n this.see(scene, camera);\n for (const [other, request] of this.requests) if (!this.fresh(other, request)) this.requests.delete(other);\n let request = this.requests.get(camera);\n if (!request) this.requests.set(camera, (request = { levels: 0, round: this.round, frame: null }));\n request.round = this.round;\n const frame = this.renderer.info.frame;\n request.frame = shadow ? frame : null;\n if (!shadow) this.cameraFrame = frame;\n request.levels = wanted;\n return frame;\n }\n\n /** Note what a render of `scene` with `camera` tells: nothing outside the renderer's renders. */\n private see(scene: Scene, camera: Camera): void {\n const { renderer } = this;\n if (!busy(renderer)) return;\n this.seen.note(renderer, scene, camera);\n if (inShadowMap(scene)) return;\n if (this.inRound.has(camera)) {\n this.round++;\n this.inRound.clear();\n }\n this.inRound.add(camera);\n }\n\n /** The cameras still rendering the Lod. */\n cameras(): Camera[] {\n return [...this.requests].flatMap(([camera, request]) => (this.fresh(camera, request) ? [camera] : []));\n }\n\n /**\n * The bits of the levels wanted by the cameras still rendering the Lod (see `rendering`): each camera that renders\n * the scene once a frame counts, whatever their order, and one that stopped rendering it drops out.\n */\n needed(): number {\n let bits = 0;\n for (const [camera, request] of this.requests) if (this.fresh(camera, request)) bits |= request.levels;\n return bits;\n }\n\n /**\n * Whether `camera` still renders the Lod: it updated it in the current or last round, or it is a shadow map's whose\n * target is not disposed (see `fresh`).\n */\n rendering(camera: Camera): boolean {\n const request = this.requests.get(camera);\n return request !== undefined && this.fresh(camera, request);\n }\n\n /**\n * Whether `camera`'s `request` still counts: made in the current or last round, or a shadow map's while its map's\n * target is not disposed, as the scene's cameras draw what its last update filled however seldom it is redrawn\n * (three redraws a map whose `autoUpdate` is off only when asked). A shadow map's made this frame counts too, before\n * a render notes its target: three draws a map at most once a frame, so a camera rendered again in the frame draws\n * the map the update filled.\n */\n private fresh(camera: Camera, request: Request): boolean {\n if (request.round >= this.round - 1) return true;\n if (request.frame === null) return false;\n return request.frame === this.renderer.info.frame || this.seen.drawsShadowMap(camera);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen.js","sourceRoot":"","sources":["../../src/levels/screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0C,MAAM,cAAc,CAAC;AAW/E,sEAAsE;AACtE,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,MAAc,EAAE,MAAc,EAAE,GAAG,EAAE,IAAI,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;IACnH,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;IACpD,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACjC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAClD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;AAE7B;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,IAAa,EAAE,MAAc;IACxE,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1D,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7C,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACtH,CAAC"}
|
|
1
|
+
{"version":3,"file":"screen.js","sourceRoot":"","sources":["../../src/levels/screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0C,MAAM,cAAc,CAAC;AAW/E,sEAAsE;AACtE,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,MAAc,EAAE,MAAc,EAAE,GAAG,EAAE,IAAI,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;IACnH,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;IACpD,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACjC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAClD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;AAE7B;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,IAAa,EAAE,MAAc;IACxE,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC1D,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;IAC7C,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACtH,CAAC","sourcesContent":["import { Vector3, type Camera, type Matrix4, type Sphere } from \"three/webgpu\";\n\n// How tall things are on a camera's screen.\n\n/** How a camera measures heights: from where, and pixels per unit of subtense (perspective) or of size (orthographic). */\nexport interface Screen {\n readonly eye: Vector3;\n ortho: boolean;\n scale: number;\n}\n\n/** `camera`'s screen at `height`, the one it draws at, into `out`. */\nexport function screenOf(camera: Camera, height: number, out: Screen = { eye: new Vector3(), ortho: false, scale: 0 }): Screen {\n const projection = camera.projectionMatrix.elements;\n out.ortho = projection[15] === 1;\n out.scale = ((projection[5] ?? 0) * height) / 2;\n out.eye.setFromMatrixPosition(camera.matrixWorld);\n return out;\n}\n\nconst centre = new Vector3();\n\n/**\n * The height on `screen` of `sphere`, given in the space `root` maps to world: its diameter, scaled by the largest axis\n * scale of `root`, over its distance (small-angle), or its diameter alone in an orthographic camera.\n */\nexport function screenHeight(sphere: Sphere, root: Matrix4, screen: Screen): number {\n const size = 2 * sphere.radius * root.getMaxScaleOnAxis();\n if (screen.ortho) return size * screen.scale;\n return (size * screen.scale) / Math.max(screen.eye.distanceTo(centre.copy(sphere.center).applyMatrix4(root)), 1e-6);\n}\n"]}
|
package/dist/loader/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/loader/build.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAgB,EAChB,OAAgB,EAChB,EAAE,GAAG,EAAE,QAAQ,EAAiE,EAChF,QAAiC;IAEjC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,YAAY,CAAC,MAAM,EAAE,MAAM,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YACvF,MAAM,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,WAAW,CAAC;YACpD,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1B,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/loader/build.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAgB,EAChB,OAAgB,EAChB,EAAE,GAAG,EAAE,QAAQ,EAAiE,EAChF,QAAiC;IAEjC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,YAAY,CAAC,MAAM,EAAE,MAAM,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YACvF,MAAM,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,WAAW,CAAC;YACpD,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1B,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import type { Object3D, Renderer } from \"three/webgpu\";\nimport { bakeMesh } from \"../baked/index.js\";\nimport { bakeImpostor } from \"../impostor/bake/index.js\";\nimport { ImpostorMesh } from \"../impostor/mesh/index.js\";\nimport { simplify } from \"../simplify/index.js\";\nimport { placeLike } from \"../three.js\";\nimport type { Derived } from \"./level.js\";\n\n/**\n * Build the level `request` asks for from `source`, with the baked level's `low` shell and `interior` rooms if it names\n * them. `renderer` answers the renderer to bake with, asked for only by a bake that draws.\n */\nexport async function buildLevel(\n source: Object3D,\n request: Derived,\n { low, interior }: { low: Object3D | undefined; interior: Object3D | undefined },\n renderer: () => Promise<Renderer>,\n): Promise<Object3D> {\n switch (request.type) {\n case \"simplify\":\n return simplify(source, { ratio: request.ratio });\n case \"impostor\": {\n const { type: _, draw: __, ...options } = request;\n const object = new ImpostorMesh(await bakeImpostor(source, await renderer(), options));\n object.name = `${source.name || \"object\"} impostor`;\n placeLike(object, source);\n return object;\n }\n case \"baked\": {\n const shell = low ? { low } : { ratio: request.ratio };\n const rooms = interior ? { interior, renderer: await renderer() } : {};\n return bakeMesh(source, { textureSize: request.textureSize, ...shell, ...rooms });\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/loader/context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/loader/context.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Object3D } from \"three/webgpu\";\nimport { disposeRejected, disposeRecursive, type DisposeOptions } from \"../dispose.js\";\n\n/**\n * What one ladder's loads share: the source loaded to measure or build the ladder with, handed to the first level load\n * (the source level draws it, a build uses it, a stored level disposes it; onLevel has not changed it), the levels built\n * with the ladder, each handed to its first load, and every level object loaded. Those are freed if describing the\n * ladder fails, else when the last Lod holding the levels is disposed (see `hold`), which spends them.\n */\nexport class LodLoadContext {\n /** Level bytes built while describing the ladder, by index: a stored level is read again when it loads. */\n private readonly built = new Map<number, Uint8Array>();\n private spare: Object3D | undefined;\n /** Every level object loaded, and what freeing it frees: a simplified level draws with its source's materials. */\n private readonly loaded = new Map<Object3D, DisposeOptions>();\n /** How many Lods hold the levels, and whether the last has let go, which freed them. */\n private holders = 0;\n private spent = false;\n\n constructor(\n private readonly load: () => Promise<Object3D>,\n private readonly onLevel: ((object: Object3D, index: number) => void | Promise<void>) | undefined,\n /** Called once what the ladder loaded is freed. */\n private readonly onFree: () => void,\n ) {}\n\n /** The spare source, loaded once. */\n async source(): Promise<Object3D> {\n this.spare ??= await this.load();\n return this.spare;\n }\n\n /** The spare source, for the first level load to take. */\n take(): Object3D | undefined {\n const taken = this.spare;\n this.spare = undefined;\n return taken;\n }\n\n /** Hold the bytes of level `index`, built while describing the ladder, for its first load to take. */\n setBuilt(index: number, bytes: Uint8Array): void {\n this.built.set(index, bytes);\n }\n\n /** The bytes of level `index` built while describing the ladder, once: undefined if none were, or once taken. */\n takeBuilt(index: number): Uint8Array | undefined {\n const bytes = this.built.get(index);\n this.built.delete(index);\n return bytes;\n }\n\n /** Apply onLevel to a level's arriving object, freeing it as `options` say if that fails. */\n async arrive(object: Object3D, index: number, options: DisposeOptions): Promise<Object3D> {\n try {\n this.loaded.set(object, options);\n await this.onLevel?.(object, index);\n return object;\n } catch (error) {\n this.loaded.delete(object);\n disposeRejected(object, options);\n throw error;\n }\n }\n\n /** Describing the ladder failed: free what it loaded. */\n fail(): void {\n this.free(disposeRejected);\n }\n\n /**\n * A Lod made from the levels holds them; the release it answers lets go, and the last frees what was loaded. Levels\n * no Lod ever held are never freed. Freed levels are spent: a Lod made from them later throws.\n */\n readonly hold = (): (() => void) => {\n if (this.spent) throw new Error(\"CachedLodLoader: these levels were freed with the last Lod that held them; call loadAsync again\");\n this.holders++;\n let held = true;\n return () => {\n if (!held) return;\n held = false;\n if (--this.holders > 0) return;\n this.spent = true;\n this.free(disposeRecursive);\n };\n };\n\n /** Free the spare source and every level object loaded with `dispose`. */\n private free(dispose: (object: Object3D, options: DisposeOptions) => void): void {\n const taken = this.take();\n if (taken) dispose(taken, { materials: true });\n for (const [object, options] of this.loaded) dispose(object, options);\n this.loaded.clear();\n this.built.clear();\n this.onFree();\n }\n}\n"]}
|
package/dist/loader/entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/loader/entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0C,MAAM,WAAW,CAAC;AAE/E,OAAO,EAAE,OAAO,EAAe,MAAM,cAAc,CAAC;AAEpD,gCAAgC;AAEhC;;;GAGG;AACH,MAAM,OAAO,GAAG,cAAc,CAAC;AAE/B,yGAAyG;AACzG,MAAM,UAAU,OAAO,CAAC,MAAc,EAAE,EAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAgD;IAC5H,MAAM,KAAK,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACrF,OAAO,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrH,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QAC1D,KAAK,OAAO;YACV,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;gBAC1B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;gBACtC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI;gBACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;aACjC,CAAC;QACJ,KAAK,UAAU;YACb,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,sDAAsD;gBACtD,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;gBAClC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;gBAC5B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;gBACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;gBAChC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;aACvC,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/loader/entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0C,MAAM,WAAW,CAAC;AAE/E,OAAO,EAAE,OAAO,EAAe,MAAM,cAAc,CAAC;AAEpD,gCAAgC;AAEhC;;;GAGG;AACH,MAAM,OAAO,GAAG,cAAc,CAAC;AAE/B,yGAAyG;AACzG,MAAM,UAAU,OAAO,CAAC,MAAc,EAAE,EAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAgD;IAC5H,MAAM,KAAK,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACrF,OAAO,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrH,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QAC1D,KAAK,OAAO;YACV,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;gBAC1B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;gBACtC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI;gBACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;aACjC,CAAC;QACJ,KAAK,UAAU;YACb,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,sDAAsD;gBACtD,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;gBAClC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;gBAC5B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;gBACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;gBAChC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;aACvC,CAAC;IACN,CAAC;AACH,CAAC","sourcesContent":["import { CacheEntry, type CacheEntryOptions, type JsonValue } from \"vitecache\";\nimport type { Derived } from \"./level.js\";\nimport { derived, type Ladder } from \"./request.js\";\n\n// What a level is stored under.\n\n/**\n * What builds and lays out a stored level, and so what identifies it beside its request: bump it with any change to\n * the bytes a level or shape entry holds.\n */\nconst version = \"lod-level@25\";\n\n/** The entry of derived level `of` of `ladder`, or of its source's shape, keyed by the request alone. */\nexport function entryOf(ladder: Ladder, of: number | \"shape\", { basePath, root }: Pick<CacheEntryOptions, \"basePath\" | \"root\">): CacheEntry {\n const level = of === \"shape\" ? { type: of } : parameters(derived(ladder.levels, of));\n return new CacheEntry({ basePath, root, version, dependencies: { level: { value: { url: ladder.key, level } } } });\n}\n\n/**\n * What derives a level's content, by its role rather than its ladder position, so adding or removing another level\n * keeps this one's entry. Switch thresholds and impostor draw options apply at decode, so changing one reuses it.\n */\nfunction parameters(level: Derived): JsonValue {\n switch (level.type) {\n case \"simplify\":\n return { type: level.type, ratio: level.ratio ?? null };\n case \"baked\":\n return {\n type: level.type,\n ratio: level.ratio ?? null,\n textureSize: level.textureSize ?? null,\n low: level.low ?? null,\n interior: level.interior ?? null,\n };\n case \"impostor\":\n return {\n type: level.type,\n // The impostor bakes its top mip for this height too.\n maxPixels: level.maxPixels ?? null,\n layout: level.layout ?? null,\n frames: level.frames ?? null,\n resolution: level.resolution ?? null,\n emissive: level.emissive ?? null,\n supersample: level.supersample ?? null,\n };\n }\n}\n"]}
|