文章列表

UE里默认不支持多Pass,项目里一般都会需要这个功能。 记录一下一种实现思路。 效果视频: StaticMesh多Pass实现主要是两个方面,一个是材质管理,另一个是把多Pass加入渲染流程中。 材质管理首先需要在UStaticMesh和UStaticMeshComponent里新增多Pass材质。 UStaticMesh是用资产编辑器打开的窗口,最里层的材质设置。 UStaticMeshComponent是SM要渲染的必要组件,可以设置材质进行覆盖UStaticMesh里的材质。(常见里摆放或者蓝图里) 多Pass的结构定义,材质Index以及是否投阴影。 123456789101112...

大佬们的文章链接参考: https://zhuanlan.zhihu.com/p/666213716 https://zhuanlan.zhihu.com/p/100748588 UE的DeferredDecalUE的延迟贴花有两种版本,一种是使用DBuffer,还有一种不使用DBuffer。 不使用DBuffer的情况 首先有一个BOX来划定范围,投射方向。 过程中画两次这个BOX。 第一次,关闭Cull,画Stencil: 第二次,CullBack,模板测试等于: BOX的范围内,深度图转换为WorldPos,然后再转换到BOX空间。 使用BOX内的空间坐标采样Decal图,然后加到G...

这篇记一下ShadowMap阴影的技术。 1.ShadowMap相关ShadowMap的原理从Light的方向渲染场景的深度图,因为具有遮挡关系,所以能做阴影用。https://zhuanlan.zhihu.com/p/384446688 阴影投影的过程需要投影的物体的转换过程,从Light方向画这些物体的深度: World空间—— ——>Light空间 先位移,再旋转 ——>Light视锥体 (XY范围缩放,Z深度缩放)...

已经在UE4.27 添加了 有两种, 一种是蓝图调用的GlobalShader Draw调用。 另一种是渲染线程过程中加了一步,可以做个类似后处理的那种。 记录第一种蓝图调用的这种,需要的所有东西: 1.C++的Shader结构Shader的声明,对应usf里的文件和方法,shader本身的参数定义 123456789101112131415161718192021222324252627282930313233343536373839404142//--------------VertexShader-------------------class FLoyGlobalShaderVS :...

1.什么是PSO?PSO(Pipeline State Object)是现代图形API(DX12、Vulkan、Metal)提出的新概念,以前的API设置VS、Rasterizer、PS、BlendState这些状态时,需要一个一个调用设置,PSO可以理解就是把这些状态封装为一个Object,一次调用SetPipelineState的API即可。 2.为什么需要Cache PSO?游戏在运行过程中,根据底层API,会有需要创建新的PSO对象的时候,这个创建的过程比较耗时,会导致卡顿。PSO...

1.UE的DistanceField

距离场的生成,有MeshDistanceField和GlobalDistanceField

UE的主要应用是DFShadow、DFAO、材质DistanceFieldToNearest

https://dev.epicgames.com/documentation/en-us/unreal-engine/mesh-distance-fields-in-unreal-engine

连接到PS5之后,可以通过Razor GPU For PS5,截帧分析每个DrawCall的具体消耗。 1.打开RazorGPUForPS5,点击Capture——GPU Capture截帧这个工具截出来没有RenderDoc那样对Pass做分类,所以需要上下判断一下当前是哪个阶段(PrePass、BasePass等) !!!!在截帧之前执行一下命令行profilegpu再截帧,就可以看到Pass分类了!!! 2.点击Capture——ConnectReplay如果不连接Replay就无法像RenderDoc那样看到当前RT绘制了什么,只能看到RT的最终结果 3.点击Capture——GPU...

虚幻自定义MeshPass在此总结一下。 基于UE5.1 Github版本 UE5 AddOutlinePass https://zhuanlan.zhihu.com/p/597864516 UE4 AddOutlinePass...