Real-Time Rendering——9.8.2 Multiple-Bounce Surface Reflection多次反射表面反射

本文主要是介绍Real-Time Rendering——9.8.2 Multiple-Bounce Surface Reflection多次反射表面反射,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

As mentioned earlier in Section 9.7, the microfacet BRDF framework does not account for light that is reflected (“bounced”) from the microsurface multiple times. This simplification causes some energy loss and over-darkening, especially for rough metals [712].

如之前在第9.7节中提到的,microfacet BRDF框架没有考虑从微表面多次反射(“反弹”)的光。这种简化导致一些能量损失和过度变暗,特别是对于粗糙金属[712]。

A technique used by Imageworks [947] combines elements from previous work [811, 878] to create a term that can be added to the BRDF to simulate multiple-bounce surface reflection:

Imageworks [947]使用的一项技术结合了之前工作[811,878]中的元素,创建了一个可以添加到BRDF中的项,以模拟多次反弹表面反射:

where RsF1 is the directional albedo (Section 9.3) of fsF1, which is the specular BRDF term with F0 set to 1. The function RsF1 depends on the roughness α and elevation angle θ. It is relatively smooth, so it can be precomputed numerically (using Equation 9.8 or 9.9) and stored in a small two-dimensional texture. Imageworks found that 32 × 32 resolution is sufficient. 

其中RsF1是fsF1的方向反照率(第9.3节),fsF1是F0设置为1时的镜面BRDF项。函数RsF1取决于粗糙度α和仰角θ。它是相对平滑的,因此可以用数值方法预先计算(使用方程9.8或9.9)并存储在一个小的二维纹理中。Imageworks发现32 × 32的分辨率已经足够了。

The function RsF1 is the cosine-weighted average value of RsF1 over the hemisphere. It depends only on α, so it can be stored in a one-dimensional texture, or an inexpensive curve could be fitted to the data. Since RsF1 is rotationally symmetric about n, RsF1 can be computed with a one-dimensional integral. We also use the change of variables μ = cos θ (see Equation 9.6 on page 312):

函数RsF1是RsF1在整个半球上的余弦加权平均值。它只依赖于α,所以它可以存储在一维纹理中,或者可以用一条便宜的曲线来拟合数据。因为RsF1关于n旋转对称,所以RsF1可以用一维积分来计算。我们还使用变量μ = cos θ的变化(见312页的方程9.6):

Finally, F is the cosine-weighted average of the Fresnel term, computed in the same way: 

最后,F是菲涅耳项的余弦加权平均值,计算方法相同:

Imageworks provide a closed-form solution to Equation 9.58 in the case that the generalized Schlick form (Equation 9.18) is used for F: 

Imageworks为方程9.58提供了一个封闭形式的解 施利克形式(方程9.18)用于F:

If the original Schlick approximation is used (Equation 9.16), then the solution simplifies to 

如果使用原始的施利克近似法(方程9.16),则解简化为

In the case of anisotropy, Imageworks use an intermediate roughness between αx and αy for the purpose of computing fms. This approximation avoids the need to increase the dimensionality of the RsF1 lookup table, and the errors it introduces are small. 

在各向异性的情况下,Imageworks使用介于αx和αy之间的中间粗糙度来计算fms。这种近似避免了增加RsF1查找表维数的需要,并且它引入的误差很小。

The results of the Imageworks multiple-bounce specular term can be seen in Figure 9.39.

在图9.39中可以看到Imageworks多重反射镜面反射项的结果 .

Figure 9.39. In all rows the roughness of the surface increases from left to right. The top two rows show a gold material. The first row is rendered without the Imageworks multiple-bounce term, and the second is rendered with the multiple-bounce term. The difference is most noticeable for the rougher spheres. The next two rows show a black dielectric material. The third row is rendered without the multiple-bounce term, and the fourth row has the multiple-bounce term applied. Here the difference is more subtle, since the specular reflectance is much lower. (Figure courtesy of Christopher Kulla [947].) 

图9.39。在所有行中,表面的粗糙度从左到右增加。上面两行显示的是金色材质。第一行在不使用Imageworks多次反射术语的情况下进行渲染,第二行在使用多次反射术语的情况下进行渲染。对于较粗糙的球体,这种差异最为明显。接下来的两行显示黑色电介质材料。第三行渲染时没有多次反弹项,第四行应用了多次反弹项。这里的区别更加微妙,因为镜面反射率要低得多。(图由克里斯托弗·库拉[947]提供。)

