Show progress bar for raytraced bake

This commit is contained in:
luboslenco
2023-07-11 12:35:55 +02:00
parent 74e754a505
commit 9a5933c546
2 changed files with 23 additions and 4 deletions
@@ -10,6 +10,7 @@ class RenderPathRaytraceBake {
public static var raysPix = 0;
public static var raysSec = 0;
public static var currentSample = 0;
static var raysTimer = 0.0;
static var raysCounter = 0;
static var lastLayer: kha.Image = null;
@@ -113,20 +114,29 @@ class RenderPathRaytraceBake {
path.bindTarget("baketex2", "tex");
path.drawShader("shader_datas/copy_pass/copy_pass");
raysPix = RenderPathRaytrace.frame * 64;
raysCounter += 64;
#if kha_metal
var samplesPerFrame = 4;
#else
var samplesPerFrame = 64;
#end
raysPix = RenderPathRaytrace.frame * samplesPerFrame;
raysCounter += samplesPerFrame;
raysTimer += iron.system.Time.realDelta;
if (raysTimer >= 1) {
raysSec = raysCounter;
raysTimer = 0;
raysCounter = 0;
}
currentSample++;
Krom.delayIdleSleep();
return true;
}
else {
RenderPathRaytrace.frame = 0;
raysTimer = 0;
raysCounter = 0;
currentSample = 0;
return false;
}
}
+11 -2
View File
@@ -198,6 +198,9 @@ class UIHeader {
});
UIBase.inst.hwnds[0].redraws = 2;
History.pushUndo = true;
#if (kha_direct3d12 || kha_vulkan || kha_metal)
arm.render.RenderPathRaytraceBake.currentSample = 0;
#end
}
var bakeHandle = Id.handle({ position: Context.raw.bakeType });
@@ -258,8 +261,14 @@ class UIHeader {
}
#if (kha_direct3d12 || kha_vulkan || kha_metal)
if (rtBake) {
ui.text(tr("Rays/pix:") + ' ${arm.render.RenderPathRaytraceBake.raysPix}');
ui.text(tr("Rays/sec:") + ' ${arm.render.RenderPathRaytraceBake.raysSec}');
var progress = Std.int(arm.render.RenderPathRaytraceBake.currentSample / Context.raw.bakeSamples * 100);
if (progress > 100) progress = 100;
ui.fill(0, 0, ui._w, ui._h, ui.t.SEPARATOR_COL);
ui.fill(0, 0, ui._w * progress / 100, ui._h, ui.t.HIGHLIGHT_COL);
ui.text(tr("Progress") + ": " + progress + "%");
ui.text(tr("Samples") + ": " + arm.render.RenderPathRaytraceBake.currentSample);
ui.text(tr("Rays/pixel" + ": ") + arm.render.RenderPathRaytraceBake.raysPix);
ui.text(tr("Rays/second" + ": ") + arm.render.RenderPathRaytraceBake.raysSec);
}
#end
if (Context.raw.bakeType == BakeCurvature) {