myspace / CommonLua /UI /Dev /uiRenderDebugForceMode.lua
sirnii's picture
Upload 1816 files
b6a38d7 verified
raw
history blame
4.43 kB
DefineClass.DevDSForceModeDlg = {
__parents = { "XDialog" },
}
if FirstLoad then
DebugForceModeIdx = {
gbuffers = 0,
stencil = 0,
misc = 0,
lights = 0,
}
end
local DebugForceModeList = {
["gbuffers"] = { "NORMAL", "GEOMETRY_NORMAL", "BASECOLOR", "COLORMAP", "ROUGHNESS", "METALLIC", "AO", "SI", "TANGENT", "ENCODED_NORMAL", "DEPTH", "NONE"},
["stencil"] = { "STENCIL", "NONE" },
["misc"] = { "BRDF", "ENV_IRRAD","ENV_DIFFUSE", "SUN_DIFFUSE", "DIFFUSE",
"ENV_SPECULAR","SUN_SPECULAR", "SPECULAR", "SUN_SHADOW",
"TRANSLUCENCY", "REFLECTION", "REFLECTION_ITERATIONS", "PRECISE_SELECTION_IDS", "NONE"},
["lights"] = { "LIGHTS", "LIGHTS_DIFFUSE", "LIGHTS_SPECULAR", "LIGHTS_SHADOW",
"LIGHTS_COUNT", "LIGHTS_ATTENUATION", "LIGHTS_CLUSTER", "NONE"}
}
local DebugForceModeRemap = {
["COLORMAP"] = "BASECOLOR",
["TANGENT"] = "NORMAL",
}
local DebugForceModeHROptions =
{
["STENCIL"] = { ShowStencil = 2, ShowRT = "show_rt_buffer", ShowRTEnable = 1, },
["COLORMAP"] = { ForceColorizationRGB = 1, DisableBaseColorMaps = 1, RenderClutter = 0, },
["TANGENT"] = { UseTangentNormalMap = 1 },
["REFLECTION"] = { EnableScreenSpaceReflections = 1, RenderClutter = 0, SSRDebug = 1 },
["REFLECTION_ITERATIONS"] = { EnableScreenSpaceReflections = 1, RenderClutter = 0, SSRDebug = 2 },
["PRECISE_SELECTION_IDS"] = { ShowPreciseSelectionIDs = 1, RenderTransparent = 1 },
}
function DevDSForceModeDlg:Init()
XText:new({
Id = "idText",
Margins = box(100, 80, 0, 0),
TextStyle= "GizmoText",
HandleMouse = false,
}, self)
self.idText:SetText(self.context.text or "")
end
function DevDSForceModeDlg:Done()
table.restore(hr, "ForceModeSpecific")
table.restore(hr, "ForceMode")
RecreateRenderObjects()
end
function OpenDevDSForceModeDlg(mode)
CloseDialog("DevDSForceModeDlg")
table.change(hr, "ForceMode", {
EnablePostprocess = 0,
EnableScreenSpaceReflections = 0,
EnableSubsurfaceScattering = 0,
RenderTransparent = 0,
RenderParticles = 0,
ShowStencil = 0,
ShowRT = "",
ShowRTEnable = 0,
DeferMode = DeferModes[DebugForceModeRemap[mode] or mode],
})
table.change(hr, "ForceModeSpecific", DebugForceModeHROptions[mode] or {})
RecreateRenderObjects()
OpenDialog("DevDSForceModeDlg", terminal.desktop, { text = mode })
end
function ToggleDebugForceMode(debug_type)
if not debug_type then
CloseDialog("DevDSForceModeDlg")
return
end
local modes = DebugForceModeList[debug_type]
local index = (DebugForceModeIdx[debug_type] % #modes) + (GetDialog("DevDSForceModeDlg") and 1 or 0)
DebugForceModeIdx[debug_type] = index
if index ~= #modes then
OpenDevDSForceModeDlg(modes[index])
else
CloseDialog("DevDSForceModeDlg")
end
PP_Rebuild()
RecreateRenderObjects()
end
if FirstLoad then
g_PostProcDebugMode = "Off"
end
local PostProcDebugModesIdxs = {
HsvDebug = 0,
}
local PostProcDebugModes = {
HsvDebug = { names = { "Hue", "Saturation", "Lightness", "Lighness_WO_Shadows", "Off" },
hr_vars = { {}, {}, {}, { Shadowmap = 0, EnableScreenSpaceAmbientObscurance = 0 }, {} },
debug_passes = { "debug_hue", "debug_saturation", "debug_lightness", "debug_lightness", "Off" },
}
}
DefineClass.PostProcDebugFeatureDlg = {
__parents = { "XDialog" },
}
function PostProcDebugFeatureDlg:Init()
XText:new({
Id = "idText",
Margins = box(20, 90, 0, 0),
TextStyle= "EditorText",
HandleMouse = false,
}, self)
self.idText:SetText(self.context.text or "")
end
function PostProcDebugFeatureDlg:Done()
table.restore(hr, "PostProcForceMode")
end
function OpenPostProcDebugFeatureDlg(mode, idx)
CloseDialog("PostProcDebugFeatureDlg")
local hr_options = {}
for op, value in pairs(PostProcDebugModes[mode].hr_vars[idx]) do
hr_options[op] = value
end
table.change(hr, "PostProcForceMode", hr_options)
OpenDialog("PostProcDebugFeatureDlg", terminal.desktop, { text = PostProcDebugModes[mode].names[idx] })
end
function ToggleHsvDebugForceMode(mode)
local num_modes = #PostProcDebugModes[mode].debug_passes
local idx = (PostProcDebugModesIdxs[mode] % num_modes) + 1
PostProcDebugModesIdxs[mode] = idx
if idx ~= num_modes then
OpenPostProcDebugFeatureDlg(mode, idx)
else
CloseDialog("PostProcDebugFeatureDlg")
end
g_PostProcDebugMode = PostProcDebugModes[mode].debug_passes[idx]
PP_Rebuild()
end