diff --git a/release.md b/release.md index 5f04d58d..ffaac0fc 100644 --- a/release.md +++ b/release.md @@ -5,6 +5,7 @@ Full docs @ https://docs.grid.space/projects/kiri-moto # Release 3.6 +* improved FDM preview rendering speed and reduced memory usage * threaded task and message passing performance improvements * refactor FDM supports and synthetic widgets to use more common code * allow FDM mixing of automatic and manual / detected supports diff --git a/src/kiri/codec.js b/src/kiri/codec.js index c476f8fa..c2a2ae75 100644 --- a/src/kiri/codec.js +++ b/src/kiri/codec.js @@ -365,6 +365,16 @@ registerDecoder(TYPE.POLY, function(v, state) { // ----- Layers Codec ----- +function encodeLayerPolys(polys, state) { + return polys.map(poly => { + return { + open: poly.open, + color: poly.color, + points: codec.encodePointArray(poly.points, state.zeros) + } + }); +} + kiri.Layers.prototype.encode = function(state) { let zeros = state.zeros; let enc = { @@ -377,7 +387,7 @@ kiri.Layers.prototype.encode = function(state) { off: layer.off, color: layer.color, // 1D lines and polylines - polys: encode(layer.polys, state), + polys: encodeLayerPolys(layer.polys, state), lines: encodePointArray(layer.lines, state), // 2D lines and flat areas faces: codec.allocFloat32Array(layer.faces, zeros), @@ -409,8 +419,8 @@ registerDecoder(TYPE.LAYERS, function(v, state) { const d = render.layers[layers[i]] = { off: data.off, color: data.color, - polys: decode(data.polys, state), - lines: decodePointArray(data.lines), + polys: data.polys, + lines: data.lines, faces: codec.allocFloat32Array(data.faces), norms: codec.allocFloat32Array(data.norms), cface: data.cface, diff --git a/src/kiri/stack.js b/src/kiri/stack.js index 9fdf9c45..51bf3955 100644 --- a/src/kiri/stack.js +++ b/src/kiri/stack.js @@ -89,15 +89,13 @@ class Stack { renderLayer(layer, group) { function addPoly(vertices, poly) { const points = poly.points, len = points.length; - for (let i=1; i