修渲染两处:透明段剔除背面(闭合体正反面乱序 over 混合=深度错乱,单面玻璃 UE/Unity 语义);prefilter mip0 128→256(roughness 0 镜面反射块状马赛克)
This commit is contained in:
@@ -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 同步)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user