PBR的初探

  概要: 此文讲述了我在接触PBR时的体会。


       在刚开始听说PBR时,感觉它是个很神奇的东西,这么牛叉的东西能用在光栅化渲染器中吗?当时感觉用于Ray-Tracing中较为合适。

       

        一、  感性认识,从基本教程着手。

                      非常感谢https://learnopengl.com/#!PBR/Theory 这个OpenGL教程,让我看到了一个BPR的实现。


        二、 到底哪儿基于物理渲染了?

                       在进行Graphic  Rendering时,主要工作是于处理好物质对光的反馈,也就是光照效果。这就需要光照方程,它核心就是BRDF。

                双向反射分布函数(Bidirectional Reflectance Distribution Function,BRDF)用来定义给定入射方向上的辐射照度(irradiance)如何影响给定出射方向上的辐射率

(radiance)。 这里推荐BRDF(双向反射分布函数)清华大学讲义,读完此文后,发现原来我们以前的光照模型Phong Model也是BRDF的一种模型(只怪自己基础不扎  实,没有好好研读Real-Time Rendering),这个讲义很好地介绍了光辐射与平面交互理论,要点如下:

                     1.  Reflect Light 与 Diffuse Light的形成原理。

                     2.  辉度、光亮度 概念。

                     3.  光学平面 与 微米级别的粗糙平面。

                     4.  能量守恒。

                     5.  理想的光学平面要点:入射角等于出射角。

                     6. 菲涅耳效应,光学平面反射的光数量与入射角的大小相关。

                     现实生活中不存在大块的光学平面,在微小的面元里、微米级别下, 将该面元看成是由许多锯齿状的很小的光学平面组成。关于这个讲述请阅读

                      http://blog.selfshadow.com/publications/s2013-shading-course/hoffman/s2013_pbs_physics_math_notes.pdf,如下图:

                      

                        注:上图中淡蓝色的点为物体里的杂质,不纯的物质会造成光的散射,上述链接中的pdf中有详细地说明散射。


                         基于物理的BRDF要考虑如下几个因素:

                                a.  面元的粗糙度(法线分布、反射光遮挡)

                                b.  菲涅耳效应

                                c.  金属与非金属物质

                                c.  射入感光器的光量 由 diffuse 和 specular组成。

                                d.  能量守恒


                        基于上面的光辐射理论,基于物理的BRDF又有多种模型(我们只能逼近物理理论)。

                        感光器接收到的光亮度公式(也就是常说的 渲染方程)为:

                        

                        Cook-Torrance BRDF:

                        

                        

                        其中D,F,G分别为:

  • Normal distribution function: approximates the amount the surface's microfacets are aligned to the halfway vector influenced by the roughness of the surface; this is the primary function approximating the microfacets.
  • Geometry function: describes the self-shadowing property of the microfacets. When a surface is relatively rough the surface's microfacets can overshadow other microfacets thereby reducing the light the surface reflects.
  • Fresnel equation: The Fresnel equation describes the ratio of surface reflection at different surface angles.

                  具体公式细节参阅链接教程。

     三、关于辐射度量和光度学的知识。

                              辐射度学与光度学基本知识 

03-08
<think>好的,我需要回答用户关于PBR在编程或技术领域的含义的问题。首先,用户提到的PBR可能有多种解释,所以我得先确定最常见的几个可能,并详细解释。 首先想到的是Physically Based Rendering(基于物理的渲染),这是计算机图形学中的常用术语,特别是在游戏开发和3D建模中。用户提供的引用里也提到了PBR和全局光照,这应该是主要的解释方向。需要解释PBR的基本概念、作用以及应用场景,比如在游戏引擎如Unity或Unreal Engine中的应用,以及它如何提升渲染的真实感。 另外,用户提供的引用2提到了Image-Based Lighting和PBR,这可能涉及到具体的实现方法,比如使用立方体贴图和环境光遮蔽等技术。这里可以结合引用中的内容,说明PBR如何与这些技术结合使用,以优化光照效果。 接下来,用户还提到了引用3中的内容,看起来是关于Python的本地化编译命令,可能与编程中的其他术语有关,但这里的PBR可能不是重点。不过需要确认是否有其他编程相关的PBR缩写,比如可能是Problem Report(问题报告)的缩写,但不太常见。 另外,考虑到引用4提到了Go语言的依赖注入,虽然和PBR无关,但需要确保回答不偏离用户的问题。所以应集中在图形学中的PBR上。 然后,用户可能还关心PBR的具体实现方式,比如在着色器中的使用,或者相关的文件格式(如PBR材质贴图)。需要提到常见的贴图类型,如Albedo、Normal、Metallic、Roughness等,以及它们如何共同作用以实现基于物理的渲染效果。 此外,可能还需要对比传统渲染方法和PBR的区别,强调PBR在光照一致性、材料属性准确性方面的优势。比如传统方法可能需要手动调整参数以适应不同光照,而PBR通过物理属性自动适应,提高效率和真实感。 同时,用户可能想知道学习PBR的资源或工具,比如常用的软件(Substance Painter)、引擎支持(Unity、Unreal)以及相关文档或教程。可以建议一些学习路径,如学习PBR理论,实践使用工具创建材质,以及在引擎中应用这些材质。 最后,生成的相关问题需要覆盖PBR的组成部分、与传统渲染的区别、应用场景、学习资源以及优化技术等方面,确保用户能全面了解PBR的相关信息。</think>在技术领域,PBR主要有以下两种常见含义: ### 1. 基于物理的渲染 (Physically Based Rendering) 在计算机图形学中,PBR是通过模拟真实物理规律来实现更准确光照计算的渲染技术。其核心是使用符合物理定律的材质属性和光照模型,例如: $$ f_r = \frac{D \cdot F \cdot G}{4(\omega_o \cdot n)(\omega_i \cdot n)} $$ 其中$D$为微表面分布函数,$F$为菲涅尔反射项,$G$为几何衰减项[^1]。 特性包括: - 使用金属度/粗糙度工作流 - 能量守恒原则 - 支持HDR环境光照 - 通过GGX等先进BRDF模型实现 应用场景覆盖游戏开发(如《刺客信条》系列)、影视特效(如皮克斯动画)和建筑可视化[^2]。 ### 2. 基于策略的路由 (Policy-Based Routing) 在网络编程中,PBR指根据自定义策略而非传统路由表进行数据包转发的技术。典型实现包括: ```python # 示例路由策略 def route_packet(packet): if packet.src_ip in VIP_LIST: return load_balancer elif packet.protocol == HTTPS: return firewall else: return default_gateway ``` 常用于SDN网络、云计算负载均衡等场景[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值