diff --git a/Engine/src/Renderer/IblGenerator.cpp b/Engine/src/Renderer/IblGenerator.cpp index 75dcded..3385ea6 100644 --- a/Engine/src/Renderer/IblGenerator.cpp +++ b/Engine/src/Renderer/IblGenerator.cpp @@ -32,7 +32,9 @@ namespace Engine { constexpr u32 kFaceCount = 6; constexpr u32 kIrradianceFaceSize = 32; // 漫反射辐照度面边长(低频) - constexpr u32 kPrefilterFaceSize = 128; // pre-filter 面边长(mip0) + // pre-filter 面边长(mip0):roughness→0 的镜面反射采 mip0, + // 128²/面放大到全屏 = 块状马赛克;256 = 无 SSR 时的清晰度底线 + constexpr u32 kPrefilterFaceSize = 256; constexpr u32 kPrefilterMips = 5; // mip 分级 roughness 数 constexpr u32 kBrdfLutSize = 128; // BRDF LUT 边长 constexpr u32 kGroupSize = 8; // compute local_size(shader 同步) diff --git a/Engine/src/Renderer/Passes/ForwardPass.cpp b/Engine/src/Renderer/Passes/ForwardPass.cpp index 1c62a26..958b2bb 100644 --- a/Engine/src/Renderer/Passes/ForwardPass.cpp +++ b/Engine/src/Renderer/Passes/ForwardPass.cpp @@ -279,6 +279,11 @@ namespace Engine::Passes // frag 仍写 gl_FragDepth 的时期做的(禁 early-Z),归因存疑; // gl_FragDepth 已删除,FALSE 若复现病态再另行隔离。 cmd.setDepthWriteEnable(VK_FALSE); + // 单面玻璃:透明段剔除背面。不透明段 cullNone + depthWrite + // 无所谓(深度裁决),透明段 cullNone 会让闭合体(cube)的 + // 正反面片按 mesh 顺序乱序 over 混合 = "深度错乱";cull back + // 每像素至多一面。双面透明(树叶卡片)将来加材质开关 + cmd.setCullMode(vk::CullModeFlagBits::eBack); vk::ColorBlendEquationEXT premul; premul.setSrcColorBlendFactor(vk::BlendFactor::eSrcAlpha)