这篇关于Real-Time Rendering——9.8.2 Multiple-Bounce Surface Reflection多次反射表面反射的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/292802

相关文章

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

linux 下Time_wait过多问题解决

转自:http://blog.csdn.net/jaylong35/article/details/6605077 问题起因: 自己开发了一个服务器和客户端,通过短连接的方式来进行通讯,由于过于频繁的创建连接,导致系统连接数量被占用,不能及时释放。看了一下18888,当时吓到了。 现象: 1、外部机器不能正常连接SSH 2、内向外不能够正常的ping通过,域名也不能正常解析。

GitHub每周最火火火项目(9.2-9.8)

项目名称:polarsource / polar 项目介绍:polar 是一个开源项目,它是 Lemon Squeezy 的替代方案,并且具有更具优势的价格。该项目的目标是为开发者提供一种更好的选择,让他们能够在追求自己的热情和兴趣的同时,通过编码获得相应的报酬。通过使用 polar,开发者可以享受到更实惠的价格,同时也能够更自由地发挥自己的创造力和技能。 项目地址:https://github.

【反射知识点详解】

Java中的反射(Reflection)是一个非常强大的机制,它允许程序在运行时检查或修改类的行为。这种能力主要通过java.lang.reflect包中的类和接口来实现。 通过反射,Java程序可以动态地创建对象、调用方法、访问字段,以及获取类的各种信息(如构造器、方法、字段等)。 反射的用途 反射主要用于以下几种情况: 动态创建对象:通过类的Class对象动态地创建其实例。访问类的字段

Go 在orm中使用反射

作为静态语言,golang 稍显笨拙,还好 go 的标准包reflect(反射)包弥补了这点不足,它提供了一系列强大的 API,能够根据执行过程中对象的类型来改变程序控制流。本文将通过设计并实现一个简易的 mysql orm 来学习它,要求读者了解mysql基本知识,并且跟我一样至少已经接触 golang 两到三个月。 orm 这个概念相信同学们都非常熟悉,尤其是写过rails的同学,对acti

【电子通识】半导体工艺——保护晶圆表面的氧化工艺

在文章【电子通识】半导体工艺——晶圆制造中我们讲到晶圆的一些基础术语和晶圆制造主要步骤:制造锭(Ingot)、锭切割(Wafer Slicing)、晶圆表面抛光(Lapping&Polishing)。         那么其实当晶圆暴露在大气中或化学物质中的氧气时就会形成氧化膜。这与铁(Fe)暴露在大气时会氧化生锈是一样的道理。 氧化膜的作用         在半导体晶圆

码蹄集部分题目(2024OJ赛9.4-9.8;线段树+树状数组)

1🐋🐋配对最小值(王者;树状数组) 时间限制:1秒 占用内存:64M 🐟题目思路 MT3065 配对最小值_哔哩哔哩_bilibili 🐟代码 #include<bits/stdc++.h> using namespace std;const int N=1e5+7;int a[N],b[N],c[N],n,q;struct QUERY{int l,r,id;}que

UMI复现代码运行逻辑全流程(一)——eval_real.py(尚在更新)

一、文件夹功能解析 全文件夹如下 其中,核心文件作用为: diffusion_policy:扩散策略核心文件夹,包含了众多模型及基础库 example:标定及配置文件 scripts/scripts_real:测试脚本文件,区别在于前者倾向于单体运行,后者为整体运行 scripts_slam_pipeline:orb_slam3运行全部文件 umi:核心交互文件夹,作用在于构建真

python内置模块datetime.time类详细介绍

​​​​​​​Python的datetime模块是一个强大的日期和时间处理库,它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。 ----------动动小手,非常感谢各位的点赞收藏和关注。----------- 使用datet

类型信息:反射-Class

在说反射前提一个概念:RTTI(在运行时,识别一个对象的类型) public class Shapes {public static void main(String[] args) {List<Shape> shapes = Arrays.asList(new Circle(), new Square(), new Triangle());for (Shape shape : shapes