Real-Time Rendering——9.9 BRDF Models for Subsurface Scattering地下散射的BRDF模型9.9.1 Subsurface Albedo地下反照

In the previous section we discussed surface, or specular, reflection. In this section we will discuss the other side of the issue, namely what happens to light refracted under the surface. As we discussed in Section 9.1.4, this light undergoes some combination of scattering and absorption, and part of it is re-emitted back out of the original surface. We will focus here on BRDF models for local subsurface scattering, or diffuse surface response, in opaque dielectrics. Metals are irrelevant, since they do not have any significant subsurface light interaction. Dielectric materials that are transparent or exhibit global subsurface scattering will be covered in Chapter 14.

上一节中,我们讨论了表面或镜面反射。在这一节中,我们将讨论问题的另一面,即光线在表面下折射后会发生什么。正如我们在9.1.4节中所讨论的,这种光经历了一些散射和吸收的组合,其中一部分被重新发射出原来的表面。在这里,我们将集中讨论不透明电介质中局部次表面散射或漫射表面响应的BRDF模型。金属是不相关的,因为它们没有任何显著的次表面光相互作用。第14章将讨论透明的或表现出全局次表面散射的电介质材料。

We start our discussion of diffuse models with a section on the property of diffuse color and the possible values this color can have in real-world materials. In the following subsection we explain the effect of surface roughness on diffuse shading, and the criteria for choosing whether to use a smooth-surface or rough-surface shading model for a given material. The last two subsections are devoted to the smooth-surface and rough-surface models themselves.

我们从漫反射颜色的属性以及这种颜色在真实世界材质中可能具有的值开始讨论漫反射模型。在下面的小节中,我们将解释表面粗糙度对漫反射明暗处理的影响,以及对于给定的材质,选择使用平滑表面还是粗糙表面明暗处理模型的标准。最后两节专门讨论光滑表面和粗糙表面模型本身。

9.9.1 Subsurface Albedo地下反照率

The subsurface albedo ρss of an opaque dielectric is the ratio between the energy of the light that escapes a surface compared to the energy of the light entering into the interior of the material. The value of ρss is between 0 (all light is absorbed) and 1 (no light is absorbed) and can depend on wavelength, so ρss is modeled as an RGB vector for rendering. For authoring, ρss is often referred to as the diffuse color of the surface, just as the normal-incidence Fresnel reflectance F0 is typically referred to as the specular color. The subsurface albedo is closely related to the scattering albedo discussed in Section 14.1.

不透明电介质的次表面反照率ρss是逃逸出表面的光的能量与进入材料内部的光的能量之比。ρss的值介于0(所有光都被吸收)和1(没有光被吸收)之间,并且可以取决于波长,因此ρss被建模为用于渲染的RGB向量。对于创作,ρss通常被称为表面的漫反射颜色,正如垂直入射的菲涅耳反射F0通常被称为镜面反射颜色一样。地下反照率与第14.1节中讨论的散射反照率密切相关。

Since dielectrics transmit most incoming light rather than reflecting it at the surface, the subsurface albedo ρss is usually brighter and thus more visually important than the specular color F0. Since it results from a different physical process than the specular color—absorption in the interior instead of Fresnel reflectance at the surface—ρss typically has a different spectral distribution (and thus RGB color) than F0. For example, colored plastic is composed of a clear, transparent substrate with pigment particles embedded in its interior. Light reflecting specularly will be uncolored, while light reflecting diffusely will be colored from absorption by the pigment particles; for example, a red plastic ball has a white highlight.

由于电介质透射大部分入射光,而不是在表面反射,所以次表面反照率ρss通常更亮,因此在视觉上比镜面颜色F0更重要。由于它是由不同于镜面颜色的物理过程产生的,即内部的吸收而不是表面的菲涅耳反射,ρss通常具有不同于F0的光谱分布(以及RGB颜色)。例如,彩色塑料由清澈透明的基底组成,其内部嵌有颜料颗粒。镜面反射的光将是无色的,而漫反射的光将由于颜料颗粒的吸收而着色;例如,红色塑料球有白色高光。

Subsurface albedo can be thought of as the result of a “race” between absorption and scattering—will the light be absorbed before it has had a chance to be scattered back out of the object? This is why foam on a liquid is much brighter than the liquid itself. The process of frothing does not change the absorptivity of the liquid, but the addition of numerous air-liquid interfaces greatly increases the amount of scattering. This causes most of the incoming light to be scattered before it has been absorbed, resulting in a high subsurface albedo and bright appearance. Fresh snow is another example of a substance with a high albedo. There is considerable scattering in the interfaces between snow granules and air, but little absorption, leading to a subsurface albedo of 0.8 or more across the visible spectrum. White paint is slightly less, about 0.7. Many substances encountered in daily life, such as concrete, stone, and soil, average between 0.15 and 0.4. Coal is an example of a material with extremely low subsurface albedo, close to 0.0.

