From 235482733c8861746d6c8acc6f6d44a764e1d04c Mon Sep 17 00:00:00 2001 From: atdunbg Date: Thu, 8 Oct 2026 23:50:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=B8=B2=E6=9F=93=E4=B8=A4=E5=A4=84?= =?UTF-8?q?=EF=BC=9A=E9=80=8F=E6=98=8E=E6=AE=B5=E5=89=94=E9=99=A4=E8=83=8C?= =?UTF-8?q?=E9=9D=A2=EF=BC=88=E9=97=AD=E5=90=88=E4=BD=93=E6=AD=A3=E5=8F=8D?= =?UTF-8?q?=E9=9D=A2=E4=B9=B1=E5=BA=8F=20over=20=E6=B7=B7=E5=90=88=3D?= =?UTF-8?q?=E6=B7=B1=E5=BA=A6=E9=94=99=E4=B9=B1=EF=BC=8C=E5=8D=95=E9=9D=A2?= =?UTF-8?q?=E7=8E=BB=E7=92=83=20UE/Unity=20=E8=AF=AD=E4=B9=89=EF=BC=89?= =?UTF-8?q?=EF=BC=9Bprefilter=20mip0=20128=E2=86=92256=EF=BC=88roughness?= =?UTF-8?q?=200=20=E9=95=9C=E9=9D=A2=E5=8F=8D=E5=B0=84=E5=9D=97=E7=8A=B6?= =?UTF-8?q?=E9=A9=AC=E8=B5=9B=E5=85=8B=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Engine/src/Renderer/IblGenerator.cpp | 4 +++- Engine/src/Renderer/Passes/ForwardPass.cpp | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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)