push
This commit is contained in:
40
core.cm
40
core.cm
@@ -78,7 +78,29 @@ core.backend = function() {
|
||||
}
|
||||
// FPS tracking
|
||||
var _fps_samples = []
|
||||
var _fps_sample_count = 60
|
||||
var _fps_sample_count = 120
|
||||
var _fps_sample_sum = 0
|
||||
var _fps_sample_pos = 0
|
||||
|
||||
function fps_add_sample(sample) {
|
||||
var n = length(_fps_samples)
|
||||
if (n < _fps_sample_count) {
|
||||
push(_fps_samples, sample)
|
||||
_fps_sample_sum += sample
|
||||
} else {
|
||||
var old = _fps_samples[_fps_sample_pos]
|
||||
_fps_samples[_fps_sample_pos] = sample
|
||||
_fps_sample_sum += sample - old
|
||||
_fps_sample_pos++
|
||||
if (_fps_sample_pos >= _fps_sample_count) _fps_sample_pos = 0
|
||||
}
|
||||
}
|
||||
|
||||
function fps_get_avg() {
|
||||
var n = length(_fps_samples)
|
||||
return n ? _fps_sample_sum / n : 0
|
||||
}
|
||||
|
||||
var _current_fps = 0
|
||||
var _frame_time_ms = 0
|
||||
|
||||
@@ -162,7 +184,7 @@ function _main_loop() {
|
||||
// Handle both compositor result ({commands: [...]}) and fx_graph (graph object)
|
||||
if (render_result.commands) {
|
||||
if (_config.imgui || _config.editor) {
|
||||
render_result.commands.push({
|
||||
push(render_result.commands, {
|
||||
cmd: 'imgui',
|
||||
draw: function(ui) {
|
||||
if (_config.imgui) _config.imgui(ui)
|
||||
@@ -188,19 +210,15 @@ function _main_loop() {
|
||||
}
|
||||
}
|
||||
|
||||
// Measure actual frame work time (excluding delay)
|
||||
var frame_end = time_mod.number()
|
||||
var actual_frame_time = frame_end - frame_start
|
||||
|
||||
// Track FPS based on actual work time
|
||||
|
||||
_frame_time_ms = actual_frame_time * 1000
|
||||
_fps_samples.push(actual_frame_time)
|
||||
if (length(_fps_samples) > _fps_sample_count) {
|
||||
_fps_samples.shift()
|
||||
}
|
||||
var avg_frame_time = reduce(_fps_samples, function(a,b) { return a+b }) / length(_fps_samples)
|
||||
fps_add_sample(actual_frame_time)
|
||||
|
||||
var avg_frame_time = fps_get_avg()
|
||||
_current_fps = avg_frame_time > 0 ? 1 / avg_frame_time : 0
|
||||
|
||||
|
||||
// Schedule next frame
|
||||
var frame_time = 1 / _framerate
|
||||
var elapsed = frame_end - frame_start
|
||||
|
||||
Reference in New Issue
Block a user