UE5-自定义ShadingModel
虚幻自定义ShadingModel在此总结一下。
基于UE5.1 Github版本

什么是ShadingModel?
在UE的材质编辑器里,材质有ShadingModel可以选择,基本上有Unlit、DefalutLit、Subsurface、ClearCoat、Hair等可以选择。
在BasePass画GBuffer的时候,会把像素的ShadingModelID记到GBuffer里。
在后续光照的时候,ShadingModels.ush的IntegrateBxDF(),根据不同的ShadingModel,得出不一样的FDirectLighting BRDF结果。
UE5-自定义MeshComponent
虚幻自定义MeshComponent在此总结一下。
基于UE5.1 Github版本
1.几个比较重要的概念
UPrimitiveComponent
1 | class ENGINE_API UPrimitiveComponent : public USceneComponent, public INavRelevantInterface, public IInterface_AsyncCompilation |
UPrimitiveComponent继承于USceneComponent,所以具有Transform属性和父子嵌套的能力。
UPrimitiveComponent是一切几何组件的父类,比如UE自带的ShapeComponent、StaticMeshComponent、SkeletalMeshComponent等组件追溯上去都是继承UPrimitiveComponent。
UPrimitiveComponent相关内容在渲染线程里非常常见。
UE4-关于植被HISM屏占比LOD的选择和切换
UE4-HISM剔除更新DFShadow
Unity-游戏渲染性能优化
Unity项目的优化思路和实践经验在此总结一下。
1.性能检测
要优化首先需要分析现有的性能瓶颈,获取性能数据,根据情况决定优化什么,如何优化。
性能分析的工具和方法:
-检测工具:Profiler、SnapdragonProfiler、IntelGPA、XCode
检测工具帮助我们实时分析游戏运行时候的资源,CPU、内存、GPU等使用情况,来定位当前项目的瓶颈和优化点。
//todo shader复杂度计算
-抓帧工具:FrameDebug、SnapdragonProfiler、RenderDoc、IntelGPA、XCode
这类工具的作用主要是分析GPU渲染的过程,分析DrawCall是否正常、绘制是否多余、RT是否冗余等问题。
值得一提的是,有些抓帧工具是可以统计每个DC的GPU耗时的,有时候对于性能分析有较大的参考意义,但个人实践过程中感觉RenderDoc的不准确,SnapdragonProfiler的还可以。
SnapdragonProfiler耗时的计算方法为:
DrawCall耗时 = DrawCall耗费的GPUBlocks数量 * GPU频率
//todo 贴一些实例图片
Unity-URP代码架构
本文对URP使用的这段时间的一些理解和总结。从知乎转移:URP管线架构学习总结
1.URP渲染管线的架构图
理解一个系统设计比较重要的就是类图了。

2.各个类的一些作用和使用
(1)UniversalRenderPipelineAsset
本质是一个ScriptableObject类型,用于序列化URP的一些设置,General、Quality、Lights、Shadows等。