<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>PBRT on wanfeng</title>
        <link>https://sdpyy1.github.io/tags/pbrt/</link>
        <description>Recent content in PBRT on wanfeng</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>爱喝东方树叶</copyright>
        <lastBuildDate>Thu, 25 Dec 2025 14:10:44 +0800</lastBuildDate><atom:link href="https://sdpyy1.github.io/tags/pbrt/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>PBRT（Reflection Models）</title>
        <link>https://sdpyy1.github.io/p/pbrtreflection-models/</link>
        <pubDate>Thu, 25 Dec 2025 14:10:44 +0800</pubDate>
        
        <guid>https://sdpyy1.github.io/p/pbrtreflection-models/</guid>
        <description>&lt;img src="https://sdpyy1.github.io/image-20260102161357849.png" alt="Featured image of post PBRT（Reflection Models）" /&gt;&lt;blockquote&gt;
&lt;p&gt;未完结&lt;/p&gt;
&lt;p&gt;因为直接看了第7章，第4章还没看，需要先回去看一下4.3.1的BRDF、BTDF、BSSRDF&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102161357849.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102161357849&#34;
	
	
&gt;&lt;/p&gt;
&lt;h1 id=&#34;bxdf框架&#34;&gt;BXDF框架
&lt;/h1&gt;&lt;h2 id=&#34;bsdf&#34;&gt;BSDF
&lt;/h2&gt;&lt;h3 id=&#34;brdf&#34;&gt;BRDF
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;很熟悉了，只定义了反射如何进行&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251225122834829.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251225122834829&#34;
	
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;hemisphericaldirectional-reflectance半球方向反射率&#34;&gt;Hemispherical–Directional Reflectance（半球–方向反射率）
&lt;/h4&gt;&lt;blockquote&gt;
&lt;p&gt;从BRDF延申出的一个概念，把光照设置为常量1，这时候的渲染方程就变成了这个东西&lt;/p&gt;
&lt;p&gt;它的意义是不关心光照，不关心各个方向的Radiance（均匀分布的光照），只关心材质本身往W0方向的Radiance&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251225124453466.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251225124453466&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;它可以用来检查物理守恒，物理正确的材质必须满足：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251225124937597.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251225124937597&#34;
	
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;hemisphericalhemispherical-reflectance半球半球反射率&#34;&gt;hemispherical–hemispherical reflectance（半球–半球反射率）
&lt;/h4&gt;&lt;blockquote&gt;
&lt;p&gt;描述了一个面在所有入射方向上平均收到光照后，向所有方向反射的平均能量比例&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这不就是把上一个半球–方向反射率求了一个半球积分后的平均么&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251225125219978.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251225125219978&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;上述两个东西，感觉是用在表达材质的反射效果的一个指标，并不是渲染需要的东西，写论文用的东西？&lt;/p&gt;
&lt;h3 id=&#34;btdf&#34;&gt;BTDF
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;T 表示&lt;em&gt;transmittance&lt;/em&gt; ，BTDF用于描述透射的分布&lt;/p&gt;
&lt;p&gt;这里特别提到BTDF并没有reciprocity 的特性，就是不能反着来&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;BTDF和BRDF被统称为BSDF，因为他们都可以表达为&lt;img src=&#34;https://sdpyy1.github.io/image-20251225125931610.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251225125931610&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;最终BSDF作用到渲染中为（注意这里绝对值符号是PBRT自己加的，他们意思是并不会修改模型的法线朝向模型外侧，可能有他们的考虑）&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251225130037073.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251225130037073&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251225130247409.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251225130247409&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;整了半天4.3.1 原来并没有介绍具体的BSDF模型，只是引入了概念&lt;/p&gt;
&lt;h2 id=&#34;bssrdf&#34;&gt;BSSRDF
&lt;/h2&gt;&lt;p&gt;今天属于是理清楚了 scattering是各种各样的改变光方向的行为的统称，并不是额外的效果。。。&lt;/p&gt;
&lt;p&gt;折射是透射的一种，透射是更上层的概念，透射就是进入某种介质的行为。。。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;bidirectional scattering surface reflectance distribution function&lt;/em&gt; (BSSRDF)&lt;/strong&gt; 描述的是此表面反射的理论框架&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;参数多了一个Pi，也就是Pi对着色点P0的贡献比例，比BSDF多一个维度，BSDF只考虑当前着色点&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251225132839216.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251225132839216&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;看这张图能看出光先进入物体内部，不断散射后从着色点穿出后到达摄像机&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251225132859453.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251225132859453&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;计算过程需要遍历每一个Pi，BSSDF定义这个Pi点的贡献值&lt;/p&gt;
&lt;p&gt;内层积分定义一个Pi点的渲染贡献，外层积分累积所有Pi点&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251225133238326.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251225133238326&#34;
	
	
&gt;&lt;/p&gt;
&lt;h1 id=&#34;&#34;&gt;
&lt;/h1&gt;&lt;p&gt;下图展示了(a) 漫反射 (b)高光反射 (c) 镜面反射（接近）（d）逆反射的Lobe&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251225134317181.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251225134317181&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;另外也理解了各项同性和异性，  同性就是指如上图的摄像机位置，如果绕着法线进行旋转，得到的结果应该是一致的&lt;/p&gt;
&lt;h1 id=&#34;基础理论&#34;&gt;基础理论
&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;为可见光的波长（量级为米级）远小于渲染场景中物体的尺寸（毫米到米级），因此波动相关的现象通常不会在渲染图像中体现.&lt;/p&gt;
&lt;p&gt;但要深入理解光线撞击表面时的行为，就需要借助&lt;strong&gt;波动光学&lt;/strong&gt;的理论，而且在几何光学的模拟框架中融入波动光学的结论，已经成为计算机图形学的常用设计模式。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;当光线照射到物体表面时，会激发材料原子外层的电子，使其发生快速振荡；振荡的电荷会产生次级电场振荡，这些次级振荡会发生&lt;strong&gt;相长干涉和相消干涉&lt;/strong&gt;，这就是原子反射光线的核心机制。而干涉的具体表现，则由原子的种类和原子间的结合方式决定。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;材料种类&#34;&gt;材料种类
&lt;/h2&gt;&lt;h3 id=&#34;电介质dielectrics&#34;&gt;电介质（Dielectrics）
&lt;/h3&gt;&lt;p&gt;这是一大类&lt;strong&gt;电绝缘体&lt;/strong&gt;，包括玻璃、水、矿物油、空气等气态、液态、固态物质。这类材料中，电子与原子的结合非常牢固，不会自由移动。&lt;/p&gt;
&lt;h3 id=&#34;导体conductors&#34;&gt;导体（Conductors）
&lt;/h3&gt;&lt;p&gt;包括金属、合金以及类金属（如石墨）。这类材料的原子晶格中存在&lt;strong&gt;自由电子&lt;/strong&gt;，入射电磁波激发的电子振荡可以让电子在较大范围内移动；同时，电子在晶格中移动时会以热量的形式耗散部分入射能量，导致光线在深入材料的过程中被快速吸收。&lt;/p&gt;
&lt;p&gt;关键特性：光线通常在材料表面&lt;strong&gt;0.1 米的深度内被完全吸收&lt;/strong&gt;，只有极薄的金属薄膜才能透射可观的光线。&lt;/p&gt;
&lt;h3 id=&#34;半导体semiconductors&#34;&gt;半导体（Semiconductors）
&lt;/h3&gt;&lt;p&gt;如硅、锗，兼具电介质和导体的特性。例如硅在可见光波段表现出金属的特性，但在红外波段是透明的，因此可用于红外相机的光学元件。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;PBRT后面介绍了IOR（折射率）的原理就是光速与在真空中的光速的比值，两种介质的折射率差值越大，分界面的反射效果越强。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;反射定律&#34;&gt;反射定律
&lt;/h2&gt;&lt;p&gt;这张图解释了反射是如何计算的，分解成平行于法线和垂直于法线的两个向量后很容易计算&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260101180417393.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260101180417393&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;折射定律&#34;&gt;折射定律
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102142418192.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102142418192&#34;
	
	
&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102142922953.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102142922953&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;经过一些推导最终折射的向量可以通过下面这个公式计算&lt;img src=&#34;https://sdpyy1.github.io/image-20260102143119265.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102143119265&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102143057184.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102143057184&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;折射需要有一个注意的地方：从折射率高进入折射率低（从水中看向空气）时，入射角度过大会导致折射算出来sin大于1了，此时发生的是全内反射，没有折射了&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102144300671.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102144300671&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;菲涅耳方程&#34;&gt;菲涅耳方程
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;上述的折射和反射是会同时发生的，对于导体来说，折射会迅速消失。&lt;/p&gt;
&lt;p&gt;菲涅耳方程用来计算反射光的比例&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这块东西解释了入射波可以分解为垂直（垂直于入射向量和法线组成的平面）和平行两个，单独进行建模。菲涅尔方程描述了给定已知振幅的入射波时，反射波振幅与入射波振幅之间的关系。（这些内容没必要特别细看）&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102145251837.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102145251837&#34;
	
	
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;电介质、导体和半导体均遵循相同的菲涅尔方程。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;对于电介质，就按照上边的公式计算&lt;img src=&#34;https://sdpyy1.github.io/image-20260102145737972.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102145737972&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;对于导体，折射率之比变成用复数表示，然后各种解释，不太理解，看这里最终eta是一个复数，而不是简单的float比值，这种东西就不细看了&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102150123885.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102150123885&#34;
	
	
&gt;&lt;/p&gt;
&lt;h1 id=&#34;常见bxdf&#34;&gt;常见BXDF
&lt;/h1&gt;&lt;h2 id=&#34;完美模型&#34;&gt;完美模型
&lt;/h2&gt;&lt;h3 id=&#34;diffuse-reflection完美漫反射&#34;&gt;Diffuse Reflection（完美漫反射）
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;介绍了最简单的Lambertian model，完全均匀反射率的漫反射表面使用的模型&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;下图解释了为什么要除以/Pi。 因为这样才能保证使总反射能量=R（反射率，用RGB就是albedo）&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251227220249634.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251227220249634&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;conductor-brdf完美反射&#34;&gt;Conductor BRDF（完美反射）
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;导体的BRDF依据两个观点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;镜面反射定律为每条光线分配特定的反射方向，菲涅耳方程则确定反射光的分布范围。&lt;/li&gt;
&lt;li&gt;任何残余光线都会折射进入导体，并被迅速吸收转化为热能&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;所以光滑导体只考虑BRDF、采样只会采样反射方向、PDF=1&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;非常简单，对W0有贡献的点只有反射方向，所以不需要算积分了，F()是菲涅尔方程&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102150614949.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102150614949&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;计算积分时的采样函数不需要什么工具，而是直接找反射方向，然后用菲涅尔公式计算反射比值，返回对这个方向的采样结果，另外PDF直接取1即可&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102151300961.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102151300961&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;dielectric-bsdf完美反射完美折射&#34;&gt;Dielectric BSDF（完美反射+完美折射）
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;不像导体，这里就必须考虑反射和折射了&lt;/p&gt;
&lt;p&gt;设置采样方向的方法是根据入射光角度，计算菲涅耳方程的反射比例，然后去一个随机数来概率选择BRDF还是BTDF&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;等比例选择BRDF和BTDF&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102154533866.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102154533866&#34;
	
	
&gt;&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;根据反射比例来选择BRDF和BTDF，效果明显变好了，因为少了很多低贡献的采样&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102154629378.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102154629378&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;采样方式代码，会根据概率选择BRDF和BTDF&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102154749411.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102154749411&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;此时的PDF为&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102154957499.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102154957499&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;如果选择反射，和导体的采样方向一样&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102155330918.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102155330918&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;如果选择折射&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102155341114.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102155341114&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;thin-dielectric-bsdf薄电介质比如玻璃跳过&#34;&gt;Thin Dielectric BSDF（薄电介质，比如玻璃（跳过））
&lt;/h3&gt;&lt;p&gt;先理解薄电介质的物理背景（为什么需要单独建模）：&lt;/p&gt;
&lt;p&gt;普通电介质（DielectricBxDF）只模拟 “单界面”（比如空气 - 玻璃），但实际的薄玻璃有&lt;strong&gt;两个平行界面&lt;/strong&gt;（空气→玻璃→空气）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;光线入射到第一层界面：一部分反射，一部分透射进入玻璃；&lt;/li&gt;
&lt;li&gt;透射光到达第二层界面：一部分透射出去，一部分反射回玻璃内部；&lt;/li&gt;
&lt;li&gt;反射回的光又会在第一层界面反射 / 透射…… 这个过程&lt;strong&gt;无限递归&lt;/strong&gt;（如图 9.16）；&lt;/li&gt;
&lt;li&gt;薄电介质的核心假设：玻璃厚度极薄，光线的空间偏移可忽略，只需计算 “所有内部反射的总贡献”。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102160138517.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102160138517&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;这个模型主要就是：多层内部反射的总反射率可以用&lt;strong&gt;几何级数&lt;/strong&gt;求和简化（避免追踪无限次反射）&lt;/p&gt;
&lt;p&gt;具体就先不看了！&lt;/p&gt;
&lt;h3 id=&#34;non-symmetric-scattering-and-refraction跳过&#34;&gt;Non-Symmetric Scattering and Refraction（跳过）
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;BTDF不能和BRDF一样反转使用，反转后必须修正系数才能保证物理正确。&lt;/p&gt;
&lt;p&gt;这就不看了，看了一时半会也用不着&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260102160447941.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260102160447941&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;粗糙模型&#34;&gt;粗糙模型
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260107143103417.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260107143103417&#34;
	
	
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;微平面理论的关键洞见在于：&lt;strong&gt;无需对每个微平面进行显式几何建模，而是通过统计方法描述其集体行为&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;微面反射模型需考虑的三个重要几何效应。&lt;/p&gt;
&lt;p&gt;(a)遮蔽效应：目标微面因被其他微面遮挡而不可见。&lt;/p&gt;
&lt;p&gt;(b)阴影效应：类似地，光线无法抵达该微面。&lt;/p&gt;
&lt;p&gt;(c)反射间效应：光线在到达观察者前会在微面间发生多次反射。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260107144256138.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260107144256138&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;用法线分布来描述微表面，这里提到要让一小块微平面dA上方的面积投影下面积等于dA的面积&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260107150722093.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260107150722093&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;GGX法线分布&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260107151413372.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260107151413372&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;还有一种Beckmann法线分布&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260107152128179.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260107152128179&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;GGX的有点是拖尾，它的尾巴比较长，如下图橙色尾巴很长。而beckmannNDF在90°时已经衰减为非常接近0。如果把高出定义为高光，那backmannNDF高光周围会迅速衰减。而GGX会缓慢衰减，形成光晕的效果&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260107152241375.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260107152241375&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20260107152320940.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20260107152320940&#34;
	
	
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;后面介绍的过于理论了，感觉对目前帮助不大，先能进入行业再说，否则也没什么意义&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>PBRT（Monte Carlo Integration）</title>
        <link>https://sdpyy1.github.io/p/pbrtmonte-carlo-integration/</link>
        <pubDate>Mon, 22 Dec 2025 13:17:37 +0800</pubDate>
        
        <guid>https://sdpyy1.github.io/p/pbrtmonte-carlo-integration/</guid>
        <description>&lt;h1 id=&#34;蒙特卡洛积分&#34;&gt;蒙特卡洛积分
