Files
2026-08-16 18:24:52 +07:00

42 lines
1.1 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- sgm_uniform.lua: SGM Uniform (Karras) — uniform in σ^(1/ρ) space
scheduler = {
name = "sgm_uniform",
display = "SGM-Uniform (Karras)",
description = "Karras σ-ramp (ρ=7), front-loads structural steps",
}
function schedule(output, num_steps, shift)
local t_max = 0.999
local t_min = 0.001
local sigma_max = t_max / (1 - t_max)
local sigma_min = t_min / (1 - t_min)
local rho = 7.0
local inv_rho = 1.0 / rho
local s_max = sigma_max ^ inv_rho
local s_min = sigma_min ^ inv_rho
for i = 0, num_steps - 1 do
local frac = i / num_steps
local sigma = (s_max + frac * (s_min - s_max)) ^ rho
output[i] = sigma / (1 + sigma)
end
clamp(output, num_steps)
apply_shift(output, num_steps, shift)
end
function apply_shift(ts, n, shift)
if shift == 1.0 then return end
for i = 0, n - 1 do
local t = ts[i]; ts[i] = shift * t / (1.0 + (shift - 1.0) * t)
end
end
function clamp(ts, n)
for i = 0, n - 1 do
if ts[i] < 1e-6 then ts[i] = 1e-6 end
if ts[i] > 1.0 then ts[i] = 1.0 end
end
end