Show progress bar for raytraced bake
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user