From 1589a63ec0ded0ce4796ac455498c2ee317b9fb0 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sun, 19 Apr 2020 16:29:13 -0400 Subject: [PATCH] reduce memory footprint of sla mode --- js/kiri-driver-sla.js | 37 +++++++++++++++++++++---------------- js/kiri-export.js | 9 ++++++++- js/kiri-worker.js | 3 +-- js/kiri.js | 9 +++++++-- 4 files changed, 37 insertions(+), 21 deletions(-) diff --git a/js/kiri-driver-sla.js b/js/kiri-driver-sla.js index 7638d20e..c4e48b7c 100644 --- a/js/kiri-driver-sla.js +++ b/js/kiri-driver-sla.js @@ -203,6 +203,8 @@ let gs_kiri_sla = exports; scaleX = width / device.bedWidth, scaleY = height / device.bedDepth; + let mark = Date.now(); + widgets.forEach(widget => { layermax = Math.max(widget.slices.length); }); @@ -243,12 +245,19 @@ let gs_kiri_sla = exports; console.log({no_slice_at: index}) } }); - output.push(ctx.getImageData(0,0,height,width)); + let data = ctx.getImageData(0,0,height,width).data; + let red = new Uint8ClampedArray(data.length / 4); + for (let i=0; i { online({ progress: (index / print.images.length) * 0.25, message: "image_xfer", - data: image.data + data: image }); }); @@ -286,7 +296,7 @@ let gs_kiri_sla = exports; let file = exp_func(print, { width: 2560, height: 1440, - lines: print.images.map(i => i.data), + lines: print.images, small: previewSmall.data, large: previewLarge.data }, (progress, message) => { @@ -301,6 +311,7 @@ let gs_kiri_sla = exports; // release memory print.images = null; + console.log('print.export', Date.now() - mark); }; // runs in browser main @@ -383,15 +394,14 @@ let gs_kiri_sla = exports; let ctx = canvas.getContext('2d'); let img = ctx.createImageData(done.height, done.width); let imgDV = new DataView(img.data.buffer); - let range = $('print-range'); range.value = 0; range.min = 0; range.max = lines.length - 1; range.oninput = function() { let lineDV = new DataView(lines[range.value].buffer); - for (let i=0; i { - let count = line.length / 4; + let count = line.length; let lineDV = new DataView(line.buffer); - let bits = new Uint8Array(line.length / 4), bits2; + let bits = new Uint8Array(line.length), bits2; let bitsDV = new DataView(bits.buffer), bitsDV2; let subs = [{ data: bits, view: bitsDV }]; for (let sl=1; sl