次表面反照率可以被认为是吸收和散射之间“竞赛”的结果——光在有机会散射出物体之前会被吸收吗?这就是为什么液体上的泡沫比液体本身要亮得多。起泡的过程不会改变液体的吸收率,但是大量气液界面的加入大大增加了散射的量。这导致大部分入射光在被吸收之前被散射,从而产生高的次表面反照率和明亮的外观。新下的雪是另一个高反照率物质的例子。在雪颗粒和空气之间的界面上有相当大的散射,但吸收很少,导致整个可见光谱的次表面反照率为0.8或更高。白漆略少,0.7左右。日常生活中遇到的很多物质,比如混凝土、石头、土壤,平均在0.15到0.4之间。煤是一种地表下反照率极低的材料,接近0.0。

The process by which many materials become darker when wet is the inverse of the liquid froth example. If the material is porous, water penetrates into spaces formerly filled with air. Dielectric materials have an index of refraction that is much closer to water than to air. This decrease in the relative index of refraction decreases the scattering inside the material, and light travels longer distances (on average) before escaping the material. This change causes more light to be absorbed and the subsurface albedo becomes darker [821].

许多材料在潮湿时变暗的过程与液体泡沫的例子相反。如果材料是多孔的,水就会渗入先前充满空气的空间。电介质材料的折射率更接近于水,而不是空气。这种相对折射率的降低减少了材料内部的散射,并且光在离开材料之前传播了更长的距离(平均而言)。这种变化导致更多的光被吸收,地下反照率变得更暗[821]。

It is a common misconception (even reflected in well-regarded material authoring guidelines [1163]) that values of ρss should never go below a lower limit of about 0.015–0.03 (30–50 in 8-bit nonlinear sRGB encoding) for realistic material authoring. However, this lower limit is based on color measurements that include surface (specular) as well as subsurface (diffuse) reflectance, and is thus too high. Actual materials can have lower values. For example, the Federal specification for the “OSHA Black” paint standard [524] has a Y value of 0.35 (out of 100). Given the measurement conditions and surface gloss, this Y corresponds to a ρss value of about 0.0035 (11 in 8-bit nonlinear sRGB encoding).

一个常见的误解(甚至反映在广受好评的材料创作指南[1163])是,对于真实的材料创作,ρss的值不应低于约0.015-0.03(8位非线性sRGB编码为30-50)的下限。然而,该下限是基于包括表面(镜面)和次表面(漫反射)反射率的颜色测量,因此过高。实际材料可以有更低的值。例如,“OSHA黑色”油漆标准的联邦规范[524]的Y值为0.35(满分为100)。给定测量条件和表面光泽度,该Y对应于约0.0035的ρss值(在8位非线性sRGB编码中为11)。

When acquiring spot values or textures for ρss from real-world surfaces, it is important to separate out the specular reflectance. This extraction can be done via careful use of controlled lighting and polarization filters [251, 952]. For accurate color, calibration should be performed as well [1153].

从真实表面获取ρss的点值或纹理时,分离出镜面反射非常重要。这种提取可以通过小心使用受控照明和偏振滤光器来完成[251,952]。为了获得准确的颜色,还应进行校准[1153]。

Not every RGB triple represents a plausible (or even physically possible) value for ρss. Reflectance spectra are more restricted than emissive spectral power distributions: They can never exceed a value of 1 for any wavelength, and they are typically quite smooth. These limitations define a volume in color space that contains all plausible RGB values for ρss. Even the relatively small sRGB color gamut contains colors outside this volume, so care must be taken when setting values for ρss to avoid specifying unnaturally saturated and bright colors. Besides reducing realism, such colors can cause over-bright secondary reflections when precomputing global illumination (Section 11.5.1). The 2015 paper by Meng et al. [1199] is a good reference for this topic.

并非每一个RGB三元组都代表一个合理的(甚至是物理上可能的)ρss值。反射光谱比发射光谱功率分布更受限制:对于任何波长,它们的值都不会超过1,并且它们通常非常平滑。这些限制定义了色彩空间中包含ρss的所有似是而非的RGB值的体积。即使相对较小的sRGB色域也包含该体积之外的颜色,因此设置ρss值时必须小心,避免指定不自然的饱和明亮颜色。除了降低真实感,预计算全局照明时,这些颜色还会导致过亮的二次反射(第11.5.1节)。孟等人[1199]2015年的论文很好的参考了这个题目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椰子糖莫莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值