ue4渲染
文章平均质量分 94
ZJU_fish1996
这个作者很懒,什么都没留下…
展开
-
[ue4] 着色器绑定(Shader Binding)
当我们在ue4中制作了一个美术材质之后,引擎本身会为我们做很多事情,它会把结点翻译为hlsl,生成多个shader变体,并在多个mesh pass中去选择性的调用所需的shader,其中一个重要的过程就是获取shader绑定的数据。本文将主要讨论ue4是如何处理来自材质的不同的输入,它们将以怎样的形式传递给shader,以怎样的频率更新,并在调用层做了怎样的优化处理。原创 2023-02-12 19:39:29 · 1730 阅读 · 0 评论 -
[ue4] Niagara的Indirect Draw
Indirect Draw Buffer 调用Indirect draw接口时,需要构造一个固定的InDirectArg缓冲区。这个缓冲区有五位数据,是由图形API定义的必须填充的结构。 可以参考DirectX中间接参数缓冲结构的定义: Indirect Draw Arg的填充通过计算着色器完成,相关的逻辑位于NiagaraDrawIndirectArgsGen.usf。RWDrawIndirectArgs[ArgOffset + 0] ...原创 2021-12-27 19:40:00 · 9395 阅读 · 1 评论 -
[图形学] Real Shading in Unreal Engine 4
图1 UE4 Infiltrator demo简介 大约一年前,我们决定投入一些时间来改进我们的着色模型,并采样更加基于物理的材质工作流程。这是由于我们想要渲染更加真实的图像,但同时我们也对更加物理化的材质创建方法和材质分层的使用可实现的目标感兴趣。美术认为这将是对工作流程和质量的巨大改进,Epic的一位技术美术尝试在着色器中使用分层,结果是很有希望,这成...翻译 2021-05-30 11:51:29 · 663 阅读 · 0 评论 -
[ue4] 级联阴影CSM
本文主要讨论ue4中,CSM阴影深度图渲染流程以及一些细节实现,不包括阴影绘制的流程。 灯光初始化数据 计算Cascade外接包围球 计算精确阴影凸包 计算阴影灯光视图空间矩阵 计算阴影灯光裁剪空间矩阵 计算接收和投影阴影的视锥体 降采样相机平滑处理 阴影图元的收集 阴影深度的绘制 阴影数据初始化的整体入口为:InitDynamicShadows,包含了所有类型阴影的数据准备和初始化,在In...原创 2021-05-05 00:44:33 · 9967 阅读 · 2 评论 -
[ue4] 材质和Shader变体(Shader Permutation)
材质种类 ue4中的材质主要有两个类型,一种是与mesh相关的,比如物体的表面材质;另一种是mesh无关的,比如后处理材质。材质与Shader的关系 材质属于美术资产,ue4底层会将材质节点翻译成HLSL代码,并根据模板HLSL代码和相关宏编译成最终的Shader Code。 对于mesh无关的材质而言,通常只对应着一个Shader。 对于mesh相关的材质而言,则可能会生成非常多的Shader Code,我们称之为Shader变体...原创 2021-01-08 20:36:20 · 9605 阅读 · 1 评论 -
[ue4] 几何体绘制管线
几何体绘制管线,通俗来说,就是通知GPU绘制物体信息的一套完整流程;ue4封装了一套较为复杂的框架来维护整个流程,本文将对整个流程做一些简单的介绍。引入 ue4的大部分核心渲染代码入口都在FDeferredShadingSceneRenderer::Render(FRHICommandListImmediate& RHICmdList)这一函数中(以及对应的Mobile版本),在这里可以比较详细地看到整个渲染流程中先后做了哪些事情。其中,在渲染前期的时候,一个比...原创 2020-10-14 20:19:49 · 5135 阅读 · 0 评论 -
[ue4] HISM 大规模植被渲染解决方案
HISM,即HierarchicalInstancedStaticMesh,是ue4中针对类似植被这样大规模重复物件渲染提供的一种解决方案。本文仅作为HISM设计的导读,具体细节需参照源码的实现。daISM 在讨论HISM之前,我们先来看一下ISM,即InstancedStaticMesh。简单来说它就是ue4提供的实例化渲染,通过Instance,绘制n个相同的物体,原来需要n次drawcall,现在只需要一次就可以了(更多的细节可以猛戳这里)。 想...原创 2020-09-26 02:10:30 · 14180 阅读 · 0 评论