initial implementation of WebGL-based brush renderer

This commit is contained in:
りき萌 2025-09-05 20:20:45 +02:00
parent b4c3260f49
commit bb55e23979
14 changed files with 385 additions and 247 deletions

View file

@ -147,6 +147,7 @@ function readUrl(urlString) {
let currentUser = wall.onlineUsers.getUser(session.sessionId);
let chunkAllocator = canvasRenderer.atlasAllocator;
let brushRenderer = canvasRenderer.brushRenderer;
// Event loop
@ -188,7 +189,7 @@ function readUrl(urlString) {
}
if (wallEvent.kind.event == "interact") {
user.simulate(wall, wallEvent.kind.interactions);
user.simulate(chunkAllocator, wall, wallEvent.kind.interactions);
}
}
});
@ -254,7 +255,7 @@ function readUrl(urlString) {
let layer = currentUser.getScratchLayer(wall);
let result = await currentUser.haku.evalBrush(
selfController(interactionQueue, wall, layer, event),
selfController(interactionQueue, chunkAllocator, brushRenderer, wall, layer, event),
);
brushEditor.renderHakuResult(result);
});
@ -263,9 +264,8 @@ function readUrl(urlString) {
let scratchLayer = currentUser.commitScratchLayer(wall);
if (scratchLayer == null) return;
canvasRenderer.deallocateChunks(scratchLayer);
let edits = await scratchLayer.toEdits();
scratchLayer.destroy();
scratchLayer.destroy(chunkAllocator);
let editRecords = [];
let dataParts = [];