UE4 LightRendering

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

Uniform Buffer Struct

UE4 LightRendering_第1张图片
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估计大家都是这么搞的吧:

  • Reflective Shadow Maps
  • LPV(Light Propagation Volumes)

Shadowed Lights

其实就是开了阴影的光源

你可能感兴趣的:(引擎研究,UE4,Lighting,Rendering)