From 06a428a49c8efbae72b569e51b1084ae481c6328 Mon Sep 17 00:00:00 2001 From: BlueRose <378100977@qq.com> Date: Sun, 8 Dec 2024 13:54:44 +0800 Subject: [PATCH] vault backup: 2024-12-08 13:54:43 --- .../虚幻开放日2024/其他有价值的分享.md | 1 + .../渲染功能/阴影控制/ToonShadow.md | 67 ++++++++++++++++++- 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/02-Note/演讲与教程笔记/虚幻开放日2024/其他有价值的分享.md b/02-Note/演讲与教程笔记/虚幻开放日2024/其他有价值的分享.md index 34134cd..1467224 100644 --- a/02-Note/演讲与教程笔记/虚幻开放日2024/其他有价值的分享.md +++ b/02-Note/演讲与教程笔记/虚幻开放日2024/其他有价值的分享.md @@ -1,6 +1,7 @@ # 其他有价值的分享 - 【[UFSH2024]《三角洲行动》,诠释新一代游戏开发方式 | 王理川 天美Y1工作室技术美术组负责人/专家】 https://www.bilibili.com/video/BV18F2oYAEp2/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e - TODO + - [ ] [UFSH2024]用虚幻引擎5为《幻塔》定制高品质动画流程风格化渲染管线 | 晨风 Neverwind 完美世界游戏 https://www.bilibili.com/video/BV1rW2LYvEox/?spm_id_from=333.999.0.0&vd_source=d47c0bb42f9c72fd7d74562185cee290 - [x] 【[UFSH2024]虚幻引擎4移动端渲染管线改造总结分享 | 陈勇 成都西山居 引擎组组长】 https://www.bilibili.com/video/BV18F2oYAES8/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e - [ ] 【[UFSH2024]关于程序化生成,我们还能做什么? | 周杰 徐凯鸣 腾讯IEG Global】 https://www.bilibili.com/video/BV1MP2oYhE6h/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e - [ ] 【[UFSH2024]虚幻引擎5移动渲染管线扩展与优化 | 张锦 永航科技 引擎组负责人】 https://www.bilibili.com/video/BV1mP2oY8EBh/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e diff --git a/03-UnrealEngine/卡通渲染相关资料/渲染功能/阴影控制/ToonShadow.md b/03-UnrealEngine/卡通渲染相关资料/渲染功能/阴影控制/ToonShadow.md index 132276f..b876cc4 100644 --- a/03-UnrealEngine/卡通渲染相关资料/渲染功能/阴影控制/ToonShadow.md +++ b/03-UnrealEngine/卡通渲染相关资料/渲染功能/阴影控制/ToonShadow.md @@ -7,8 +7,71 @@ rating: ⭐ --- # 阴影偏移 可以考虑的Buffer有 -- Depth +- ShadowDepths - CustomDepth +## 相关Paas +1. ShadowDepths + + +# 其他 顺序: -RenderCustomDepthPass \ No newline at end of file +RenderCustomDepthPass + +FSceneRenderer::CreateDynamicShadows +=> +FSceneRenderer::CreatePerObjectProjectedShadow + + + +```c++ +if (!IsForwardShadingEnabled(ShaderPlatform)) +{ + // Dynamic shadows are synced later when using the deferred path to make more headroom for tasks. + FinishInitDynamicShadows(GraphBuilder, InitViewTaskDatas.DynamicShadows, InstanceCullingManager, ExternalAccessQueue); +} +``` + +```c++ +if (RendererOutput == ERendererOutput::DepthPrepassOnly) + { + RenderOcclusionLambda(); + + if (bUpdateNaniteStreaming) + { + Nanite::GStreamingManager.SubmitFrameStreamingRequests(GraphBuilder); + } + + CopySceneCaptureComponentToTarget(GraphBuilder, SceneTextures, ViewFamilyTexture, ViewFamily, Views); + } + else + { + GVRSImageManager.PrepareImageBasedVRS(GraphBuilder, ViewFamily, SceneTextures); + + if (!IsForwardShadingEnabled(ShaderPlatform)) + { + // Dynamic shadows are synced later when using the deferred path to make more headroom for tasks. + FinishInitDynamicShadows(GraphBuilder, InitViewTaskDatas.DynamicShadows, InstanceCullingManager, ExternalAccessQueue); + } + + // Update groom only visible in shadow + if (IsHairStrandsEnabled(EHairStrandsShaderType::All, Scene->GetShaderPlatform()) && RendererOutput == ERendererOutput::FinalSceneColor) + { + UpdateHairStrandsBookmarkParameters(Scene, Views, HairStrandsBookmarkParameters); + + // Interpolation for cards/meshes only visible in shadow needs to happen after the shadow jobs are completed + const bool bRunHairStrands = HairStrandsBookmarkParameters.HasInstances() && (Views.Num() > 0); + if (bRunHairStrands) + { + RunHairStrandsBookmark(GraphBuilder, EHairStrandsBookmark::ProcessCardsAndMeshesInterpolation_ShadowView, HairStrandsBookmarkParameters); + } + } + + // NOTE: The ordering of the lights is used to select sub-sets for different purposes, e.g., those that support clustered deferred. + FSortedLightSetSceneInfo& SortedLightSet = *GraphBuilder.AllocObject(); + { + RDG_CSV_STAT_EXCLUSIVE_SCOPE(GraphBuilder, SortLights); + RDG_GPU_STAT_SCOPE(GraphBuilder, SortLights); + ComputeLightGridOutput = GatherLightsAndComputeLightGrid(GraphBuilder, bComputeLightGrid, SortedLightSet); + } +``` \ No newline at end of file