&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;开头一句话就解释了为什么渲染要用蒙特卡洛积分&lt;/p&gt;
&lt;p&gt;虽然梯形积分法或高斯求积等标准数值积分技术在求解低维光滑积分时效果显著，但对于渲染中常见的高维不连续积分，其收敛速度却明显不足。蒙特卡洛积分技术为此提供了解决方案，通过随机采样评估积分，其收敛速度与被积函数的维度无关&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;概率论review&#34;&gt;概率论Review
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;读一遍，关键是回顾一下PMF/PDF  CDF都是什么&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;随机变量&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222132703722.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222132703722&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;p(X)表达概率，称为PMF&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222133230031.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222133230031&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;这个是真忘了&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222134038724.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222134038724&#34;
	
	
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;对于连续随机变量，PMF取值始终是0，所以另外引入了PDF（概率密度函数）来表达连续性随机变量的概率情况&lt;/p&gt;
&lt;p&gt;计算PDF的理论方法就是，在随机域上对PDF进行积分的结果得=1，反退出来的PDF函数是什么&lt;/p&gt;
&lt;p&gt;另外PDF是累积分布函数的导数&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222135459581.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222135459581&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;PDF作用就很好理解了，他表示当前取值的概率密度，计算ab范围内的概率，就进行积分就是一段区域内的概率&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222135655753.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222135655753&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;期望，X的期望就可以通过   积分X*PDF来计算&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222140008384.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222140008384&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;the-monte-carlo-estimator&#34;&gt;The Monte Carlo Estimator
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;蒙特卡洛公式的期望就等于原始需要计算的积分&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222141135863.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222141135863&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;蒙特卡洛公式，代码流程就是从PDF表示的分布中随机采样，计算积分值 / pdf值，多个采样点求和后除以采样数&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222141338740.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222141338740&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;可以看出一般形式的蒙特卡洛公式的期望仍然等于要求的积分&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222141449539.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222141449539&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;error-in-monte-carlo-estimators-蒙特卡洛积分的误差&#34;&gt;Error in Monte Carlo Estimators 蒙特卡洛积分的误差
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;使用方差与收敛时间评估蒙特卡洛积分&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;回顾方差的含义就是函数与其期望值的预期平方偏差&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222142013027.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222142013027&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;经典公式&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222142102875.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222142102875&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;多个独立随机变量的方差可以直接求和得到总的方差&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222142255528.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222142255528&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;蒙特卡洛积分相当于多个独立的随机变量的和，他的方差相当于每个随机变量的方差的和，因为另外因为蒙特卡洛积分要除以/N（样本数量），所以蒙特卡洛积分的方差会随着样本数量的增加而线性递减。&lt;/p&gt;
&lt;p&gt;下面这段话是想说明&lt;strong&gt;蒙特卡洛算法的收敛速度不受维度影响，因此成为高维积分唯一实用的数值积分算法&lt;/strong&gt;，TODO: 其实不是特别理解在说什么&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222143627496.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222143627496&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;使用方差线性递减这一特性，使用方差与运行实践来评估一个蒙特卡洛，方差和运行时间越小越好&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222143840533.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222143840533&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;并非所有积分估计量的期望值都等于积分本身。这类估计量被称为有偏估计量&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222144016528.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222144016528&#34;
	
	
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;虽然有偏，但随着样本数 N→∞N \to \inftyN→∞，误差会趋近 0，这类估计器称为一致（consistent）估计器&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在积分估计中，有偏估计器虽然期望值不等于真实值，但可能方差更小、收敛更快，而且一致估计器随着样本数增加仍能得到正确结果；在 Monte Carlo 渲染中，绝大多数估计器是无偏的，光子映射是一个例外&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222144349684.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222144349684&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;MSE（均方误差）：估计值与真实值之间的平方误差的期望（方差是估计值与估计值比较，均方误差是估计值与实际值比较）&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222192358667.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222192358667&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;对于无偏估计，那MSE就等于方差，否则即为方差与估计量偏差平方之和。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;最后这点东西介绍，需要明白 蒙特卡洛积分本身也是一个随机变量（因为他通过采样多个独立的随机变量来进行的），所以可以求蒙特卡洛的方差和均方误差，求法就是用样本进行估计，下边两幅图就是如何通过样本估计蒙特卡洛的方差和均方误差&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这里提到的应该就是用样本估计随机变量的方差（也就是如何量化一个蒙特卡洛积分的方差）&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222193052016.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222193052016&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;利用样本估计的方差，是实际方差的估计值，所以本身也有方差&lt;/p&gt;
&lt;p&gt;另外提到了MSE如何估计&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222193315366.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222193315366&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;improving-efficiency-提升效率&#34;&gt;Improving Efficiency 提升效率
&lt;/h2&gt;&lt;h3 id=&#34;stratified-sampling-分层采样&#34;&gt;Stratified Sampling 分层采样
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;简单理解就是把积分域划分为多个区域，每个区域按照自己的PDF去进行蒙特卡洛积分&lt;/p&gt;
&lt;p&gt;把随机采样改成了在每个子区域随机采样，&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;下图i代表第i个积分区域，j代表第j个样本&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222194407175.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222194407175&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;随机采样结果&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222194926344.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222194926344&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;分层采样结果，对比能看出噪声更小了&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222194940114.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222194940114&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;分层采样的缺点与维度有关，维度太多分层也变得复杂&lt;/p&gt;
&lt;h3 id=&#34;importance-sampling-重要性采样&#34;&gt;Importance Sampling 重要性采样
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;重要性抽样是一种强大的方差缩减技术，其原理基于蒙特卡洛估计量的特性&lt;/p&gt;
&lt;p&gt;原理：若样本取自与被积函数函数形式相似的分布，则收敛速度更快。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果被积函数是上图，PDF用下图，那最终得到的蒙特卡洛的方差要比随机采样好很多&lt;/p&gt;
&lt;p&gt;PDF中间高，说明在这些点采样的概率高，在采样时也就更逼近真实的数据，很好理解的效果好&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222200644651.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222200644651&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;multiple-importance-sampling-多重重要性采样&#34;&gt;Multiple Importance Sampling 多重重要性采样
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;在面对被积函数是多个函数相乘&lt;img src=&#34;https://sdpyy1.github.io/image-20251222201445993.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222201445993&#34;
	
	
&gt;（比如渲染方程就是BRDF Li cos 三项)的情况下的优化方案&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;首先举个例子，假如有两个PDF，刚好对应两个f(x)，如果我们使用PDFa作为采样的PDF时，最终样本都会只剩下fb(x)，因为PDFa与fa(x)更好成比例&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222201537255.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222201537255&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;此时蒙特卡洛积分的方差完全由fb(x)的方差决定，但他的方差可能是很高的，另外这是不可控的，因为被积函数是不能变动的。所以单纯依赖被积函数某一项的形状设计PDF，是不可靠的&lt;/p&gt;
&lt;p&gt;MIS就是用来解决这个问题的&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222203325327.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222203325327&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222203332792.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222203332792&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222203344643.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222203344643&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;MIS的采样方案是&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222203600792.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222203600792&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;也就是用光源相关的PDF采样一次，用BRDF相关的PDF采样一次，并乘以各自的权重。&lt;/p&gt;
&lt;p&gt;总结成公式就是&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222203731683.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222203731683&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;那权重如何计算呢（&lt;strong&gt;MIS 的权重来自一个要求：在保持无偏的前提下，让方差尽可能小。&lt;/strong&gt;）&lt;strong&gt;PBRT 默认使用的是 Balance Heuristic&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;抛开每种PDF生成的样本数量不谈，权重就是 PDF/所有PDF&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222204703129.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222204703129&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;更进一步，乘个幂次&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251222205049944.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251222205049944&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;紧接着提到单样本模型（Single-Sample MIS），其实就是上边的n都=1，就是每个PDF都只采样一次，方差就很低了&lt;/p&gt;
&lt;h3 id=&#34;mis-compensation-多重重要性采样补偿&#34;&gt;MIS Compensation 多重重要性采样补偿
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;比如一个渲染场景，光源项PDF与BRDF的PDF两个PDF进行多重重要性采样&lt;/p&gt;
&lt;p&gt;这个东西必须学习完MIS并且实践后才能感悟他在干什么，这里先简单理解一下&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;此时的蒙特卡洛估计的MIS&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223134446533.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223134446533&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;BRDF在高光方向大量采样，但是这里的光源=0，最终采样样本=0&lt;/p&gt;
&lt;p&gt;光源方向采样也因为权重被削弱&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223134518331.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223134518331&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;MIS虽然考虑到了不同的PDF的配合，但是如果一个PDF大量覆盖了积分接近0的区域，方差并不是最优&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223134643037.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223134643037&#34;
	
	
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;BSDF PDF 在“根本没有光”的方向仍然给了概率&lt;/strong&gt;，总之就是在MIS的情况下，仍然会让积分区域接近0的位置分布大量的采样&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;一种MIS补偿方案是锐化概率分布，就是说在概率很小的地方，直接让他概率为0，不进行采样&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;低于阈值的概率 → 直接砍掉&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;剩下的概率 → 重新归一化&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;结果：PDF 更“尖锐”（sharpened）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;russian-roulette&#34;&gt;Russian Roulette
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;跳过贡献度较小的样本，提升蒙特卡洛性能，同时保证无偏&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C通常是0，q是一个[0-1]均匀分布的随机变量，有1-q的概率继续计算，有q的概率停止&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223141853034.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223141853034&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;可以看出来这样做并没有改变蒙特卡洛积分的无偏性&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223141947025.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223141947025&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;splitting&#34;&gt;Splitting
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;同样需要结合具体场景来学习，这里先简单过一下&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;对于一个二重积分&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223142513325.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223142513325&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;每次采样都需要重新计算x样本和y样本&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223142546689.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223142546689&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;每次都要重新采 &lt;code&gt;x&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;如果 &lt;code&gt;x&lt;/code&gt; 很贵（比如一次主光线 / 路径前缀）&lt;/p&gt;
&lt;p&gt;Splitting：核心思想&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;x 很贵，y 很便宜，那就：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先采一次 x&lt;/li&gt;
&lt;li&gt;对这个 x，多采几个 y&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223142617942.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223142617942&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223142625057.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223142625057&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;sampling-using-the-inversion-method-逆变换法采样&#34;&gt;Sampling Using the Inversion Method 逆变换法采样
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;已知PDF情况下，解决如何按照这个PDF进行采样的方法：反演变换法     从CDF来进行采样&lt;/p&gt;
&lt;p&gt;一句话解释思路就是：1. 根据$\xi$ 得到一个[0-1]直接的随机数，然后让 CDF函数 = 这个值，反向求出X&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;CDF图像的斜率就是PDF值，斜率越大，说明这个采样点的概率越大，同时斜率越大的区域在Y坐标被均匀采样的概率越大，总结结果就是用一个均匀分布采样结果为 PDF越大的区域越容易被采样&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251224152458352.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251224152458352&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;离散情况&#34;&gt;离散情况
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;利用均匀采样配合权重来按照权重进行采样，最终结果是按照权重来提高概率，算法本质是均匀采样&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;需要前边的公式，$\xi$ 是[0-1]之间均匀分布的随机变量，  X是离散的随机变量，这个公式展示了如何从$\xi$去随机选择哪个X作为样本。 也就是说用均匀分布的随机变量来采样X&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223164719097.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223164719097&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;这一操作在CDF图像上就是$\xi$ 取值作为Y轴位置，向右看对齐到哪一列就去Xi&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223170103261.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223170103261&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;这个东西的作用是在一个权重数组中，通过均匀分布来选择其中一个   &lt;strong&gt;最终结果不是均匀采样的，而是按照权重大小来进行的， 但是过程本质利用的是均匀采样&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223165626548.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223165626548&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;这个代码最终返回一个权重索引，满足&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sdpyy1.github.io/image-20251223170131649.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251223170131649&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;连续情况&#34;&gt;连续情况
&lt;/h3&gt;&lt;blockquote&gt;
&lt;p&gt;利用PDF对应的CDF来进行&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	从PDF采样的步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;计算CDF&lt;img src=&#34;https://sdpyy1.github.io/image-20251224134606570.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251224134606570&#34;
	
	
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;还是利用均匀分布产生的随机数&lt;img src=&#34;https://sdpyy1.github.io/image-20251224134636124.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251224134636124&#34;
	
	
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;构建等式$\xi$  = CDF(X)，反过来就算出来X是什么了 &lt;img src=&#34;https://sdpyy1.github.io/image-20251224134723594.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;image-20251224134723594&#34;
	
	
&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;transforming-between-distributions&#34;&gt;Transforming between Distributions
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;把上一章讲的逆变换法推演到任意情况，随机变量X的信息都知道，现在利用X对随机变量Y=f(X）进行抽样的方法&lt;/p&gt;
&lt;p&gt;感觉目前不会遇到这样的问题，先跳过，不然学了也是忘&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        
    </channel>
</rss>
