feat: 特性开关 + Pass 调试视图接口(ImGui 可控,统一帧契约)
三个运行时开关(Shadows/TAA/Bloom)与 9 种调试视图(Final/ TemporalDiff/HDR/TAAColor/Bloom/Velocity/ShadowMap0-2)。 统一设计:开关状态收敛 FrameSceneData 契约,SceneRenderer 唯一 写入、各 pass 只读(零虚接口路由);调试视图经 tonemap push int 路由已绑定的中间目标(声明超集、运行时零重绑);HDR 域 资源过同一 tonemap 保证观感可比。 - Shadows:ShadowPass lambda 空转 + frag cascadeSplits.w 短路 - TAA:alpha=0 直通 + SceneRenderer 停投影抖动(同一持有者同步) - Bloom:3 子 pass 空转 + tonemap 强度归零 - Renderer 门面 Get/Set 转发,App ImGui 3 Checkbox + Combo - PostProcessParams 瘦身为纯数值参数,showTemporalDiff 被取缔
This commit is contained in:
@@ -168,8 +168,33 @@ namespace Engine
|
||||
void Renderer::SetBloomThreshold(f32 v) { m_PostParams->bloomThreshold = v; }
|
||||
f32 Renderer::GetBloomStrength() const { return m_PostParams->bloomStrength; }
|
||||
void Renderer::SetBloomStrength(f32 v) { m_PostParams->bloomStrength = v; }
|
||||
bool Renderer::GetShowTemporalDiff() const { return m_PostParams->showTemporalDiff; }
|
||||
void Renderer::SetShowTemporalDiff(bool b) { m_PostParams->showTemporalDiff = b; }
|
||||
|
||||
// ---- 特性开关 / 调试视图:转发 SceneRenderer(状态唯一持有者)----
|
||||
bool Renderer::GetShadowsEnabled() const
|
||||
{
|
||||
return m_SceneRenderer->Frame().shadowsEnabled;
|
||||
}
|
||||
void Renderer::SetShadowsEnabled(bool b) { m_SceneRenderer->SetShadowsEnabled(b); }
|
||||
bool Renderer::GetTAAEnabled() const { return m_SceneRenderer->Frame().taaEnabled; }
|
||||
void Renderer::SetTAAEnabled(bool b) { m_SceneRenderer->SetTAAEnabled(b); }
|
||||
bool Renderer::GetBloomEnabled() const
|
||||
{
|
||||
return m_SceneRenderer->Frame().bloomEnabled;
|
||||
}
|
||||
void Renderer::SetBloomEnabled(bool b) { m_SceneRenderer->SetBloomEnabled(b); }
|
||||
int Renderer::GetDebugView() const { return m_SceneRenderer->Frame().debugView; }
|
||||
void Renderer::SetDebugView(int v) { m_SceneRenderer->SetDebugView(v); }
|
||||
|
||||
const std::vector<const char*>& Renderer::GetDebugViewNames() const
|
||||
{
|
||||
static const std::vector<const char*> kNames = {
|
||||
"Final", "TemporalDiff", "HDR", "TAAColor", "Bloom",
|
||||
"Velocity", "ShadowMap0", "ShadowMap1", "ShadowMap2",
|
||||
};
|
||||
static_assert(int(Passes::kDebugViewCount) == 9,
|
||||
"DebugView 枚举与名表同步");
|
||||
return kNames;
|
||||
}
|
||||
|
||||
u32 Renderer::GetMainInstanceCount() const
|
||||
{
|
||||
@@ -252,15 +277,17 @@ namespace Engine
|
||||
m_Passes.push_back(CreateScope<Passes::ForwardPass>(
|
||||
*m_SceneGpu, frame, m_HDRColor, m_Velocity, m_Depth, m_ShadowMaps));
|
||||
m_Passes.push_back(CreateScope<Passes::TAAPass>(
|
||||
*m_FullscreenGpu, /*historyAlpha*/ 0.9f, m_HDRColor, m_Velocity,
|
||||
m_TAAColor));
|
||||
*m_FullscreenGpu, frame, /*historyAlpha*/ 0.9f, m_HDRColor,
|
||||
m_Velocity, m_TAAColor));
|
||||
m_Passes.push_back(CreateScope<Passes::TemporalDiffPass>(
|
||||
*m_FullscreenGpu, /*gain*/ 8.0f, m_HDRColor, m_TemporalDiff));
|
||||
m_Passes.push_back(CreateScope<Passes::BloomPass>(
|
||||
*m_FullscreenGpu, *m_PostParams, m_TAAColor, m_BloomA, m_BloomB));
|
||||
*m_FullscreenGpu, *m_PostParams, frame, m_TAAColor, m_BloomA,
|
||||
m_BloomB));
|
||||
m_Passes.push_back(CreateScope<Passes::TonemapPass>(
|
||||
*m_FullscreenGpu, *m_PostParams, m_TAAColor, m_BloomA,
|
||||
m_TemporalDiff, m_Backbuffer));
|
||||
*m_FullscreenGpu, *m_PostParams, frame, m_TAAColor, m_BloomA,
|
||||
m_TemporalDiff, m_Backbuffer, m_HDRColor, m_Velocity,
|
||||
m_ShadowMaps[0], m_ShadowMaps[1], m_ShadowMaps[2]));
|
||||
m_Passes.push_back(CreateScope<Passes::ImGuiPass>(
|
||||
&m_ImGuiLayer, m_Backbuffer));
|
||||
m_Passes.push_back(CreateScope<Passes::PresentPass>(m_Backbuffer));
|
||||
|
||||
Reference in New Issue
Block a user