【UE5】灯光强度与输出颜色的关系,InverseExposure

您所在的位置:网站首页 ens怎么打灯 【UE5】灯光强度与输出颜色的关系,InverseExposure

【UE5】灯光强度与输出颜色的关系,InverseExposure

2023-04-14 06:44| 来源: 网络整理| 查看: 265

前言:因为看了日天大佬的物理灯光,觉得有必要从真实执行逻辑上把整个引擎PBR中灯光对呈现颜色影响有一个记录和梳理。

带佬文章の传送门:

UE4中使用非物理的物理灯光-3 - 知乎 (zhihu.com)

游戏打光很重要,特别是大世界游戏打光为了保持整体质量的高效和统一,最好给项目规范灯光使用和强度。

比较大世界和普通小关卡游戏最大的不同就是内容量大,不能为了改一个画面亮度明暗而改变一些根本的(之前美术为了亮一点直接提高basecolor,拉金属度,或者改后处理,着实让我 )

所以我们需要看几种光的Intensity是具体怎么计算到屏幕像素数值的。

1.怎么描述灯光强度

我们灯光强度有不同的单位,基本上可以分为Lux,cd,lm。

日天大佬有篇很形象的奥特曼解释:虚幻4物理灯光问题总结 - 知乎 (zhihu.com)

简单来说,cd是我们描述光每一帧发射的总能量。

然后lm是我们实际发射出去的,有角度限制的能量。

Lux是我们实际到达物体上的能量。(还未反射,因为反射后部分,正是我们进行BRDF灯计算的结果)

所以这样我们才能在聚光灯spotlight下真正的描绘intensity。

具体每种灯光的计算方法YivanLee大佬也有文章给出了:虚幻五渲染编程(Graphic篇)【第十四卷:Light Energy and pixel brightness】 - 知乎 (zhihu.com)

2.shader计算到像素上的过程

shader计算里,light只有一个LightColor,没有intensity,因为在每个Ulight中已经乘进去了,等到lightproxy中,我们拿到的color已经不是颜色,可以理解为能量了。

我们可以打开引擎LightGridInjection里看到light参数怎么传入shader里。

这里是我们想要看到的部分,遍历灯光,裁剪,一个一个pass传入进lightpass里。

往下看发现没有Intensity,然后我们可以找到所有的LightParameters.Color

这个和反射计算相关先忽略。

在Color乘进去一些东西,首先是LightFade:

这里计算的貌似是光源和我们的距离衰减(假如是Directional平行光就没有衰减)

然后是LightExposureScale(Expose)

首先我们可以往上翻到

然后看具体LightExposureScale

我们能看到eyeadaptationinverseLookup相关注释,还有一个叫InverseExposureblend的参数

我们可以在light component里找到

请教群大佬之后,得到一个词“相对曝光灯”。

相对曝光灯, Inverse Exposure

通过这个函数的计算和注释我们可以得知这是在计算反向自动曝光,所以我们可以得知这是为了让一些灯能保持在不同曝光下相对的亮度。

可能有些人觉得完全没有必要,然而对一些灯光,一些指示灯我们希望在昼夜变化(整体EV值会变化)的时候这个灯能保持一个相对固定的亮度对比度,所以这个东西应该是干这个用的。

经过测试如果我们调高InverseExposureBlend会出现如下情况:

EV100 = 0

EV100 = 4.0

EV100 = 4.0, Inverse Exposure Blend = 1.0

我们可以看到不同的曝光下,亮度能保持在一定程度上的稳定。(第一张图可以当作是白天,第二张图当作是晚上)

偏了,我们继续,反正这个函数GetLightExposureScale对于一般的灯数值为1,不产生影响。

之后我们会进行一系列计算到Postprocessing tonemap pass里

PostProcessTonemap.usf里找到

在tonemap之前,我们进行了曝光补偿。

那么具体曝光补偿怎么算的呢(和EV100的关系?),让我先休息,之后补充我的记录



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3