
算法
文章平均质量分 67
Dezeming
研究方向:数学原理,GPU加速技术,数据结构与算法,机器学习,深度学习神经网络,3D可视化,计算机图形学,图像处理,计算机视觉,Qt程序设计,C++编程
曾学习和研究过:Java,51,stm32,msp430等单片机,嵌入式ARM,DSP,模拟/数字电路,树莓派
展开
-
数据结构浙江大学 全部思考题+每周练习答案(已完结)
MOOC上浙江大学陈越和何钦铭老师的数据结构课程很不错,通俗易懂,每周习题还都有点挑战性,这里打算将所有的题进行一下汇总。原创 2020-03-20 12:42:04 · 39292 阅读 · 17 评论 -
零基础从意义和公式两个层面深入了解傅里叶变换
一、标准的傅里叶变换本系列从百年前还没有傅里叶变换时开始讲起,一直到最后的非周期信号傅里叶变换的原理,加上引子和结语,一共有8小节,现已完成。引子第一章 欧拉和拉格朗日等人的发现第二章 频率是什么玩意第三章 正弦信号的叠加第四章 关于正弦和复指数来表示频率的理解第五章 傅里叶开始变换了第六章 非周期信号的傅里叶变换结语该系列最大的特色是从历史根源出发,并将图...原创 2020-03-16 22:21:19 · 11988 阅读 · 0 评论 -
16位浮点数表示范围
尾数位最小值:0000000001($2^{-10}$),最大值:1111111111($(1-2^{-10}) \times 2^{1}$)尾数值范围:$1\leq M \leq (1-2^{-10}) \times 2^{1}$,其中 $M$ 表示尾数的值。最大负数:$-(1-2^{-10}) \times 2^{15}=-65504$最大正数:$(1-2^{-10}) \times 2^{15}=65504$最小负数:$-2^{-14}=-0.00006103515625$转载 2023-09-26 08:56:11 · 4167 阅读 · 0 评论 -
多重重要性采样(MIS)与光线追踪技术
有人问我什么是MIS,我懒得解释,想给她搜几篇文章看,结果从网上搜了半天也没几篇关于MIS多重重要性采样有关的文章,着实有些不解。这么重要的技术,为什么仅仅存在于论文的世界里呢?作为上个世纪末一篇流芳几十年的博士论文,发表在SIGGRAPH上,即《Robust Monte Carlo Methods for Light Transport Simulation》这部承前启后的开山之作,里面提出的最重要的方法之一就是MIS算法,既然没有多少人写,那我就自己来写一下吧,一是对自己在这方面的研究略微比较自原创 2020-11-22 22:45:40 · 8437 阅读 · 1 评论 -
联合概率密度函数
条件概率密度函数:边缘概率密度函数:随机变量G的条件期望:原创 2020-09-25 15:24:46 · 4713 阅读 · 0 评论 -
三次样条插值的原理(一)
在做三次样条插值的时候,我们需要首先注意几点:第一,样条插值主要有两种,一种并不算插值,属于拟合,近似,不过每个给定的离散数据点;另一种是插值,过每个离散数据点。第二、样条插值函数是在每个段上定义的,如果有N段,就是N个函数。如果有N+1个数据点,就会一共有N个间隔。也就有分了N段的曲线。我们假设每段曲线为S(x),假设这一堆数据点为:是按照从小到大的顺序排列的,对应每个点的值假设我们取其中的一段进行分析,比如取和,在这个间隔的曲线就是首先我们需要保证的是,,当然也有...原创 2020-09-01 10:40:08 · 7451 阅读 · 0 评论 -
利用MC原理来计算面光源对空间点入射的能量
假设光源亮度是S,我们知道点光源对空间某点的入射能量是:所以这里推导一下面光源。过程比较粗略:原创 2020-08-31 08:40:14 · 1750 阅读 · 0 评论 -
体渲染滤波器优化 程序卷积
计算卷积和的最直接的方法是在片段着色器中按程序计算所有权重。只要描述过滤器内核的函数可以在片段着色器中的任意位置x求值,就可以轻松计算出所有需要的权重wi(u)。所有的输入样本 fi 通过最近邻插值从输入纹理中提取。然后直接计算卷积和,如下面等式所示。示例:三次B样条曲线。三次B样条是BC样条函数族的一部分(B=1,C=0)。如下图所示。与所有三次滤波器一样,它的宽度为4,因此需要四个权重,并对四个输入样本求和。weights 定义为:参数u是两个相邻样本之间[0,1]中的分数位置,即。原创 2020-08-18 16:25:43 · 1677 阅读 · 0 评论 -
机器学习必备知识点 之 样本方差与实际方差
机器学习必备知识点见机器学习必备知识点在做估计时,我们需要把样本的方差除以一个n-1,作为估计的全部数据方差。总体有N个样本,我们抽取了n个,然后我们根据这n个样本的分布情况来推测总体的分布情况。除以n-1的样本方差计算公式是总体方差的无偏估计值计算式。除以n的样本方差计算公式是总体方差的渐近无偏估计值计算式,n足够大的时候,就可以不用区别n和n-1的差距了。证明过程:(因为是以前保存的图片,内容来源已经丢失)...原创 2020-08-14 14:11:29 · 892 阅读 · 0 评论 -
体渲染 图像顺序方法和对象顺序方法
体绘制技术可分为图像顺序法和对象顺序法。图像排序方法:在二维图像空间中工作-图像平面上的像素作为体积遍历的起点。从像素开始,遍历数据量。例如光线投射法,从屏幕发出光线,采集数据场。对象排序方法:遵循一定的组织方式来扫描对象空间中的三维体。然后将遍历的体积区域投影到图像平面上。例如Texture-sliced方法,把体数据排列在GPU中,然后合成。...原创 2020-08-13 21:32:24 · 1843 阅读 · 0 评论 -
Summed-area table
Summed-area table是一种数据结构和算法,用于快速高效地生成网格矩形子集中的值之和。在图像处理领域,它也被称为整体图像。从历史上看,这一原理在多维概率分布函数的研究中非常著名,即从各自的累积分布函数计算2D(或ND)概率(概率分布下的面积)顾名思义,求和面积表中任意点(x,y)的值是(x,y)上方和左侧所有像素的总和,包括:是像素在(x,y)的值。在对图像进行一次扫描时,可以有效地计算总和面积表,因为(x,y)处的总和面积表中的值仅为:(注意,求和矩阵从左上角开始计算)原创 2020-08-13 14:32:45 · 1245 阅读 · 0 评论 -
Lighting
openGL高级光照部分目录见openGL高级光照部分目录在前一章中,我们为从地面获得一个真实的基于物理的渲染器奠定了基础。在本章中,我们将着重于将前面讨论的理论转化为使用直接(或分析)光源的实际渲染器:考虑点光源、平行光和/或聚光灯。让我们重新访问上一章中的最终反射率方程:我们现在基本上知道发生了什么,但是仍然是一个很大的未知数,就是我们将如何准确地表示场景的总辐射率L。我们知道,辐亮度L(在计算机图形学领域中解释)测量给定立体角ω上光源的辐射通量ψ或光能。在我们的例子中,我们假设立体..翻译 2020-07-14 20:32:36 · 316 阅读 · 1 评论 -
PBR理论(五)
openGL高级光照部分目录见openGL高级光照部分目录Cook-Torrance reflectance equation在描述了Cook-Torrance BRDF的每个组成部分后,我们可以将基于物理的BRDF包括到现在的最终反射方程中:然而,这个方程式在数学上并不完全正确。你可能还记得,菲涅耳项F代表光在表面上反射的比率。这实际上就是我们的比值ks,这意味着反射率方程的镜面反射(BRDF)部分隐含着反射比ks。考虑到这一点,我们的最终反射率方程为:这个等式现在完全描述了一..翻译 2020-07-14 15:31:33 · 863 阅读 · 0 评论 -
PBR理论(四)
openGL高级光照部分目录见openGL高级光照部分目录法线分布函数法线分布函数D在统计学上近似于微区的相对表面积,精确地与矢量h对齐。在给定一些粗糙度参数的情况下,有许多NDF在统计上近似于微面总体排列,我们将使用的NDF称为Trowbridge Reitz GGX:这里h是测量表面微区的中间矢量,α是表面粗糙度的量度。如果我们将h作为曲面法线和光线方向在不同粗糙度参数下的中间向量,我们将得到以下视觉结果:粗糙度较低(因此表面是光滑的)时,高度集中的微区在一个小半径上与一半矢..翻译 2020-07-14 15:07:27 · 723 阅读 · 0 评论 -
PBR理论(三)
openGL高级光照部分目录见openGL高级光照部分目录BRDFBRDF或双向反射分布函数是一个函数,它将入射(光)方向ωi、输出(视图)方向ωo、曲面法线n和表示微表面粗糙度的曲面参数a作为输入。考虑到不透明表面的材料特性,BRDF近似于每个单独光线ωi对最终反射光的贡献。例如,如果曲面有一个非常平滑的曲面(如镜子),则BRDF函数将为所有入射光线ωi返回0.0,除了一条与传出光线ωo具有相同(反射)角度的光线外,该函数返回1.0。基于反射理论和反射材料理论,讨论了反射材料的反射特性。为..翻译 2020-07-14 10:59:21 · 1147 阅读 · 0 评论 -
PBR理论(二)
openGL高级光照部分目录见openGL高级光照部分目录这给我们带来了一个叫做渲染方程的东西,一个非常聪明的人想出的一个精心设计的方程,它是目前我们用来模拟光的视觉效果的最好的模型。基于物理的渲染强烈遵循渲染方程的一个更专门的版本,即反射方程。要正确理解PBR,首先要对反射率方程建立坚实的理解:反射率方程一开始看起来让人望而生畏,但当我们仔细分析它时,你会发现它慢慢开始有意义了。为了理解这个方程,我们必须深入研究辐射测量学。辐射测量是测量电磁辐射,包括可见光。有几种辐射量可以用来测量表面和..翻译 2020-07-14 10:32:49 · 557 阅读 · 0 评论 -
PBR理论(一)
PBR,或者更常见的基于物理的渲染,是一组渲染技术的集合,这些渲染技术或多或少基于与物理世界更接近的基本理论。由于基于物理的渲染旨在以一种物理上合理的方式模拟光,因此与我们的原始照明算法(如Phong和Blinn-Phong)相比,它通常看起来更真实。它不仅看起来更好,因为它非常接近实际物理,我们(尤其是艺术家)可以根据物理参数编写表面材料,而不必求助于廉价的技巧和调整来使灯光看起来正确。基于物理参数编写材质的一个更大的优点是,无论照明条件如何,这些材质都会看起来正确;有些在非PBR管线中则是不正确的。翻译 2020-07-13 22:28:29 · 2924 阅读 · 0 评论 -
Bloom 未完成
openGL高级光照部分目录见openGL高级光照部分目录种方法是使其发光;然后光线在光源周围流动。这有效地给观者一种错觉,这些光源或明亮的区域非常明亮。这种轻微流动或发光效果是通过称为Bloom的后处理效果实现的。Bloom为场景中所有明亮的区域提供类似辉光的效果。下面是带有和不带发光的场景示例(图片由Epic Games提供):Bloom提供了关于物体亮度的明显视觉线索。当以一种微妙的方式完成时(有些游戏根本无法做到),Bloom会显著提高场景的照明度,并允许产生大量的戏剧性效果。..翻译 2020-07-13 22:11:16 · 229 阅读 · 0 评论 -
HDR
openGL高级光照部分目录见openGL高级光照部分目录默认情况下,当存储到帧缓冲区时,亮度和颜色值在0.0和1.0之间。这句话一开始看起来很无辜,却让我们总是在这个范围内的某个地方指定光和颜色值,试图使它们适合场景。这个方法很好,而且效果不错,但是如果我们走在一个非常明亮的区域,有多个明亮的光源,总的和超过1.0,会发生什么呢?答案是,所有亮度或颜色和大于1.0的片段都被限制为1.0,这看起来不太好看:由于大量片段的颜色值被钳制为1.0,每个明亮片段在大区域具有完全相同的白色值,因此会丢..翻译 2020-07-13 20:04:34 · 345 阅读 · 0 评论 -
Normal Mapping (一)
openGL高级光照部分目录见openGL高级光照部分目录我们所有的场景都是用网格填充的,每个网格都由数百个或数千个三角形组成。我们通过在这些平面三角形上包装二维纹理来增强真实感,隐藏了多边形只是很小的平面三角形的事实。纹理有帮助,但是当你仔细观察网格时,仍然很容易看到底层的平面。然而,大多数现实生活中的表面并不是平坦的,并且显示出很多(凹凸不平)的细节。例如,以砖表面为例。砖的表面是一个相当粗糙的表面,而且显然不是完全平坦的:它含有凹陷的水泥条纹和许多细密的小孔和裂缝。如果我们在一个明亮的场景..翻译 2020-07-13 14:28:05 · 381 阅读 · 0 评论 -
Point Shadows(二)
openGL高级光照部分目录见openGL高级光照部分目录PCF由于全向阴影贴图基于与传统阴影贴图相同的原理,因此它也具有相同的分辨率相关伪影。如果你放大足够近,你可以再次看到锯齿状的边缘。通过过滤片段位置周围的多个样本,并对结果进行平均,百分比闭合滤波(PCF)允许我们平滑这些锯齿状边缘。如果我们使用上一章中相同的简单PCF过滤器并添加第三维度,我们可以得到:float shadow = 0.0;float bias = 0.05; float samples = 4.0..翻译 2020-07-12 16:26:37 · 340 阅读 · 0 评论 -
Point Shadows(一)
在上一章中,我们学习了使用阴影贴图创建动态阴影。它工作得很好,但它主要适用于平行光(或聚光灯),因为阴影只在光源的方向生成。因此,它也被称为方向阴影映射,因为深度(或阴影)贴图仅从灯光所观察的方向生成。本章将着重于在周围所有方向上生成动态阴影。我们使用的技术非常适合点光源,因为真实的点光源会向各个方向投射阴影。这种技术被称为点(光)阴影,或者更以前称为全向阴影贴图。本章建立在上一章阴影映射的基础上,因此除非您熟悉传统的阴影映射,否则建议您先阅读阴影映射一章。该技术主要类似于方向阴影映射:我们从灯翻译 2020-07-12 10:36:47 · 270 阅读 · 0 评论 -
Shadow Mapping (2)
openGL高级光照部分目录见openGL高级光照部分目录改进阴影贴图我们设法使阴影映射的基础工作,但正如你所能做到的那样,由于与阴影映射相关的一些(清晰可见的)工件,我们还需要修复。我们将在下一节集中讨论修复这些工件。暗疮很明显,与之前的图像相比有些问题。更近距离的变焦显示了一个非常明显的云纹图案:我们可以看到地板四边形的大部分以交替的方式呈现出明显的黑色线条。此阴影映射伪影称为阴影痤疮,可以通过以下图像进行解释:由于多个阴影碎片距离贴图的深度相对较远,因此它们与贴图的距离..翻译 2020-07-11 22:07:19 · 221 阅读 · 0 评论 -
Shadow Mapping (1)
openGL高级光照部分目录见openGL高级光照部分目录阴影是由于遮挡而缺少灯光的结果。当一个光源的光线没有击中一个物体,因为它被其他物体挡住了,这个物体就处于阴影中。阴影为照亮的场景添加了大量的真实感,使观看者更容易观察对象之间的空间关系。它们给我们的场景和物体以更大的深度感。例如,请查看具有和不包含阴影的场景的以下图像:你可以看到,有了阴影,物体之间的关系变得更加明显。例如,一个立方体漂浮在其他立方体之上的事实,只有当我们有阴影时才真正明显。阴影的实现有点棘手,特别是在当前的实时(..翻译 2020-07-11 09:30:02 · 286 阅读 · 0 评论 -
Gamma Correction
openGL高级光照部分目录见openGL高级光照部分目录一旦我们计算出场景的最终像素颜色,我们就必须在监视器上显示它们。在数字成像的旧时代,大多数显示器是阴极射线管(CRT)显示器。这些显示器的物理特性是输入电压的两倍不会产生亮度的两倍。将输入电压加倍后,亮度将达到大约2.2的指数关系,即监视器的伽马值。这恰好(巧合地)也与人类测量亮度的方式密切匹配,因为亮度也以类似的(逆)幂关系显示。为了更好地理解这一切意味着什么,请看下图:在人眼看来,顶行看起来像是正确的亮度比例,将亮度加倍(例如从0..翻译 2020-07-10 22:37:40 · 530 阅读 · 0 评论 -
LearnOpengl 高级光照目录
openGL高级光照部分目录 见learnOpenGL在线教程是目前可以说最好的OpenGL新特性的教程版本,可编程管线极大增加了灵活性。但是高级光照部分的中文版翻译的有问题,也很久没有再版了,这里我将自己翻译总结一下高级光照部分的内容。...原创 2020-07-10 21:16:29 · 1926 阅读 · 1 评论 -
《学一辈子光线追踪》 十 你的余生+极简后记
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术这本书的目的是显示一种组织基于物理渲染器的采样方法的所有数学i的细节。现在你可以探索很多不同的潜在途径。如果你想探索蒙特卡罗方法,可以研究双向和路径间隔的方法,比如Metropolis。概率空间不是立体角,而是路径空间,路径是高维空间中的多维点。不要让这吓到你——如果你能用一个数列来描述一个物体,数学家称它为所有可能的数列空间中的一个点。那不只是为了作秀。一旦你得到了这样一个干净的抽象,你的代码也可以变得干净。干净的抽象是编程的全部!如果你想做电..原创 2020-06-20 21:11:19 · 580 阅读 · 0 评论 -
《学一辈子光线追踪》 十 完成pdf管理
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术到目前为止,我已经使用color函数创建了两个硬编码的pdf:1、与光的形状有关2、与法向量和曲面类型相关的p1()我们可以将关于光的信息(或者我们想要采样的任何东西)传递到颜色函数中,我们可以向材质函数请求pdf(我们必须对它进行检测)。我们也可以请求hit函数或material类来提供是否有镜面反射向量。我们要考虑的一件事是像上漆的木材一样的材料,部分是理想的镜面(抛光)和部分漫反射(木材)。某些渲染器使材质生成两条光线:一条镜面反射..原创 2020-06-20 20:49:20 · 586 阅读 · 0 评论 -
《学一辈子光线追踪》 八点五 和 九 混合密度程序跟踪解读 加 一些架构决策
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术我们从 color 函数开始: if (depth < 50 && rec.mat_ptr->scatter(r, rec, albedo, scattered, pdf_val)) { ........ } else { return emitted; }当采样光线已经递归到50次或者打到光源时,返回emitted。如果小于50次时执行scattered程序,产生一个散射方向以及..原创 2020-06-20 02:55:00 · 438 阅读 · 0 评论 -
《学一辈子光线追踪》 八 混合密度
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术我们使用了一个与余弦θ相关的pdf和一个与光采样相关的pdf。我们想要一个总的pdf来结合这些pdf。一个常见的概率工具是把密度混合来形成一个混合密度。pdf的任何加权平均值都是pdf。例如,我们可以平均这两种密度:pdf_mixture(direction) = ½ pdf_reflection(direction) + ½ pdf_light(direction)我们该如何编写代码来实现这一点?有一个非常重要的细节,使这不如人们期望的那么容易..原创 2020-06-20 02:15:07 · 513 阅读 · 0 评论 -
《学一辈子光线追踪》 七 直接采样光
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术几乎均匀地在方向上采样的问题是,光的采样率不超过其他不重要的方向的采样率。我们可以使用阴影光线并分离出直接照明。但是,作为替代方法,我只会发射更多的采样光线到光源上。我们以后可以用它来向我们想要的任何方向发射更多的光线。很容易选择一个指向灯光的随机方向;只需在灯光上选择一个随机点并向该方向发送光线即可。但我们也需要知道pdf(方向)。那是什么?对于a区域的光,如果我们在该光上均匀采样,则该光表面上的pdf为1/a。但定义方向的单位球体区域上的pdf是..原创 2020-06-19 17:48:19 · 1003 阅读 · 0 评论 -
《学一辈子光线追踪》 六 正交基
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术在最后一章中,我们开发了生成与日晷相对的随机方向的方法。我们要做的是基于任意曲面的法向量。正交正规基(ONB)是三个相互正交的单位向量的集合。笛卡尔xyz轴就是这样的一个ONB,我有时忘记了它必须坐在某个真实的地方,有真实的方向,才能在真实世界中有意义,而在虚拟世界中有一些虚拟的地方和方向。图片是相机和场景相对位置/方向的结果,只要相机和场景在同一坐标系中描述,一切都是可以的。假设我们有一个原点o和笛卡尔单位向量x/y/z。当我们说一个位置是(3,-..原创 2020-06-18 20:05:00 · 733 阅读 · 0 评论 -
《蒙特卡洛光线追踪》 随机方法 超详分析(数学+程序预警)
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术上一节说过,结束后会单独写一节关于前面所有知识的梳理和总结。这一节不可能会特别短,但很可能会特别长,因为以前的程序都写完了,这一节基本上不会写程序,而全部都是原理的详细分析(超级详细!)。就让我们做好心理准备,开始走入MC的世界。一、MC与积分首先还是我们要进行的积分:结果就是下图中蓝色区域的面积:其实也很好使用MC方法,产生一堆横坐标0-2,纵坐标0-4之间的随机数,然后判断其在蓝色区域还是黄色区域,然后根据比值计算出蓝色区..原创 2020-06-18 03:49:10 · 3017 阅读 · 0 评论 -
《学一辈子光线追踪》 五 产生随机方向
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术这一节结束后,我会对前面的关于概率和光线追踪的知识进行一下总结和归纳。在本章和下两章中,让我们加强理解和工具,找出哪个康奈尔盒子的渲染结果是正确的。我们先来看看如何生成随机方向,但为了简化,我们假设z轴是曲面法向,theta是与法向的夹角。我们将在下一章中把它们定向到曲面法向量。我们只讨论关于z的旋转对称分布,所以p(direction) = f(theta)。如果你有学过高级微积分,你可能记得在球坐标系的球面上 dA = sin(theta)*dt..原创 2020-06-17 03:44:17 · 735 阅读 · 1 评论 -
《学一辈子光线追踪》 四点五 代码对比分析
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术先粘贴一下以前的lambertian代码:class lambertian :public material {public: lambertian(texture*a):albedo(a){} virtual bool scatter(const ray& r_in, const hit_record& rec, vec3& attenuation, ray& scattered)const { vec3..原创 2020-06-16 16:38:29 · 477 阅读 · 0 评论 -
《学一辈子光线追踪》 四 重要性采样材料
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术在接下来的两章中,我们的目标是利用我们的程序向光源发送一束额外的光线,这样我们的图片噪声就不会太多了。假设我们可以使用pdf pLight(direction) 向光源发送一束光线。假设我们有一个与s相关的pdf,我们称之为pSurface(direction)。pdf 的一个优点是,可以使用它们的线性混合来形成混合密度,这也是pdf。例如,最简单的方法是:p(direction) = 0.5*pLight(direction) + 0.5*pS..原创 2020-06-16 15:10:15 · 819 阅读 · 0 评论 -
《学一辈子光线追踪》 三 光散射
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术这一小节全都是文字,但是比较重要。虽然之前在三维渲染 光能辐射基础三维渲染 BRDF双向反射分布函数三维渲染 相位函数三维渲染 体照明模型这几个章节也都很详细的描述过光学了,这里从概率的方面再进行描述。在这一章中,我们实际上不会实现任何东西。我们将在第四章中为我们的节目设置一个大的灯光变化。我们上一本书中的程序已经散射了表面或体积的光线。这是光与表面相互作用的常用模型。一种自然的建模方法是概率。首先,光线被吸收了吗?光散射..原创 2020-06-16 02:53:13 · 700 阅读 · 0 评论 -
《学一辈子光线追踪》 二点五五 在球面方向的MC积分
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术竟然有两个第二章,我也是很无奈啊。原创 2020-06-15 15:15:41 · 548 阅读 · 0 评论 -
《学一辈子光线追踪》 二点五 一维MC积分(二)
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术我们现在可以对以前的积分进行采样I = integral(x^2, 0, 2)我们需要解释x的pdf的不均匀性。如果我们样本太多,我们应该降低权重。pdf 是一个很好的度量方法,可以用来衡量正在进行的抽样工作有多少。所以权重函数应该与 1/pdf 成正比。实际上是1/pdf:#include <math.h>#include <stdlib.h>#include <stdio.h>#include ..原创 2020-06-15 01:24:14 · 462 阅读 · 0 评论 -
《学一辈子光线追踪》 二 一维MC积分(一)
蒙特卡洛光线追踪技术系列见蒙特卡洛光线追踪技术积分是关于计算面积和体积的,所以如果我们想让第1章最大限度地混淆,我们可以将它以一个积分的形式组织起来。但有时积分是最自然、最干净的表达方式。渲染常常是这样一个问题。让我们看一个经典的积分:在计算机科学符号中,我们可以这样写:I = area( x^2, 0, 2 )我们也可以这样写:I = 2*average(x^2, 0, 2)我们也可以这样写:这表明了一种MC方法:#include <math.h>#..原创 2020-06-15 00:30:42 · 1206 阅读 · 0 评论