From 55731b0251add30c7f0a2b0fd86a8ce1df361507 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sun, 3 May 2020 11:27:36 -0400 Subject: [PATCH] comments --- js/kiri-driver-sla.js | 41 ++++++++++++++++++++++++----------------- wasm/kiri-sla.c | 4 ++-- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/js/kiri-driver-sla.js b/js/kiri-driver-sla.js index 4ef868de..c8d2eba9 100644 --- a/js/kiri-driver-sla.js +++ b/js/kiri-driver-sla.js @@ -1247,6 +1247,7 @@ let gs_kiri_sla = exports; return {width, height, data:buf, png}; } + // write out a thumbnail image function writePhotonImage(preview, writer) { let data = new Uint8Array(preview.data), len = data.byteLength; writer.writeU32(preview.width, true); @@ -1310,15 +1311,15 @@ let gs_kiri_sla = exports; } } - // load wasm renderer in worker context + // load renderer code in worker context only if (!self.window) { fetch('/wasm/kiri-sla.wasm') .then(response => response.arrayBuffer()) .then(bytes => WebAssembly.instantiate(bytes, { env: { - last: (a,b) => { console.log('last',a,b) }, - report: (a,b) => { console.log('report',a,b) - }} + reportf: (a,b) => { console.log('[f]',a,b) }, + reporti: (a,b) => { console.log('[i]',a,b) } + } })) .then(results => { let {module, instance} = results; @@ -1330,9 +1331,9 @@ let gs_kiri_sla = exports; render: exports.render, rle_encode: exports.rle_encode }; - // console.log({heap}); }); + // new WebAssembly rasterizer self.renderLayerWasm = function renderLayer(params) { let { width, height, index, widgets, scaleX, scaleY, masks } = params; let width2 = width / 2, height2 = height / 2; @@ -1356,6 +1357,7 @@ let gs_kiri_sla = exports; } } + // serialize poly into wasm heap memory function writePoly(writer, poly) { let pos = writer.skip(2); let inner = poly.inner; @@ -1399,6 +1401,7 @@ let gs_kiri_sla = exports; writer.writeU16(height, true); writer.writeU16(array.length, true); + // scale and move all polys to fit in rendered platform coordinates for (let i=0, il=array.length; i { - if (i === 0) { - ctx.moveTo(height - (p.y * scaleY + height2), p.x * scaleX + width2); - } else { - ctx.lineTo(height - (p.y * scaleY + height2), p.x * scaleX + width2); - } - }, true); - ctx.closePath(); - } - + // legacy JS-only rasterizer uses OffscreenCanvas self.renderLayer = function renderLayer(params) { let {width, height, index, widgets, scaleX, scaleY} = params; let layer = new OffscreenCanvas(height,width); @@ -1467,6 +1461,19 @@ let gs_kiri_sla = exports; } return { image: red, end: count === 0 }; } + + function polyout(poly, ctx, opt) { + let { scaleX, scaleY, width, height, width2, height2 } = opt; + poly.forEachPoint((p,i) => { + if (i === 0) { + ctx.moveTo(height - (p.y * scaleY + height2), p.x * scaleX + width2); + } else { + ctx.lineTo(height - (p.y * scaleY + height2), p.x * scaleX + width2); + } + }, true); + ctx.closePath(); + } + } })(); diff --git a/wasm/kiri-sla.c b/wasm/kiri-sla.c index bde60d76..12b933e1 100644 --- a/wasm/kiri-sla.c +++ b/wasm/kiri-sla.c @@ -29,8 +29,8 @@ struct point { const Uint8 ph_size = sizeof(struct poly); const Uint8 pt_size = sizeof(struct point); -extern void last(float a, float b); -extern void report(int a, int b); +extern void reportf(float a, float b); +extern void reporti(int a, int b); Uint32 readoff; // read position offset