Strip core to render data and render graphs
Move glTF, picking, camera controls, and conventional handles into addons. Keep camera and material mutations in SIMD-aligned shared SOA rows and synchronize material updates directly into GPU buffers. Amp-Thread-ID: https://ampcode.com/threads/T-01a01380-b478-77d0-84a0-102880a5c5ae Co-authored-by: Heaust Azure <heaust.azure@gmail.com>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { writeSharedUpload } from "./shared-upload.js";
|
||||
import { gltfToRenderDataPacket } from "./gltf.js";
|
||||
|
||||
const downloads = new Map();
|
||||
|
||||
@@ -10,16 +11,17 @@ addEventListener("message", async ({ data: message }) => {
|
||||
if (!response.ok) throw new Error(`HTTP_${response.status}`);
|
||||
const bytes = new Uint8Array(await response.arrayBuffer());
|
||||
if (!bytes.byteLength) throw new Error("GLTF_EMPTY");
|
||||
downloads.set(request, bytes);
|
||||
postMessage({ type: "allocate", request, byteLength: bytes.byteLength });
|
||||
const packet = await gltfToRenderDataPacket(bytes, message.url);
|
||||
downloads.set(request, packet);
|
||||
postMessage({ type: "allocate", request, byteLength: packet.byteLength });
|
||||
return;
|
||||
}
|
||||
if (message?.type === "storage") {
|
||||
const bytes = downloads.get(request);
|
||||
if (!bytes) throw new Error("GLTF_REQUEST_UNKNOWN");
|
||||
writeSharedUpload(message.buffer, message.descriptor, bytes);
|
||||
const packet = downloads.get(request);
|
||||
if (!packet) throw new Error("GLTF_REQUEST_UNKNOWN");
|
||||
writeSharedUpload(message.buffer, message.descriptor, packet);
|
||||
downloads.delete(request);
|
||||
postMessage({ type: "ready", request, byteLength: bytes.byteLength });
|
||||
postMessage({ type: "ready", request, byteLength: packet.byteLength });
|
||||
}
|
||||
} catch (error) {
|
||||
downloads.delete(request);
|
||||
|
||||
Reference in New Issue
Block a user