反照率和指针色域
- Albedo and Pointer's Gamut - Chris Brejon
- https://chrisbrejon.com/articles/albedo-and-pointers-gamut/
- This article is about a possible limit for diffuse reflectance values for PBR textures used for rendering.
介绍 Introduction
If you set your Base Color (or Diffuse Color) directly in ACEScg, it is important to be aware that there should be some limits in terms of saturation and luminance. One may ask : what would be a proper limit for the Diffuse Color ?
如果您直接在ACEScg中设置基础颜色(或漫反射颜色) ,请务必注意饱和度和亮度方面应该有一些限制。 有人可能会问:漫反射颜色的适当限制是多少?
Here is my personal answer : the Pointer’s gamut ! Before we go deep into its definition, let’s step back a bit and have a proper look at the albedo.
这是我的个人答案:指针 色域!在深入探讨其定义之前,让我们先回顾一下,好好看看反照率。
反照率定义 Albedo definitions
After reading Chapter 1 (about Color Management) and Chapter 1.5 (about ACES), you may ask yourself : where do I start ? How do I set correctly all these values ? Sometimes we struggle to balance correctly the look development of our assets between texturing, lighting or grading. For example, how strong should be our lights in a turntable ? Or how bright and saturated should our textures be ?
阅读完第 1 章(关于色彩管理)和第 1.5 章(关于 ACES)后,您可能会问自己:我从哪里开始? 如何正确设置所有这些值?有时我们很难在纹理、照明或分级之间正确平衡资产的外观开发。例如,转盘中的灯光应该有多强?或者我们的纹理应该有多亮和饱和?
I personally consider the albedo color to be a “stable” reference. Since albedo comes from “real life“, it is only natural to consider it as a proper way to balance our assets.
我个人认为反照率颜色是一个“稳定”的参考。 由于反照率来自“现实生活”,因此将其视为平衡我们资产的适当方式是理所当然的。
From the Substance PBR guide : The visible color of a surface is due to the wavelengths emitted by the light source. These wavelengths are absorbed by the object and reflected both specularly and diffusely. The remaining reflected wavelengths are what we see as color.
来自Substance PBR 指南:表面的可见颜色取决于光源发出的波长。这些波长被物体吸收,并以镜面反射和漫反射的形式反射。其余反射的波长就是我们所看到的颜色。
From Jeremy Selan : In a real scene, if you measure luminance values with a tool such as a spectroradiometer, one can observe a very wide range of values in a single scene. […] Very dark materials (such as charcoal) reflect a small fraction of incoming light, often in the 3-5% range. As a single number, this overall reflectivity is called “albedo”.
Jeremy Selan表示:在真实场景中,如果使用光谱辐射计等工具测量亮度值,则可以在单个场景中观察到非常广泛的值。[…] 非常暗的材料(例如木炭)会反射一小部分入射光,通常在 3-5% 范围内。作为一个单独的数字,这个整体反射率称为“反照率”。
反照率和反射 Albedo and reflections
We just got two great definitions from Substance and Jeremy Selan. And I think it is really worth it to pause a bit and think about what the albedo really is. Because there are so many misconceptions about it.
我们刚刚从Substance和Jeremy Selan 那里得到了两个很棒的定义。我认为值得我们停下来思考一下反照率到底是什么。因为人们对它有很多误解。
From Wikipedia : Surface albedo is defined as the ratio of radiosity to the irradiance (flux per unit area) received by a surface. […] albedo is the directional integration of reflectance over all solar angles in a given period.
摘自维基百科:表面反照率定义为辐射度与表面接收的辐照度(单位面积通量)之比。[…]反照率是给定时间段内所有太阳角度的反射率的定向积分。
Great article about this as well: Everything is shiny.
关于这一点也有很棒的文章:一切都是闪亮的。
What do all these definitions tell us ? That you get some specular/glossiness information embedded in the albedo value. That is very important.
所有这些定义告诉我们什么?您会获得嵌入在反照率值中的一些镜面/光泽度信息。 这非常重要。
Let’s take charcoal as an example. Charcoal not being a pure lambertian surface, you will get some “specular” reflection at grazing angles. For artistic control in CG, we generally split diffuse and specular reflections but in real life they are just really the same.
让我们以木炭为例。木炭不是纯朗伯表面,在掠射角处会出现一些 “镜面”反射。为了在 CG 中进行艺术控制,我们通常会将漫反射和镜面反射分开,但在现实生活中,它们实际上是一样的。
Great explanation by Thomas Mansencal.
托马斯·曼森卡尔(Thomas Mansencal)的解释很精彩。
漫反射颜色还是反照率 AOV? Diffuse Color or Albedo AOV ?
In real life albedo includes both diffuse reflection and specular reflection. That’s the first thing we need to clear out. But many render engines, like Guerilla Render, have simplified this process : the albedo AOV is simply the Diffuse Color (also called Base Color or Diffuse Reflection). Arnold, on the other hand, seems to have done the “real” thing :
在现实生活中,反照率包括漫反射和镜面反射。 这是我们需要澄清的第一件事。但许多渲染引擎,如*Guerilla Render,已经简化了这个过程:反照率 AOV 只是漫反射颜色(也称为基色或漫反射*)。另一方面, Arnold似乎做了“真实”的事情:
The fresnel in the diffuse_albedo is a result of theSpecular IOR and how it affects the albedo of the diffuse to make it energy efficient. So with no Specular, there would be no fresnel on the diffuse_albedo, as all the energy would be in the diffuse.
漫反射中的菲涅尔效应是镜面反射 IOR的结果,以及它如何影响漫反射的反射率以使其节能。因此,如果没有镜面反射,漫反射上就不会有菲涅尔效应,因为所有能量都会在漫反射中。
From the Arnold documentation.
来自Arnold 文档。
I found this last part particularly interesting. The misconception about the albedo I was talking earlier may come from these different behaviors. This is particularly critical for our next paragraph.
我觉得最后一部分特别有趣。我之前谈到的关于反照率的误解可能来自于这些不同的行为。这对于我们下一段来说尤其重要。
Now it is important to keep in mind that “ground truth” is somehow vague : albedo in the first place is a measure bound to solar irradiance which encompasses both the diffuse and specular components of the reflection when it is measured. Textures are pretty much never shot in direct sunlight. Ground truth would be more about spectrally measure not only the BTF (Bidirectional Texture Function) of the surface but also measure its Polarimetric Reflectance : a Spatially Varying Polarimetric BRDF (Bidirectional Reflectance Distribution Function). This will get an almost perfect representation of the surface but by doing so you’ll also loose all your artistic controls over it. Otherwise you can check the vrscans (the VRScans are non-spectral BTF) or Quixel Megascans.
现在,重要的是要记住“基本事实”在某种程度上是模糊的:反照率首先是与太阳辐照度相关的测量值,测量时包含反射的漫反射和镜面反射分量。纹理几乎从来不会在阳光直射下拍摄。基本事实更多地是关于光谱测量,不仅要测量表面的 BTF(双向纹理函数),还要测量其偏振反射率:空间变化的偏振 BRDF(双向反射分布函数)。这将获得几乎完美的表面表现,但这样做也会失去对它的所有艺术控制。否则,您可以检查 vrscans ( VRScans 是非光谱 BTF)或Quixel Megascans。
Thomas Mansencal is very much aware of albedo-related challenges.
托马斯·曼森卡尔 (Thomas Mansencal) 非常清楚与反照率相关的挑战。
反照率极限是多少? Which Albedo limit ?
If it was not clear enough, I clearly split the Color Selection in two categories :
如果还不够清楚的话,我把颜色选择清楚地分为两类:
- Lights and emissive surfaces -> Rec.2020 or ACEScg gamuts.
- 灯光和发射表面 -> Rec.2020或ACEScg色域。
- Albedo and specular colors of non-emissive surfaces -> Pointer’s gamut.
- 非发射表面的反照率和镜面反射颜色->指针的色域。
To have a saturated color, the spectral distribution must be narrow-band. The laser, i.e. a line, being the most saturated in the world. It’s the opposite of surfaces that are pretty smooth. So they cannot be extremely saturated by the very nature of their spectral distribution of reflection.
要获得饱和的颜色,光谱分布必须是窄带的 。 激光,即一条线,是世界上最饱和的。它与非常光滑的表面相反。因此,它们不能根据反射光谱分布的本质而极度饱和。
Another perfect explanation by Thomas Mansencal.
托马斯·曼森卡尔 (Thomas Mansencal) 的另一个完美解释。
Hence the two categories :
因此有两个类别:
- With a light source, the spectrum is very changing with spikes.
- 在光源的作用下,光谱会发生很大变化,并出现尖峰。
- With a natural or man made surface, the spectrum is very smooth.
- 无论是天然还是人造表面,光谱都非常平滑。
The problem you may face, however, is when you light a surface with a light narrow band. You find yourself in a situation where even if indeed your surface is smooth it reflects something narrow-band. So you can end up with a super saturated surface (it often happens in concert for example). And sometimes (often) it doesn’t go as we would like, e.g. blue highlights fix.
然而,当您用窄带光照亮表面时,您可能会遇到一个问题。您会发现自己处于这样一种情况:即使您的表面确实很光滑,它也会反射一些窄带光。因此,您最终会得到一个超饱和的表面(例如,这种情况经常同时发生)。有时(通常)它不会像我们希望的那样进行,例如蓝色 高光修复。
I just love Thomas’ concert example. So visual !
我就是喜欢托马斯的音乐会范例。太形象了!
Finally I had to ask him about fluorescence :
最后我不得不问他关于荧光的问题:
Fluorescence is actually considered emission. So it is not limited like a non-emissive surface would be. Fluorescence is simply a re-emission at a different wavelength. We even talk about Optical Brightener in laundry.
荧光实际上被认为是发射。因此它不像非发射表面那样受到限制。荧光只是不同波长的重新发射。 我们甚至谈论洗衣中的荧光增白剂。
I love when all the dots start to connect like this.
我喜欢所有的点都像这样开始连接起来。
现有解决方案 Existing solutions
Studios have provided different answers to this issue : how do we limit the albedo range to a PBR one ? Here is a couple of solutions I have seen :
工作室对这个问题给出了不同的答案:我们如何将反照率范围限制在 PBR 范围内? 以下是我见过的几个解决方案:
- A technical check scanning albedo textures and stopping the publish if some out-of-range values are found in them.
- 进行技术检查扫描反照率纹理,如果发现一些超出范围的值则停止发布。
- A soft clip limit directly in the shader to fit the range of any color input.
- 着色器中直接的软剪辑限制可以适应任何颜色输入的范围。
- A visual check of the Albedo AOV for out-of-range values (meaning the Albedo AOV is correctly set).
- 对 Albedo AOV 进行目视检查,确定其是否超出范围(即 Albedo AOV 是否设置正确)。
All these solutions are okay. Even if most of the time they only take in account the luminance of the maps. But what about saturation ? And this is where the Pointer’s Gamut comes handy !
所有这些解决方案都很好。即使大多数时候它们只考虑地图的亮度。但是饱和度呢?这就是Pointer's Gamut派上用场的地方!
Interestingly enough Thomas Mansencal made a plea for Colour Analysis tools… In 2014 !
有趣的是,Thomas Mansencal在 2014 年呼吁使用色彩分析工具!
I am only six years late.
我只晚了六年。
指针的色域 Pointer’s gamut
I have been wondering for a while if there was any study on the Diffuse Color/Reflection and saturation. Until I found out about the Pointer’s Gamut. Most of my data comes from this great article.
我一直想知道是否有关于漫反射颜色/反射和饱和度的研究。直到我发现了指针的色域。 我的大部分数据都来自这篇很棒的文章。
First of all, a very basic question that has bothered many people. Why is it called Pointer‘s ? It is actually very simple ! In 1980, a scientist named Michael Pointer took over 4000 references to study their colors and came with a Gamut named after him.
首先,一个非常基本的问题困扰了很多人。为什么叫Pointer色域?其实很简单!1980 年,一位名叫 Michael Pointer 的科学家查阅了 4000 多份参考资料,研究了它们的色彩,并得出了一个以他的名字命名的色域。
The Pointer’s gamut is (an approximation of) the gamut of real surface colors as can be seen by the human eye, based on the research by Michael R. Pointer (1980). […] What this means is that every color that can be reflected by the surface of an object of any material is inside the Pointer’s gamut.
Pointer 色域是人眼可见的真实表面颜色的色域(近似值),基于 Michael R. Pointer (1980) 的研究。[…]这意味着任何材质的物体表面可以反射的每种颜色都在 Pointer 色域内。
This totally sounds like a legit solution. But to what should we compare the Pointer’s Gamut ? The answer is given to us in the same article (just read it) :
这听起来完全是一个合理的解决方案。但我们应该将*Pointer 的 Gamut与什么进行比较?*同一篇文章中给出了答案(只需阅读):
Pointer’s gamut is defined for diffuse reflection (matte surface). As opposed to diffuse reflection there is specular reflection, or mirror like reflection. By specular reflection objectscanreflect colors that are outside the Pointer’s gamut.
Pointer 的色域是针对漫反射(无光泽表面)定义的。 与漫反射相反,还有镜面反射,或类似镜子的反射。通过镜面反射,物体可以反射 Pointer 色域之外的颜色。
It could not be any clearer. Really.
这真是再清楚不过了。
The Pointer’s Gamut is a study done for Kodak originally and the list of the 4089 samples used is not available. However, you may find the dataset on the RIT website.
Pointer 色域最初是为 Kodak 进行的一项研究,所使用的 4089 个样本的列表不可用。但是,您可以在RIT 网站上找到数据集。
基于 Pointer's Gamut 的技术检查 A technical check based on Pointer’s Gamut
We could definitely think about developing an application allowing us to compare our base color textures to the Pointer’s Gamut. A few studios have already developed some solutions internally and an open-source software would be more than welcome for the community.
我们绝对可以考虑开发一款应用程序,让我们能够将基础颜色纹理与 Pointer 的色域进行比较。一些工作室已经在内部开发了一些解决方案,开源软件将受到社区的热烈欢迎。
A few recommendations about this Pointer’s Gamutcheck :
关于此指针色域检查的一些建议:
- What is important is to prevent the majority of cases.
- 重要的是预防大多数病例的发生。
- The Pointer Gamut is not exhaustive, it does not represent all the possible reflectances.
- 指针色域并不详尽,它并不代表所有可能的反射率。
- Pointer did not measure all actual surfaces. He has a quite large representative sample.
- Pointer 并未测量所有实际表面。他有一个相当大的代表性样本。
- We have to apply all of this wisely and filter 98% of problematic cases.
- 我们必须明智地运用所有这些并过滤掉 98% 的问题案例。
- It shouldn’t become a brake on creativity, on the contrary it should help it.
- 它不应该成为创造力的阻碍,相反,它应该促进创造力。
- The system is not made to stop people from doing their job, but to help them do it better and faster.
- 这个系统并不是为了阻止人们做他们的工作,而是为了帮助他们更好、更快地完成工作。
MrLixm managed to develop a free app checking if your textures are within the Pointer’s Gamut or not.
MrLixm 成功开发了一款免费应用程序,用于检查您的纹理是否在 Pointer 的色域范围内。
Congrats Liam !
恭喜 Liam!
指针的色域示例值 Pointer’s Gamut example values
I’ll share here a few values here so you get a rough idea if they’re inside the Pointer’s Gamut or not. But let’s not be too dogmatic neither, since everything is “wrong” in digital RGB scene rendering…
我将在这里分享一些值,以便您大致了解它们是否在指针色域内。但我们也不要太武断,因为数字 RGB 场景渲染中的一切都是“错误的”……
| Colorspace | Outside Pointer’s Gamut | Inside Pointer’s Gamut | Comments |
|---|---|---|---|
| Linear – sRGB | (1, 0, 0) | (0.9, 0.03, 0.03) – (0.9042, 0.0278, 0.0098) | This reminds me of the values used inmy coke can render. Cool ! |
| Linear – sRGB | (0, 1, 0) | (0.03, 0.5, 0.03) – (0.4618, 0.8201, 0.4270) | The sRGB green primary is “corrected” to enter PG. |
| Linear – sRGB | (0, 0, 1) | (0, 0.06, 0.6) – (0.0641, 0.0225, 0.5637) | The sRGB blue primary is “corrected” to enter PG. |
| Linear – sRGB | (0, 0, 0.6) | (0.05, 0.05, 0.6) | |
| Linear – sRGB | (0, 0, 0) | (0.0191, 0.0186, 0.0229) | It almost matches thecharcoalreference (see chart below). Sweet ! |
| Linear – sRGB | (1, 1, 1) | (0.7624, 0.7645, 0.7494) | It almost matches thefresh snowreference (see chart below). Awesome ! |
| ACEScg | (1, 0, 0) | (0.6552, 0.1353, 0.0494) | Do not forget that ACEScg primaries are outside of the Spectral Locus ! |
| ACEScg | (0, 1, 0) | (0.4985, 0.7630, 0.4471) | Do not forget that ACEScg primaries are outside of the Spectral Locus ! |
| ACEScg | (0, 0, 1) | (0.0527, 0.0246, 0.4228) | Do not forget that ACEScg primaries are outside of the Spectral Locus ! |
| ACEScg | (1, 1, 0) | (0.8473, 0.7838, 0.0741) | |
| ACEScg | (0, 1, 1) | (0.5891, 0.7720, 0.8745) | |
| ACEScg | (1,0,1) | (0.5827, 0.1991, 0.6153) |
| 色彩空间 | 指针色域之外 | 在 Pointer 的色域内 | 评论 |
|---|---|---|---|
| 线性 – sRGB | (1,0,0) | (0.9, 0.03, 0.03) – (0.9042, 0.0278, 0.0098) | 这让我想起了我在可乐罐渲染中使用的值。太酷了! |
| 线性 – sRGB | (0,1,0) | (0.03, 0.5, 0.03) – (0.4618, 0.8201, 0.4270) | sRGB 绿原色被“校正”以进入 PG。 |
| 线性 – sRGB | (0,0,1) | (0, 0.06, 0.6) – (0.0641, 0.0225, 0.5637) | sRGB 蓝原色被“校正”以进入 PG。 |
| 线性 – sRGB | (0, 0, 0.6) | (0.05, 0.05, 0.6) | |
| 线性 – sRGB | (0,0,0) | (0.0191、0.0186、0.0229) | 它几乎与木炭 参考相匹配(见下表)。太棒了! |
| 线性 – sRGB | (1,1,1) | (0.7624、0.7645、0.7494) | 它几乎与新雪 参考值相符(见下表)。太棒了! |
| 血管紧张素转换酶 | (1,0,0) | (0.6552、0.1353、0.0494) | 不要忘记 ACEScg 主星位于光谱轨迹之外! |
| 血管紧张素转换酶 | (0,1,0) | (0.4985,0.7630,0.4471) | 不要忘记 ACEScg 主星位于光谱轨迹之外! |
| 血管紧张素转换酶 | (0,0,1) | (0.0527, 0.0246, 0.4228) | 不要忘记 ACEScg 主星位于光谱轨迹之外! |
| 血管紧张素转换酶 | (1,1,0) | (0.8473、0.7838、0.0741) | |
| 血管紧张素转换酶 | (0,1,1) | (0.5891、0.7720、0.8745) | |
| 血管紧张素转换酶 | (1,0,1) | (0.5827、0.1991、0.6153) |
反照率图及其限制 Albedo charts and their limits
We now have a clear target for our Diffuse Reflection. We may translate this into a technical check or even an albedo chart.
现在,我们对漫反射有了明确的目标。我们可以将其转化为技术检查,甚至是反照率图表。
There are some interesting albedo charts out there even from different render engines, like Unity and Unreal. Since these values have been obtained from real-world measured values, they are pretty good guidelines. It is also interesting to notice that charcoal and snow are generally the “extreme” examples in most albedo charts.
甚至不同的渲染引擎(如Unity和Unreal)也提供了一些有趣的反照率 图表 。由于这些值是从现实世界的测量值中获得的,因此它们可以作为很好的指导。值得注意的是,木炭和雪通常是大多数反照率图表中的“极端”示例。
It seems to me that nobody has worked on them like Sebastien Lagarde from Unity. In 2013, Sebastien was already talking about their use and their limits.
我觉得没有人像Unity的Sebastien Lagarde那样研究过它们。2013 年,Sebastien 就已经开始谈论它们的用途和局限性了。
I sometimes see shaders with the 0 value in albedo. I agree that the 0 value can be an optimization since there is no value nor bsdf to evaluate. But keep in mind that the 0 value would likely stop the light path in a RGB render engine.
我有时会看到着色器的反照率为 0。我同意 0 值可以是一种优化,因为没有值也没有 bsdf 可以评估。但请记住,0 值可能会停止 RGB 渲染引擎中的光路。
CG 反照率图表 CG Albedo charts
My process to generate these charts was pretty simple. I merged one chart posted on ACEScentral, one from Sebastien Lagarde and the macbeth color checker into one. Since most of these charts have sRGB values between 0 and 255, I used this converter to normalize them. I also had to dig a bit to find the macbeth values in sRGB.
我生成这些图表的过程非常简单。我将ACEScentral 上发布的一张图表、Sebastien Lagarde 的一张图表和macbeth 色彩检查器合并为一张。由于大多数图表的 sRGB 值都在 0 到 255 之间,因此我使用此转换器对它们进行标准化。我还必须进行一些挖掘才能在 sRGB 中找到 macbeth 值。
This whole process, similar to the asset conversion shown here, can be simplified by importing the charts into Nuke and directly pick the values in the viewer.
整个过程与此处显示的资产转换类似,可以通过将图表导入 Nuke 并直接在查看器中选择值来简化。
There are now two charts : one with ACEScg values and one with Linear – sRGB values. The luminance values comes from Nuke’s viewer. I have ordered the albedo values by luminance as I thought it would be more convenient. The charts themselves have been written as png files with the following “colorspace” : “Utility – sRGB – Texture”.
现在有两个图表:一个包含ACEScg值,另一个包含Linear – sRGB值。亮度值来自 Nuke 的查看器。我已按亮度对反照率值进行排序,因为我认为这样更方便。图表本身已编写为 png 文件,具有以下“颜色空间”:“Utility – sRGB – Texture”。
You may want to use these values with “a pinch of salt”, since we don’t know exactly if they are strictly about diffuse reflectance or albedo. From the render tests I have been doing about charcoal, here are some more accurate values (which match the ones from Unreal Engine) :
您可能希望对这些值“持保留态度”,因为我们不知道它们是否严格地与漫反射或反照率有关。根据我对木炭进行的渲染测试,以下是一些更准确的值(与虚幻引擎中的值相匹配):
| Diffuse Reflectance | Specular Reflectance | Total Albedo | |
|---|---|---|---|
| Charcoal | ~0.02 | ~0.02 | ~0.04 |
| 漫反射 | 镜面反射率 | 总反照率 | |
|---|---|---|---|
| 木炭 | ~0.02 | ~0.02 | ~0.04 |
Same thing with the “Fresh snow”. Some charts indicate an albedo value of 0.9, some 0.81. I went for the lowest value since I was more aiming at a diffuse color value chart. Which leads us to our final question…
“新雪”也是一样。有些图表显示反照率为 0.9,有些为 0.81。我选择了最低值,因为我更关注的是漫反射颜色值图表。这引出了我们的最后一个问题……
麦克白图表值 Macbeth Chart Values
Are the macbeth chart values diffuse albedo or total albedo ? A fairly long time ago a colleague took material reference photos of items using cross-polarisation and, of course, the macbeth chart has a specular component. […] But maybe we should treat the online macbeth chart (from colour-science) as diffuse and anyone referencing a photo with a chart they would need to compensate for the specular component ?
关于麦克白图表中漫反射或总反射的值? 很久以前,一位同事使用交叉极化拍摄了物品的材料参考照片,当然,麦克白图表有一个镜面反射分量。[…] 但也许我们应该将在线麦克白图表(来自色彩科学)视为漫反射,并且任何参考带有图表的照片的人都需要补偿镜面反射分量?
I cannot answer any better than Thomas Mansencal, so I’ll just quote him.
我的回答不可能比托马斯·曼森卡尔更好,因此我只能引用他的话。
From a measurement and unit standpoint albedo is meant to represent diffuse reflection (of solarirradiance). The problem is as much as you can separate them when you model a BRDF, it is really hard to do so in real life when taking measurements. In a way, specular reflection is almost always a subset of diffuse reflection, it is reflection after all. When the reflectance of a chart is measured, it is done with a precise geometry, e.g. 0:45 (light aligned to the tangent, receiver/sensor at 45deg) and what is measured is the total reflection of the incident light. Because the light irradiance is known, you can then deduce the reflectance of the surface.
从测量和单位的角度来看,反照率旨在表示漫反射(太阳辐照度)。问题是,虽然您可以在建模 BRDF 时将它们分开,但在现实生活中进行测量时很难做到这一点。在某种程度上,镜面反射几乎总是漫反射的一个子集,毕竟它是反射。当测量图表的反射率时,它是用精确的几何形状完成的,例如 0:45(光与切线对齐,接收器/传感器在 45 度处),并且测量的是入射光的总反射。因为光辐照度是已知的,所以您可以推断出表面的反射率。
Having never done any real-life measurements myself, I’ll just sit and listen. Here’s the final part :
我自己从未做过任何实际测量,所以我只是坐着听。这是最后一部分:
What this tells you is that there is no specular vs diffuse reflection separation, it is all encompassing. It also tells you that if you are expecting to achieve a match, you should be matching the measurement geometry in the render engine because it is the only geometry where the match can be fully achieved.
这说明镜面反射与漫反射没有区别,都是无所不包的。这还说明,如果您希望实现匹配,则应该在渲染引擎中匹配测量几何体,因为这是唯一可以完全实现匹配的几何体。
结论 Conclusion
Even though the Pointer’s Gamut is 40 years old, it is still a valid reference for albedo values in shaders. But we should certainly not become a slave of it and use it as a guideline to give consistency between assets. As usual, these choices depend on your art direction and workflow. Recently, Björn Ottosson, a software engineer tweeted about the Pointer’s Gamut and generated these two images.
尽管 Pointer 的色域已有 40 年历史,但它仍然是着色器中反照率值的有效参考。但我们绝对不应该成为它的奴隶,而应该将其用作指导方针,以确保资产之间的一致性。 像往常一样,这些选择取决于您的艺术指导和工作流程。最近,软件工程师Björn Ottosson在推特上发布了关于 Pointer 的色域的信息,并生成了这两张图片。
Shows what the brightest and darkest natural surface reflectance colors are (using sRGB HSV). If you are making diffuse textures, you want to stay in this range most of the time. Brighter and darker reflectance colors are physically possible, but will be quite rare. This is a good sanity check rather than strict limit. Also fluorescent colors can appear brighter.
显示最亮和最暗的自然表面反射颜色(使用 sRGB HSV)。如果您正在制作漫反射纹理,则大多数时候您希望保持在此范围内。更亮和更暗的反射颜色在物理上是可能的,但会非常罕见。这是一个良好的健全性检查,而不是严格的限制。荧光颜色也可以显得更亮。
This concept of limiting the range of textures values can generate quite some debate. But I think it is useful to take these decisions keeping in mind these notions. And we’ll finish with Thomas’ quote :
限制纹理值范围的概念可能会引起很多争论。但我认为在做出这些决定时牢记这些概念是有用的。我们以 Thomas 的引言作为结束:
Well, everything is contextual, anchoring your values in the real world, as a starting point, is often the key to greater quality, this is to a degree the basis of PBR. Keep in mind that Pointer’s Gamut is about reflectance only […]. It is about Digital Asset authoring, specifically Look Development of shaders and textures where more often than never, one needs to strive for physical accuracy. […] This is not about image quality but physical correctness. Like any tools, it must be used with understanding. PBR validation tools […] arguably help improving Lookdev consistency and overall image quality.
好吧,一切都是情境化的,将您的价值观锚定在现实世界中,作为起点,通常是提高质量的关键,这在某种程度上是 PBR 的基础。请记住,Pointer 的色域仅与反射有关[...]。它与数字资产创作有关,特别是着色器和纹理的外观开发,其中往往需要努力实现物理准确性。[...] 这不是关于图像质量,而是物理正确性。与任何工具一样,必须在理解的情况下使用它。 PBR 验证工具 [...] 可以说有助于提高 Lookdev 一致性和整体图像质量。
A possible improvement of this post could be to generate two charts : one for Diffuse Reflectance and one for Specular Reflectance. Sounds like some interesting homework for the future !
这篇文章的一个可能的改进是生成两个图表:一个用于漫反射,一个用于镜面反射。听起来像是未来一些有趣的家庭作业!
链接 Links
- Substance PBR guide.
- Substance PBR 指南。
- Cinematic Color.
- 電影色彩。
- Albedo definition on Wikipedia.
- 维基百科上的反照率定义。
- Everything is shiny.
- 一切都闪闪发光。
- The Arnold documentation.
- 阿诺德文档。
- A plea for colour analysis tools in DCC applications.
- 恳求 DCC 应用程序中使用色彩分析工具。
- Great article on the Pointer’s Gamut.
- 有关 Pointer's Gamut 的很棒的文章。
- Useful data on the RIT website.
- RIT 网站上的有用数据。
- Pointer’s Gamut Checker Tool.
- Pointer 的色域检查工具。
- DONTNOD Physically based rendering chart for Unreal Engine 4.
- DONTNOD 基于物理的虚幻引擎 4 渲染图表。
- Sebastien’s Lagarde albedo chart.
- 塞巴斯蒂安的拉加德反照率图。
- Iri Shinsoj Albedo Chart.
- Iri Shinsoj 反照率图表。
- Feeding a physically based shading model.
- 提供基于物理的着色模型。
- Björn Ottosson’s posts.
- Björn Ottosson 的帖子。
粤公网安备44060602002818