UE4 LightRendering

Posted xoyojank

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4 LightRendering相关的知识,希望对你有一定的参考价值。

最近把HairWorks整合到了UE4 4.20, 整合的过程中发现了一些没法直接merge的代码, 主要集中在LightRendering.cpp和DeferredLightingPixelShader.usf中. 所以顺便简单读了一下代码, 把其中的一些关键字概念整理出来方便查阅理解.

Uniform Buffer Struct


UE4使用了一些宏来辅助定义UniformBuffer中的结构体, 在Shader中是可以打到对应的定义的.

Simple Light

不如叫Particle Light, 粒子系统中发射的简单点光源. 因为数量很多, 所以算法做了简化, 没有阴影之类的效果

Light Function

Light Function在我看来更像是一个可以用材质节点控制的Shadow Mask, 改变光照区域的强度, 不能叠加颜色.

Stenciling Geometry

有三种:

  • Sphere: 点光源, 面积光
  • Vector Sphere: 好像是做BoundSphere的?
  • Cone: 聚光灯

DBT (Depth Bound Test)

用来剔除挡住的光源的

Radial Light

点光源或聚光灯都是Radial Light, 方向光就不是, 做选择题时字面意思很好理解, 但是第一眼看到时就很蒙.

IES Profile

IES Light Profiles, 参考现实中照明设备的标准的一个亮度曲线算法, 跟强度用流明一个套路

Lighting Channel

Forward Rendering时代美术惯用的技俩, UE4一开始用了Deferred Rendering没加的, 估计架不住用户习惯又加回来了, 见Lighting Channels

Transmission

SSS相关

LTC(Linearly Transformed Cosines)

Rect Light用的
参考[ Heitz et al. 2016, “Real-Time Polygonal-Light Shading with Linearly Transformed Cosines

Direct Lighting

渲染simple light时用的tiled deferred lighting, 估计粒子点光太多了架不住.
其它光源就是延迟渲染的标准做法了.

Indirect Lighting

这里有两个关键名词, 实时GI估计大家都是这么搞的吧:

Shadowed Lights

其实就是开了阴影的光源

以上是关于UE4 LightRendering的主要内容,如果未能解决你的问题,请参考以下文章

Unity Shader:白平衡

OpenGL从定向/点转换为聚光灯

C++ Opengl - 使用聚光灯照明

一步步学OpenGL(21) -《聚光灯光源》

使聚光灯静止

OpenGL + GLUT 聚光灯