From 899b0dbb9b74d2ec306b684816f3678ecea2c515 Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Sun, 30 Nov 2025 19:55:44 +0800 Subject: [PATCH] vault backup: 2025-11-30 19:55:44 --- .../various-complements/histories.json | 2 +- .../《鸣潮》中的光线追踪:用光线构建动漫风格开放世界.md | 89 +++++++++++++++++-- 07-Other/生活/收支记账/2025.md | 5 +- .../UnrealFest/2025/WUWA_CharacterGI_1.png | 3 + .../UnrealFest/2025/WUWA_CharacterGI_2.png | 3 + .../UnrealFest/2025/WUWA_CharacterGI_3.png | 3 + .../2025/WUWA_CharacterReflection_1.png | 3 + .../ImageBag/UnrealFest/2025/WUWA_SkyBox1.png | 3 + 8 files changed, 103 insertions(+), 8 deletions(-) create mode 100644 08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterGI_1.png create mode 100644 08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterGI_2.png create mode 100644 08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterGI_3.png create mode 100644 08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterReflection_1.png create mode 100644 08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_SkyBox1.png diff --git a/.obsidian/plugins/various-complements/histories.json b/.obsidian/plugins/various-complements/histories.json index 4ac6498..7fd3b01 100644 --- a/.obsidian/plugins/various-complements/histories.json +++ b/.obsidian/plugins/various-complements/histories.json @@ -1 +1 @@ -{"相关命令行":{"相关命令行":{"currentFile":{"count":1,"lastUpdated":1761555658044}}},"AfterImage":{"AfterImage":{"currentFile":{"count":5,"lastUpdated":1761622711252}}},"支付宝:支出":{"支付宝:支出":{"currentFile":{"count":2,"lastUpdated":1762180517999}}},"CustomThunk":{"CustomThunk":{"internalLink":{"count":1,"lastUpdated":1762504378918}}},"shader使用方法":{"shader使用方法":{"currentFile":{"count":1,"lastUpdated":1763559532183}}}} \ No newline at end of file +{"支付宝:支出":{"支付宝:支出":{"currentFile":{"count":2,"lastUpdated":1762180517999}}},"CustomThunk":{"CustomThunk":{"internalLink":{"count":1,"lastUpdated":1762504378918}}},"shader使用方法":{"shader使用方法":{"currentFile":{"count":1,"lastUpdated":1763559532183}}},"高频的GI信息会破坏卡通渲染质感?":{"高频的GI信息会破坏卡通渲染质感?":{"currentFile":{"count":1,"lastUpdated":1764499564433}}}} \ No newline at end of file diff --git a/02-Note/演讲与教程笔记/虚幻开放日2025/《鸣潮》中的光线追踪:用光线构建动漫风格开放世界.md b/02-Note/演讲与教程笔记/虚幻开放日2025/《鸣潮》中的光线追踪:用光线构建动漫风格开放世界.md index d5d9137..3b55995 100644 --- a/02-Note/演讲与教程笔记/虚幻开放日2025/《鸣潮》中的光线追踪:用光线构建动漫风格开放世界.md +++ b/02-Note/演讲与教程笔记/虚幻开放日2025/《鸣潮》中的光线追踪:用光线构建动漫风格开放世界.md @@ -9,6 +9,7 @@ destination: share: false obsidianUIMode: source --- +- [[UFSH2025]《鸣潮》中的光线追踪: 用光线构建动漫风格开放世界 | 王鑫 库洛游戏《鸣潮》图形渲染组长] https://www.bilibili.com/video/BV1hSW4zTEgQ/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e # Rtx 实现功能 1. Rtx反射 @@ -16,11 +17,11 @@ obsidianUIMode: source 3. RtxShadow # 选型&快速验证 -需求 - 32km 32km - 二次元 - TOD - 4060 2k 60fps +1. 需求: + 1. 32km 32km + 2. 二次元 + 3. TOD + 4. 4060 2k 60fps 方案: 1. ReSTIR @@ -64,8 +65,84 @@ if(IsToonShadingModel(ShadingModelID)) ``` 案例2:角色接入GI - +- 角色渲染与场景氛围贴合 + - 角色需要接受环境反射的间接光 + - 提升角色效果的通透感 + - ![[WUWA_CharacterGI_1.png]] +- 风格化场景 + - 高频的GI信息会破坏卡通渲染质感 + - 头发与面部先做球形法线处理 + - 角色整体法线朝向相机 + - 低成本平滑的间接光 +```c++ +float3 V = -GetCameraVectorFromTranslatedWorldPosition(TranslatedWorldPosition); +if(IsToonShadingModel(Material. ShadingID)) +{ + Material.WorldNormal = normalize(lerp(WorldNormal, V, 0.5)); +} +``` +![[WUWA_CharacterGI_2.png]] +- 混合处理 + - 卡渲阴影下并非全黑,避免爆掉和效果异常 + - 将间接光转为HSV,限制饱和度与明度 + - 乘上AO,增加层次感 + - 穿日皮肤Mask,皮肤见扫GI影响 +```c++ +half3 IndirectLightHSV = RGBToHSVHalf(DiffuseIndirectLighting); +IndirectLightHSV.b = lerp(0, 0.3, IndirectLightHSV.b); +IndirectLightHSV.g = clamp(0, Θ.35, IndirectLightHSV.g); +``` +![[WUWA_CharacterGI_3.png]] 案例3:角色接入反射 +- 希望能够应用在金属特性的表面 +- 增加角色效果与环境的交互细节 +- 风格化处理 + - 粗糙度:Clamp在0~0.3999避免转为SSR + - 金属度:当做反射强度,超过0.9为镜面反射 +- 混合处理 + - 在Matcap基础上相加,不影响本身金属效果 +![[WUWA_CharacterReflection_1.png]] +## HybridShadow +- Billboard和Imposter等物体需要阴影 +- 光追和光栅化不同,无法分离ShadowPass和BasePass +- 混合了 CSM + Ray Traced Shadow +- 通过TileClassify减少Trace的像素 + +### RaytracingShadows +- 美术有时候会用单向Plane遮挡光照 +- 需要适配原有的美术资源的阴影逻辑 +- Shadow RayFlag: + - RAY_FLAG_CULL_FRONT_FACING_TRIANGLES + +### VolumtricFog +- VolumetricFog依赖CSM +- 用ShadowRay预生成3D ShadowVolume +- Inject Lighting用ShadowVolume判断Visibility +- Hybrid Shadow可以用于性能优化,减少Trace物体解耦ShadowVolume和体积雾精度,低端机性能分级 +### SingleLayerWater & Translucency +- SLW需要水底颜色 +水底深度,多Trace一条光线计算水底颜色和深度,模拟散射 +- 和SLW一样,多发射一条光线,每层循环Trace,手动Blend,注意控制层数 + +### Skybox +- 鸣潮天空盒非常好看,但也非常复杂,反射里需要能看到天空(Very Important! ! ) +- 可以在RayMiss或HitT足够远的时候进行3~4次的Ray Traversal去手动Blend,反射完整天空盒 +- 会造成非常严重的性能开销 +![[WUWA_SkyBox1.png]] +## 性能优化 +### Skybox Capture + +### Payload压缩 + +### OMM & SER +- Opacity Micro-Map (OMM) + - 和光栅化不同,光追中实现AlphaTest需要在AHS里计算Alpha + - Encode TriangleVisibleState To BLAS + - 黄色三角形才需要走AHS计算 +- Shader Execution Reordering (SER) + - GPU上的计算尽量相似,否则会产生Divergence问题 + - 做GI时光线方向非常发射,材质计算复杂度也不尽相同 + - Nvidia推出SER的GPU Feature,可以一定程度解决问题 + - 方向一致的计算提升不大,还会寄存器使用过多导致性能下降 diff --git a/07-Other/生活/收支记账/2025.md b/07-Other/生活/收支记账/2025.md index 7a16aef..c7bb342 100644 --- a/07-Other/生活/收支记账/2025.md +++ b/07-Other/生活/收支记账/2025.md @@ -222,7 +222,10 @@ JD购物:137.68 | 物业费 | 11.2 | 2029.32 | 支付宝 | | 燃气费 | 10.31 | 80.6 | 支付宝 | | 购买星露谷 | 11.1 | 120 | 支付宝 | +| 滨望物业费 | 11.2 | 2029.32 | 支付宝 | +| 中医 | 11.8 | 578 | | +| 优衣库 | | | | -支付宝:支出 收入 +支付宝:6409.93支出 收入 微信:支持 收入 JD购物: \ No newline at end of file diff --git a/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterGI_1.png b/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterGI_1.png new file mode 100644 index 0000000..5ded1e2 --- /dev/null +++ b/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterGI_1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b2511c7078c67d6cf4dc88aa49b6d94ea1fbc8ce1bd257fc63864cbcaf11d92 +size 682986 diff --git a/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterGI_2.png b/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterGI_2.png new file mode 100644 index 0000000..0a94b92 --- /dev/null +++ b/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterGI_2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f91b7b40f6b29226f8ee55fcd0af7d316d0ec9f6da337818a3f7b9ad8a11f38c +size 611703 diff --git a/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterGI_3.png b/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterGI_3.png new file mode 100644 index 0000000..4464998 --- /dev/null +++ b/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterGI_3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb8b97f9335eae7e89857ebbc12ace50af981cf5932b294c42ce7a0e492f3cec +size 684104 diff --git a/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterReflection_1.png b/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterReflection_1.png new file mode 100644 index 0000000..1aefd93 --- /dev/null +++ b/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_CharacterReflection_1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d244a721b88f3fd8e9cea173f899cad109ba3b4e2887edca9fa3448eb173309 +size 648321 diff --git a/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_SkyBox1.png b/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_SkyBox1.png new file mode 100644 index 0000000..7671ebe --- /dev/null +++ b/08-Assets/Images/ImageBag/UnrealFest/2025/WUWA_SkyBox1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d67eadf70b6791cab99edaca86cc229ac39e990176fb3ae0c488107085ec5640 +size 532018