SRFC模拟赛车网

 找回密码
 注册
SRFC模拟赛车世界 是 SRFC模拟赛车网 旗下网站
搜索
热搜: 活动 交友 discuz
查看: 384|回复: 1
收起左侧

【LFS后续版本】5月没有更新进度报告:天空、实时光照、HDR

[复制链接]

136

主题

1913

帖子

5

精华

版主

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

注册时间:2005-7-11
积分
4420

LFS初级驾照工作组勋章新手车间勋章

 楼主| 发表于 2019-6-2 11:18:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 peter930302 于 2019-6-2 11:37 编辑

小伙伴们好,我认为我们没法每个月都做出一份进度报告来,非常抱歉。

在我这里,我一直在光照上进行工作,并在维持赛道观感的同时忙碌于让真实生成的天空看起来更加正确。

我已经查找了很多材料的漫反射系数,在逐渐转向更加基于物理的系统时,调整亮度以使光照正确。

我一直在尝试使用高动态范围(HDR)渲染目标(作为选项)。这涉及将图像渲染为纹理,该纹理对于像素的每个颜色通道使用16位浮点数而不是标准的8位伽马校正整数。这对于照明具有各种优点并且可以产生更逼真的图像。我一直在尝试一些色调映射功能,可以在最终的后处理阶段应用,其中HDR渲染目标是输出为8位格式以便在屏幕上显示。

我还有更多的事情要做,但是现在不是讨论的时候。

Scawan




附:DirectX 9.0C 时代的HDR简易简介


默认情况下,亮度和颜色值在存储到帧缓冲区时会被限制在0.0和1.0之间。这句看起来没什么错误的语句会使我们一直将亮度与颜色的值设置在这个范围内,试图使它们适合场景。这样的限制,也能给出还不错的效果。但是如果我们在这么一个特定的区域中,有多个光源使得最终颜色值的总和超过了1.0,又会发生什么呢?答案是这些片段中超过1.0的亮度或者颜色值会被约束在1.0,从而导致场景混成一片,难以分辨:(亮度值brightness指的是光源的颜色值,颜色值color指的是模型的颜色值)

20170120141312594.png

由于大量片段的颜色值都非常接近1.0,有很大一个区域中每一个片段都有相同的白色值,从而导致很多的细节损失,使场景看起来非常假。

解决这个问题的一个方案是减小光源的强度从而保证场景内没有一个片段亮于1.0。然而这并不是一个好的方案,因为需要你去使用不真实的光照参数。一个更好的方案是让颜色暂时超过1.0,在最后一步中再去将其转换至0.0到1.0的区间内,可以避免细节损失的情况。

显示器被限制为只能显示值为0.0到1.0间的颜色,但是在光照方程(lighting equation)中却没有这个限制。通过使片段的颜色能够超过1.0,我们有更高范围的颜色值可用于称为HDR(High Dynamic Range, 高动态范围)。有了HDR,亮的东西可以变得非常亮,暗的东西可以变得非常暗,而且不会丢失细节。

HDR最初仅用于摄影上,摄影师对同一个场景拍摄具有不同曝光等级的多张照片,捕捉大范围的色彩值。这些图片会被合成为HDR图片,从而综合不同的曝光等级使得大范围的细节可见。看下面这个例子,左边这张图片在被光照亮的区域充满细节,但是在黑暗的区域就什么都看不见了;但是右边这张图的高曝光却可以让之前看不出来的黑暗区域显现出来。

20180815203102655.png

这与我们眼睛工作的原理非常相似,也是HDR渲染的基础。当光线很弱的时候,人眼会自动调整从而使过暗和过亮的部分变得更清晰,就像人眼有一个能自动根据场景亮度调整的自动曝光滑块。

HDR渲染与人眼工作原理很相似,我们允许用更大范围的颜色值渲染从而获取大范围的黑暗与明亮的场景细节,最后将所有HDR值转换成在[0.0, 1.0]范围的LDR(Low Dynamic Range,低动态范围)。转换HDR值到LDR值得过程叫做色调映射(Tone Mapping),现在有很多的色调映射算法,这些算法致力于在转换过程中保留尽可能多的HDR细节。这些色调映射算法经常会包含曝光参数,该参数可选择性倾向黑暗或明亮区域。

在实时渲染中,HDR不仅允许我们超过LDR的范围[0.0, 1.0]与保留更多的细节,同时还让我们能够根据光源的真实强度指定它的强度。同时还让我们能够根据光源的真实强度指定它的强度。比如太阳比闪光灯之类的东西有更高的强度,那么我们为什么不这样设置呢?(比如说设置一个10.0的亮度值) 这允许我们用更现实的光照参数恰当地配置一个场景的光照,而这在LDR渲染中是不能实现的,因为他们会被上限约束在1.0。(之前的光照算法中,什么光源最强亮度也是设置为1.0,但是现实世界中不同光源之间的亮度是有差别的,因此在HDR渲染中,我们可以根据实际的情况去设置光源的强度值,而不用去理会[0,1]范围的限制。)

因为显示器只能显示在0.0到1.0范围之内的颜色,我们肯定要做一些转换,从而使得当前的HDR颜色值符合显示器的范围。简单地取平均值重新转换这些颜色值并不能很好的解决这个问题,因为明亮的地方会显得更加显著。我们能做的是用一个不同的方程与/或曲线来转换这些HDR值到LDR值,从而使我们能够控制场景中的亮度,这就是之前说的色调变换(Tone mapping),也是HDR渲染的最终步骤。

1.png

12

主题

699

帖子

0

精华

银牌会员

Shoegazer made me

Rank: 4Rank: 4Rank: 4Rank: 4

注册时间:2008-3-24
积分
1340

LFS初级驾照

QQ
发表于 2019-6-20 17:07:02 | 显示全部楼层
翻译辛苦了!期待下次更新报告!
SAGA电竞车队视频站:https://space.bilibili.com/441064770

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|SRFC模拟赛车网  

GMT+8, 2019-8-25 05:18 , Processed in 1.177079 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表