Optimize viewer shaders and camera controls; sample GPU profiles asynchronously
Amp-Thread-ID: https://ampcode.com/threads/T-01a0b382-1e79-712b-abd1-d29201c9bb5e Co-authored-by: Heaust Azure <heaust.azure@gmail.com>
This commit is contained in:
+15
-10
@@ -224,6 +224,7 @@ async function openFile(file) {
|
||||
scene = new Scene(canvas, {
|
||||
arenaBytes: 384 * 1024 * 1024,
|
||||
hdr: true,
|
||||
directToCanvas: true,
|
||||
clearColor: [0.025, 0.035, 0.045, 1],
|
||||
});
|
||||
await scene.ready;
|
||||
@@ -266,16 +267,20 @@ async function openFile(file) {
|
||||
);
|
||||
await Promise.all([...lights.map((light) => light.ready), camera.ready]);
|
||||
|
||||
elements.renderValue.textContent = "— ms";
|
||||
elements.renderTime.hidden = false;
|
||||
const stopProfile = scene.core.onProfile((profile) => {
|
||||
elements.renderValue.textContent = `${profile.milliseconds.toFixed(2)} ms`;
|
||||
});
|
||||
const profiling = await scene.core.setProfiler(true);
|
||||
if (!profiling)
|
||||
elements.renderTime.title =
|
||||
"GPU timestamp queries are not supported by this adapter.";
|
||||
else elements.renderTime.removeAttribute("title");
|
||||
// Diagnostic A/B: omit queries and readback, not just the timing badge.
|
||||
let stopProfile;
|
||||
if (new URLSearchParams(location.search).get("profile") !== "off") {
|
||||
elements.renderValue.textContent = "— ms";
|
||||
elements.renderTime.hidden = false;
|
||||
stopProfile = scene.core.onProfile((profile) => {
|
||||
elements.renderValue.textContent = `${profile.milliseconds.toFixed(2)} ms`;
|
||||
});
|
||||
const profiling = await scene.core.setProfiler(true);
|
||||
if (!profiling)
|
||||
elements.renderTime.title =
|
||||
"GPU timestamp queries are not supported by this adapter.";
|
||||
else elements.renderTime.removeAttribute("title");
|
||||
}
|
||||
|
||||
activeViewer = {
|
||||
camera,
|
||||
|
||||
Reference in New Issue
Block a user