fix rendering performance stats in developer mode
This commit is contained in:
parent
7290103b22
commit
1dbe7fe29b
6 changed files with 71 additions and 68 deletions
|
|
@ -82,36 +82,14 @@ function update(clear) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update progress bar display.
|
||||
* In debug mode, also shows progress status message.
|
||||
* @param {number} [value=0] - Progress value (0.0 to 1.0)
|
||||
* @param {string} [msg] - Optional status message to display
|
||||
*/
|
||||
function progress(value = 0, msg) {
|
||||
value = (value * 100).round(4);
|
||||
api.ui.progress.width = value+'%';
|
||||
if (self.debug) {
|
||||
// console.log(msg, value.round(2));
|
||||
api.ui.prostatus.style.display = 'flex';
|
||||
if (msg) {
|
||||
api.ui.prostatus.innerHTML = msg;
|
||||
} else {
|
||||
api.ui.prostatus.innerHTML = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
hide,
|
||||
show,
|
||||
update,
|
||||
progress
|
||||
update
|
||||
};
|
||||
|
||||
export default {
|
||||
hide,
|
||||
show,
|
||||
update,
|
||||
progress
|
||||
update
|
||||
};
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ export const api = {
|
|||
import() { api.ui.import.style.display = '' },
|
||||
layer: visuals.set_visible_layer,
|
||||
local() { console.trace('deprecated') },
|
||||
progress: alerts.progress,
|
||||
progress: visuals.set_progress,
|
||||
slices: visuals.show_slices,
|
||||
tools: showTools
|
||||
},
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ function ui_sync() {
|
|||
preferences.setThreaded(true);
|
||||
preferences.lineTypeSave();
|
||||
preferences.detailSave();
|
||||
preferences.updateStats();
|
||||
api.visuals.update_stats();
|
||||
|
||||
// optional set-and-lock mode (hides mode menu)
|
||||
let SETMODE = SETUP.mode ? SETUP.mode[0] : null;
|
||||
|
|
|
|||
|
|
@ -6,12 +6,10 @@ import { base } from '../../geo/base.js';
|
|||
import { space } from '../../moto/space.js';
|
||||
|
||||
let { client, platform } = api;
|
||||
let ui, statsTimer;
|
||||
|
||||
// Lazy initialization to avoid circular dependencies
|
||||
function getUI() {
|
||||
if (!ui) ui = api.ui;
|
||||
return ui;
|
||||
return api.ui;
|
||||
}
|
||||
|
||||
function settings() {
|
||||
|
|
@ -107,7 +105,7 @@ function booleanSave() {
|
|||
// platform.layout();
|
||||
api.conf.save();
|
||||
api.platform.update_size();
|
||||
updateStats();
|
||||
api.visuals.update_stats();
|
||||
updateDrawer();
|
||||
api.event.emit('boolean.update');
|
||||
space.view.setProjection(control.ortho ? 'orthographic' : 'perspective');
|
||||
|
|
@ -119,34 +117,6 @@ function updateDrawer() {
|
|||
$c('app', scrolls ? '' : 'hide-scroll', scrolls ? 'hide-scroll' : '');
|
||||
}
|
||||
|
||||
function updateStats() {
|
||||
if (self.debug !== true) {
|
||||
return;
|
||||
}
|
||||
console.log('updateStats()');
|
||||
const ui = getUI();
|
||||
let { div, fps, rms, rnfo } = ui.stats;
|
||||
div.style.display = 'flex';
|
||||
clearTimeout(statsTimer);
|
||||
statsTimer = setInterval(() => {
|
||||
const nrms = space.view.getRMS().toFixed(1);
|
||||
const nfps = space.view.getFPS().toFixed(1);
|
||||
const rend = space.renderInfo();
|
||||
const { memory, render } = rend;
|
||||
if (nfps !== fps.innerText) {
|
||||
fps.innerText = nfps;
|
||||
}
|
||||
if (nrms !== rms.innerText) {
|
||||
rms.innerText = nrms;
|
||||
}
|
||||
if (rnfo.offsetParent !== null) {
|
||||
rnfo.innerHTML = Object.entries({ ...memory, ...render, render_ms: nrms, frames_sec: nfps }).map(row => {
|
||||
return `<div>${row[0]}</div><label>${base.util.comma(row[1])}</label>`
|
||||
}).join('');
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
|
||||
export const preferences = {
|
||||
unitsSave,
|
||||
aniMeshSave,
|
||||
|
|
@ -155,6 +125,5 @@ export const preferences = {
|
|||
speedSave,
|
||||
setThreaded,
|
||||
booleanSave,
|
||||
updateDrawer,
|
||||
updateStats
|
||||
updateDrawer
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
/** Copyright Stewart Allen <sa@grid.space> -- All Rights Reserved */
|
||||
|
||||
import { api } from './api.js';
|
||||
import { base } from '../../geo/base.js';
|
||||
import { consts } from '../core/consts.js';
|
||||
import { settings } from './conf/manager.js';
|
||||
import { space as SPACE } from '../../moto/space.js';
|
||||
import { space } from '../../moto/space.js';
|
||||
|
||||
import STACKS from './stacks.js';
|
||||
|
||||
const { COLOR, VIEWS } = consts;
|
||||
|
|
@ -111,7 +113,7 @@ function setVisibleLayer(h, l) {
|
|||
*/
|
||||
function setWireframe(bool, color, opacity) {
|
||||
api.widgets.each(function(w) { w.setWireframe(bool, color, opacity) });
|
||||
SPACE.update();
|
||||
space.update();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -129,7 +131,7 @@ function setEdges(bool) {
|
|||
}
|
||||
bool = api.local.getBoolean('model.edges');
|
||||
api.widgets.each(w => w.setEdges(bool));
|
||||
SPACE.update();
|
||||
space.update();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -207,7 +209,7 @@ function showSlices(layer) {
|
|||
updateSlider();
|
||||
// STACKS.setRange is called by slider callback
|
||||
|
||||
SPACE.update();
|
||||
space.update();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -239,7 +241,59 @@ function updateStackLabelState() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update progress bar display.
|
||||
* In debug mode, also shows progress status message.
|
||||
* @param {number} [value=0] - Progress value (0.0 to 1.0)
|
||||
* @param {string} [msg] - Optional status message to display
|
||||
*/
|
||||
function setProgress(value = 0, msg) {
|
||||
value = (value * 100).round(4);
|
||||
api.ui.progress.width = value+'%';
|
||||
if (self.debug) {
|
||||
// console.log(msg, value.round(2));
|
||||
api.ui.prostatus.style.display = 'flex';
|
||||
if (msg) {
|
||||
api.ui.prostatus.innerHTML = msg;
|
||||
} else {
|
||||
api.ui.prostatus.innerHTML = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let statsTimer;
|
||||
|
||||
function updateStats() {
|
||||
clearTimeout(statsTimer);
|
||||
let { div, fps, rms, rnfo } = api.ui.stats;
|
||||
if (api.devel.enabled === false) {
|
||||
fps.innerText = '';
|
||||
rms.innerText = '';
|
||||
rnfo.innerHTML = '';
|
||||
return;
|
||||
}
|
||||
div.style.display = 'flex';
|
||||
statsTimer = setInterval(() => {
|
||||
const nrms = space.view.getRMS().toFixed(1);
|
||||
const nfps = space.view.getFPS().toFixed(1);
|
||||
const rend = space.renderInfo();
|
||||
const { memory, render } = rend;
|
||||
if (nfps !== fps.innerText) {
|
||||
fps.innerText = nfps;
|
||||
}
|
||||
if (nrms !== rms.innerText) {
|
||||
rms.innerText = nrms;
|
||||
}
|
||||
if (rnfo.offsetParent !== null) {
|
||||
rnfo.innerHTML = Object.entries({ ...memory, ...render, render_ms: nrms, frames_sec: nfps }).map(row => {
|
||||
return `<div>${row[0]}</div><label>${base.util.comma(row[1])}</label>`
|
||||
}).join('');
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
|
||||
export const visuals = {
|
||||
set_progress: setProgress,
|
||||
set_wireframe: setWireframe,
|
||||
set_edges: setEdges,
|
||||
unit_scale: unitScale,
|
||||
|
|
@ -247,6 +301,7 @@ export const visuals = {
|
|||
update_slider: updateSlider,
|
||||
update_slider_max: updateSliderMax,
|
||||
update_stack_labels: updateStackLabelState,
|
||||
update_stats: updateStats,
|
||||
show_slices: showSlices,
|
||||
hide_slices: hideSlices,
|
||||
show_slider: showSlider,
|
||||
|
|
|
|||
|
|
@ -119,12 +119,13 @@ export function fdm_slice(settings, widget, onupdate, ondone) {
|
|||
let render = settings.render !== false,
|
||||
{ minions } = self.kiri_worker,
|
||||
{ process, device, controller } = settings,
|
||||
{ devel, assembly, threaded } = controller,
|
||||
isBelt = device.bedBelt,
|
||||
isBrick = controller.devel && process.sliceZInterleave,
|
||||
isBrick = devel && process.sliceZInterleave,
|
||||
isSynth = widget.track.synth,
|
||||
isSupport = widget.track.support,
|
||||
useAssembly = controller.assembly,
|
||||
isConcurrent = controller.threaded && minions.concurrent,
|
||||
useAssembly = assembly,
|
||||
isConcurrent = threaded && minions.concurrent,
|
||||
topLayers = process.sliceTopLayers || 0,
|
||||
bottomLayers = process.sliceBottomLayers || 0,
|
||||
vaseMode = process.sliceFillType === 'vase' && !isSynth,
|
||||
|
|
@ -343,7 +344,7 @@ export function fdm_slice(settings, widget, onupdate, ondone) {
|
|||
if (changes && !isSynth) {
|
||||
healed = true;
|
||||
slice.changes = changes;
|
||||
if (self.debug) {
|
||||
if (devel) {
|
||||
console.log('slice healed', slice.index, slice.z, changes);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue