在传统渲染中,通常使用辐射度单位进行所有计算,无论是作为全光谱渲染还是按分量计算(XYZ,RGB等)。

然而,随着现代渲染在物理上的增加,基于模型,艺术家可以方便地以更熟悉的光度单位指定值,例如流明的强度。



为了将管线全部保留在一种类型的单元中,可以执行以下操作之一:


利用发光效率将光度单位转换为辐射度单位

将整个渲染管线保持在光度单位中


塞巴斯蒂安·拉加德(SébastianLagarde)在他的课程笔记中很好地表达了这个想法Siggraph 2014演示文稿将冻伤转移到PBR




我的问题是:


仅以光度单位进行渲染?


据我所知,光度单位只是偏向人眼的辐射度单位。考虑到我们将用眼睛观看最终图像,所以我认为这不是问题。


Frostbite是RGB组件明智的引擎。通过仅以光度单位进行渲染,光谱渲染器还会有其他缺点吗?


#1 楼

可以将光度单位用作设置光亮度的整体比例。但是,您应该注意一些技术上的技巧。我将引用我去年在该主题上写的一篇博客文章中的话:

对于RGB图像,重要的是要认识到我们的显示设备在辐射测量方面要比在光度测量方面表现更好。红色像素值255和绿色像素值255都会导致屏幕上的像素产生的辐射通量(瓦)大致相等,而不是光通量。同样,数码相机捕获的像素值对应于辐射通量,而不是光通量。
这就是为什么我们需要在将图像转换为灰度或计算像素亮度时使用亮度系数来获得可感知的像素准确的结果;并且这也意味着渲染RGB图像在辐射度单位中比在光度单位中更自然地进行。

换句话说,光度单位的波长依赖性与您所期望的不同。在普通的RGB颜色空间中,白色为(1、1、1),并且具有大致平坦的辐射光谱;但在所谓的“光度RGB”中,(1、1、1)不会是白色;这将是一种紫色,绿色范围内的能量较少,红色和蓝色范围内的能量更多。一个类似的问题会困扰光谱渲染器,它们试图以依赖于波长的光度单位来测量其所有仓,但是更糟糕的是,生成给定亮度所需的辐射会朝可见光谱的两端发散,在此处人类的发光效率函数变为零。
因此,如果您希望使用光度单位,则IMO最好“作弊”,不要使用与波长相关的真正光度单位,而应使用某些固定波长(例如555 nm绿色,这是人体发光的峰值)效率函数)或频谱上的平均值作为参考单位,然后将该单个单位应用于所有波长。从其他来源导入RGB颜色和光谱以及将其生成为输出时,这将使您的麻烦减少。