diff --git a/03-UnrealEngine/Rendering/RenderingPipeline/Lighting/Lighting.md b/03-UnrealEngine/Rendering/RenderingPipeline/Lighting/Lighting.md index 53d4d1d..d02bd0b 100644 --- a/03-UnrealEngine/Rendering/RenderingPipeline/Lighting/Lighting.md +++ b/03-UnrealEngine/Rendering/RenderingPipeline/Lighting/Lighting.md @@ -7,7 +7,6 @@ rating: ⭐ --- # FSortedLightSetSceneInfo - 有序的光源集合相关定义: ```c++ /** Data for a simple dynamic light. */ @@ -158,7 +157,14 @@ void FDeferredShadingSceneRenderer::Render(FRHICommandListImmediate& RHICmdList) } ``` -## +PS. 简单光源都可以被分块或分簇渲染,但对于非简单光源,只有满足以下条件的光源才可被分块或分簇渲染: +- 没有使用光源的附加特性(TextureProfile、LightFunction、LightingChannel)。 +- 没有开启阴影。 +- 非平行光或矩形光。 + +另外,是否支持分块渲染,还需要光源场景代理的`IsTiledDeferredLightingSupported`返回true,长度为0的点光源才支持分块渲染。 + +## GatherLightsAndComputeLightGrid ```c++ FComputeLightGridOutput FDeferredShadingSceneRenderer::GatherLightsAndComputeLightGrid(FRDGBuilder& GraphBuilder, bool bNeedLightGrid, FSortedLightSetSceneInfo& SortedLightSet) { @@ -199,4 +205,11 @@ FComputeLightGridOutput FDeferredShadingSceneRenderer::GatherLightsAndComputeLig return Result; } -``` \ No newline at end of file +``` + +- GatherAndSortLights:收集与排序当前场景中所有的可见光源(当前View)。 +- ComputeLightGrid:是在锥体空间(frustum space)裁剪局部光源和反射探针到3D格子中,构建每个视图相关的光源列表和格子。 + +# RenderLights() -> RenderLight() + +## InternalRenderLight() diff --git a/03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md b/03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md index 8ac14bb..3aa2c8e 100644 --- a/03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md +++ b/03-UnrealEngine/卡通渲染相关资料/卡通渲染开发总览.md @@ -99,6 +99,7 @@ rating: ⭐⭐⭐ 8. [ ] TODO:确认VR中的运行结果是否正确? 9. [ ] TODO:Nanite模型支持。 10. [ ] TODO:另一种思路定点内扩+Stencil的方式渲染内描边? + 11. [ ] TODO:顶点法线工具开发 https://tajourney.games/7689/ 4. [ ] TODO:RayTacing描边方法。 7. [ ] ToonLighting 1. [ ] Cel diff --git a/06-DCC/游戏资产提取/尝试截取原神帧 renderdoc.md b/06-DCC/游戏资产提取/尝试截取原神帧 renderdoc.md new file mode 100644 index 0000000..f408558 --- /dev/null +++ b/06-DCC/游戏资产提取/尝试截取原神帧 renderdoc.md @@ -0,0 +1,7 @@ +# 前言 +- https://tajourney.games/7872/ +- Renderdoc: https://github.com/baldurk/renderdoc + +采用本地编译Renderdoc尝试。 + +**Renderdoc注入的原理是拦截应用程序对图形 API 的调用来捕获帧,在应用程序调用图形 API 函数,插入自己的代码,这一过程就是hook,所以本地修改的关键就是修改hook相关函数,编译自己的注入器。** \ No newline at end of file