八叶一刀·无仞剑

万物流转,无中生有,有归于无

导航

随笔分类 -  Computer Graphics

摘要:最近有一个需求是已知一个变换矩阵,如何根据该矩阵获取它的位移、旋转和缩放参数? 这个问题当初书里没直接讲,但是可以通过已有的知识推导出来。 首先我们知道,图形学中的变换一般有三种:缩放、旋转和位移,它们均可以用4*4的方阵予以表达。 比如缩放矩阵的形式如下: \(\LARGE \begin{bmat 阅读全文

posted @ 2020-12-27 20:33 闪之剑圣 阅读(1793) 评论(0) 推荐(0)

摘要:之前的文章里,我们介绍了实现IBL漫反射的方法。在这篇文章里我们更近一步,介绍基于镜面反射的IBL。 我们来看看我们要预计算的积分: \(\LARGE L_o(p, \omega_o)=\int_\Omega f_r(p,\omega_i,\omega_o)L_i(p,\omega_i)n \cdo 阅读全文

posted @ 2020-10-24 15:30 闪之剑圣 阅读(346) 评论(0) 推荐(0)

摘要:在之前的文章里面,我们介绍了Cook-Torrance BRDF,这是一种常见的用于表现PBR的光照模型。今天我们想要解决的问题是,在该BRDF下,给定物体材质的粗糙度(roughness),该如何生成符合该粗糙度的采样方向呢(这对于路径追踪采样生成入射光、IBL算法中采样计算radiance都很重 阅读全文

posted @ 2020-10-09 21:10 闪之剑圣 阅读(3360) 评论(4) 推荐(0)

摘要:在进行采样的过程中,经常需要生成随机数,为了能够得到一个尽可能好的采样结果,均匀的随机数是非常重要的。下图是我利用伪随机数采样得到的一系列点,可以看到其实还是不够均匀的: 因此,如何得到一组分布均匀的随机数就成为了一个问题,本文所介绍的低差异序列技术就尝试解决它。 本文主要参考自:https://z 阅读全文

posted @ 2020-09-11 17:14 闪之剑圣 阅读(2179) 评论(0) 推荐(1)

摘要:在之前的文章里,我们介绍了直接光照的PBR的实现。今天,我们将介绍基于Image Based Lighting(IBL)技术的PBR间接光照的实现方法。 IBL技术是是一类光照技术的集合,它认为可以将周围的环境贴图看成是构成物体间接光照的来源。它环境贴图的每个像素视为光源,在渲染方程中直接使用它。这 阅读全文

posted @ 2020-08-31 19:46 闪之剑圣 阅读(937) 评论(0) 推荐(0)

摘要:最近自己在研究一个问题:DX中给定一张Texture,当数据已经存在于GPU端后,应该如何做才能将纹理的数据读取到CPU中? 要解决这个问题,首先应当知道DirectX中对于一个Texture的描述,这里我们以2DTexture为例,描述它的数据结构如下: typedef struct D3D11_ 阅读全文

posted @ 2020-08-26 21:54 闪之剑圣 阅读(1864) 评论(0) 推荐(0)

摘要:之前介绍了有关PBR技术的一些理论知识,今天来讲一下利用代码如何实现相应的光照算法。 我们提到,我们最终要求解的其实就是这么一个积分: 积分中kd的部分代表光照所产生的漫反射,ks的部分代表光照所产生的高光反射。如果充分考虑间接光照的效果(也就是从光源发射出光线后,不断碰撞反射,最终进入人眼),那这 阅读全文

posted @ 2020-08-16 17:12 闪之剑圣 阅读(801) 评论(0) 推荐(0)

摘要:最近策划希望给游戏中的视频增加一个类似抖音的滤镜特效,如下所示: 可以看到,有条纹状和点状的干扰信息时不时出现在视频中。 我在网络上找了一下,还真的没有找到有人实现过这个滤镜的shader,因此只能靠我自己分析滤镜内容来反向推shader了。 首先我们可以发现,在这个特效中,干扰的效果都是呈现为方块 阅读全文

posted @ 2020-08-11 20:39 闪之剑圣 阅读(424) 评论(0) 推荐(0)

摘要:Cosine-Weighted是一种对球面进行采样的算法,常用于路径追踪时对入射方向进行采样等领域。在介绍该算法之前,我们先来复习一下概率论的知识。 ###随机变量之间PDF的转换 假设有两个随机变量X和Y,它们的PDF为$p_x(x)$和$p_y(y)$,假设我们已知$p_x(x)$以及Y=f(X 阅读全文

posted @ 2020-08-05 20:14 闪之剑圣 阅读(2187) 评论(0) 推荐(0)

摘要:上一篇文章我们讲了Cook-Torrance BRDF模型,我们知道它由三个部分组成:法向分布函数、几何函数以及菲涅尔(Fresnel)公式。这次我们讲菲涅尔公式。 当光线碰撞到一个表面的时候,菲涅尔公式会返回被反射的光线所占的比例,根据能量守恒定律我们就可以相应地计算出折射的光线所占比。这种反射占 阅读全文

posted @ 2020-07-22 21:18 闪之剑圣 阅读(6877) 评论(0) 推荐(0)

摘要:之前我们讲到BRDF定义了入射光的能量到某个方向出射光的能量之比,是一种反映物体材质的重要属性。在PBR技术中,常用的BRDF是Cook-Torrance模型,今天我们来对它进行讲解。 Cook-Torrance BRDF包含了漫反射和高光两个部分: \(\LARGE{f_r=k_d f_{lamb 阅读全文

posted @ 2020-07-22 18:01 闪之剑圣 阅读(2425) 评论(0) 推荐(0)

摘要:最近在学习LearnOpengl,经过不懈的努力,终于阅读到了PBR的章节,接下来会写一系列博客来总结自己从中学到的理论,并尝试实现其中的算法。 PBR,全称为Physically Based Rendering,是一套尝试用物理的方式来描述现实中渲染效果的技术。相比于前人提到的Phong光照模型, 阅读全文

posted @ 2020-07-19 00:14 闪之剑圣 阅读(2839) 评论(0) 推荐(0)

摘要:屏幕空间环境光遮蔽(Screen Space Ambient Occlusion,SSAO),是一种在计算机图形学中实现近似环境光屏蔽效果的渲染技术。离线渲染中,在渲染一个物体A时,如果它的周围有一些别的物体B、C等,由于它们遮挡了光线,因此最终渲染出的物体A会显得有一些暗。这种现象在实时渲染就很难 阅读全文

posted @ 2020-07-01 17:31 闪之剑圣 阅读(2788) 评论(0) 推荐(0)

摘要:上文提到,我们介绍了辐射度量学中的常见概念:辐射能量、辐射通量、辐射照度、辐射强度、辐射亮度,并在介绍辐射强度的时候还引出了立体角的概念。 了解了辐射亮度和辐射强度,我们就可以引出BRDF(Bidirectional Reflectance Distribution Function,中文翻译为双向 阅读全文

posted @ 2020-06-23 20:52 闪之剑圣 阅读(958) 评论(0) 推荐(1)

摘要:之前在学习路径追踪的时候没有去细究里面的光学理论,最近趁着有时间把闫令琪老师的计算机图形学课程(万万没想到在B站上也可以学习!)辐射度量学的内容又仔细学习一遍,也算是打下了路径追踪的理论基础。 辐射度量学提供了一组基本的物理量用来测量光辐射,这些物理量也就成为了计算机图形学中重要的基本概念,如下表所 阅读全文

posted @ 2020-06-15 20:26 闪之剑圣 阅读(2347) 评论(0) 推荐(0)

摘要:最近在做一个游戏需求中用到了和几何计算有关的知识,需要去计算射线和一个平面的交点,计算方法在这里记录一下。 首先定义一条射线:起始点p0和方向d,那么射线上任意一点p=p0 + td。 平面的定义则通过一个法向n和一个顶点来实现,对于平面上的所有点p,p·n = d,d是一个常数。 那么要计算它们之 阅读全文

posted @ 2020-06-09 21:03 闪之剑圣 阅读(3216) 评论(0) 推荐(2)

摘要:说起Tone Mapping,就不能不提HDR。HDR(High Dynamic Range, 高动态范围)是一种颜色范围,在传统的RGB中,每一个通道的颜色都是从属于[0,1]之间的浮点数范围,0代表纯黑,1代表纯白,超过了1仍然会归为白色;但是在现实光照方程中却没有这个限制,光的强度可以设置为任 阅读全文

posted @ 2020-06-05 11:32 闪之剑圣 阅读(6153) 评论(0) 推荐(0)

摘要:NormalMap是渲染过程中常见的一种贴图。它的作用是提供一张记录了模型法向分布的贴图。这样一来,可以用更少的面片数,获得更好的表现细节。下图展示了使用NormalMap的效果: 在实际读取具体顶点normal计算的时候会遇到一个问题:NormalMap中存储的法向信息是存储在Tangent空间里 阅读全文

posted @ 2020-05-27 21:42 闪之剑圣 阅读(417) 评论(0) 推荐(0)

摘要:ShadowMap是实时渲染中实现阴影效果一种常用的方法,它的基本思路是创建一个光源视角下的深度图;然后在渲染时,将渲染frag的深度和深度图对应的深度进行比较,若frag的深度比深度图的深度值大,则说明它是在阴影下的(有一个物体在它前面遮挡了光线),否则不需要渲染阴影。 但是在实际的实现中,会有一 阅读全文

posted @ 2020-05-20 21:25 闪之剑圣 阅读(829) 评论(0) 推荐(0)

摘要:Phong光照模型是计算机图形学中一种非常基础的光照算法,它的高光部分计算公式如下: 其中viewDir是相机坐标和物体坐标之差,reflectDir是光照方向与物体法向的反射,如下图所示: 但是这种计算方式有一个问题,如下图所示: 当相机和光照处于同一侧时,此时得到的反射向量reflectDir和 阅读全文

posted @ 2020-05-06 20:51 闪之剑圣 阅读(2302) 评论(0) 推荐(0)