自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 软光栅个人项目介绍,编写思路及后期整理

软光栅项目主要是在学习了计算机图形学相关知识之后,主要是Games101,202,tiny shader等教程,然后借鉴了很多前辈们的思路和框架逻辑编写的。渲染帧率来说,blinn-phong渲染维持在80帧左右.PBR渲染维持在12帧左右目前没有多线程和SIMD,后序添加后应该帧率会大幅提高。渲染结果展示:Blinn-Phong着色:莫娜泳装符华(改模配布来自B站MMD up主)三月七(素材来源同上)银狼(素材同上)希儿旗袍琪亚娜符华PBR渲染(包括天空盒)结

2023-07-15 00:28:22 764

原创 计算机图形学一:数学基础

适用于列向量的4x4矩阵形式这里的x,y,z与平移相关,分别是x,y,z轴的平移量。a,b,c,d,e,f,g,h,i与线性变换相关。l,m,n与透视投影变换相关。点乘的数学定义:点乘的几何意义:两个单位向量之间夹角的余弦值。

2023-08-07 22:26:38 324

原创 GAMES104里渲染等一些剩下的问题

比如几何形状的一条边,只要不是严格的横平竖直的话,这条边在屏幕上一个像素一个像素覆盖过去,就一定会产生锯齿状(zigzag)的效果。字体就是这样的一种情况。

2023-07-28 02:38:45 1046

原创 计算机图形学十三加速结构

在上一节中,我们介绍了whited-style 光线追踪的原理,以及实现细节。相比与光栅化中所使用的blinn-phong模型,光线追踪显著提升了图像质量,但是随之而来的问题是渲染速度过慢。因为在判断光线与场景交点的时候,需要进行所有三角形面与光线求交,而这是仅仅对于一个像素来说的。像素数量三角形面数量弹射次数这么多次,如下图这样一个场景,一共就有10.7M的三角形面,你可以想象一下一共需要多少次求交运算吗?因此必须要寻求一些办法来加速光线追踪的过程!

2023-07-28 00:29:40 229

原创 计算机图形学十二光线追踪原理及实现细节

本篇文章主要分两个部分,第一部分会从为什么需要从光线追踪入手,一步步介绍Whitted-style光线追踪的原理,第二部分会具体介绍一些光线追踪的细节,包括光线的表示,光线与物体的求交,以及反射折射方向的计算。

2023-07-28 00:28:34 224

原创 计算机图形学十四路径追踪与渲染方程

利用路径追踪我们可以实现比whitted-style ray tracing更好的全局光照(GI)效果。它的理论基础是渲染方程,最开始由吉姆卡吉亚(Jim Kajiya)提出。渲染方程是在物理的基础上定义的,利用它我们可以实现基于物理的渲染(PBR),效果会比以往的blinn-phong等模型看上去更加真实。可以说在图形学中,要实现真实的渲染效果就是求解这个方程。那么渲染方程到底是个啥呢?公式如下:接下来我们一点点的进行剖析,首先先从辐射度量学开始入手,即理解渲染方程中的。

2023-07-28 00:26:25 181

原创 计算机图形学十五菲涅尔方程

了解过辐射度量学应该知道这里比较的是辐射率(Radiance)的大小,通过菲涅尔效应我们不难发现,当入射光方向接近垂直表面时,大部分的能量会被折射,所以我们能看清水底的东西。我们去公园的池塘喂鲤鱼,当爆米花丢的比较近的时候,我们可以看见水底下成群的鲤鱼在抢吃的。我们在坐公交车的时候,从身边的窗户往外看,可以清晰的看清楚车外的世界,但是当我们去看离得比较远的玻璃的时候,往往会看见很多车内的倒影,例如司机和别的乘客。,我们可以看见更多折射过来的光(水底的鱼,玻璃外的东西)。

2023-07-28 00:25:53 190

原创 LUMEN技术要点总结

渲染阴影的时候,需要渲染一帧shadow map,shadow map的渲染和正常的渲染不同,正常的渲染是从当前相机的视角去渲染,而shadow map是从光源的位置和视角去渲染。因此,如果我们从光源的位置和视角,把整个场景正常渲染一遍,当只有直接光照的时候,所有被光照照亮的物体表面都会渲染到我的map里面。

2023-07-28 00:24:48 867 1

转载 从4行代码看右值引用(转)

通过4行代码我们知道了什么是右值和右值引用,以及右值引用的一些特点,利用这些特点我们才方便实现移动语义和完美转发。C++11正是通过引入右值引用来优化性能,具体来说是通过移动语义来避免无谓拷贝的问题,通过move语义来将临时生成的左值中的资源无代价的转移到另外一个对象中去,通过完美转发来解决不能按照参数实际类型来转发的问题(同时,完美转发获得的一个好处是可以实现移动语义)。

2023-07-26 15:16:22 48

原创 GAMES104复习总结,课堂提炼(一)

GAMES104笔记

2023-07-22 18:12:31 622

原创 Leetcode300题 最长递增子序列详解

关键思想其实就是尽可能的使数据上升的更加慢,在ans内存储的递增子序列,如果新来的数字是递增的,那样的话直接加在后面就可以了。要不然的话需要找到当前元素的lower_bound的位置,之后需要在当前位置加上该位置的值,ans[pos] = nums[i],同时maxLen.push_back(pos+1)。思想:最长子序列是上升最慢的,我们需要让序列上升的尽可能的慢。lower_bound(begin,end,val)包含在中,它的作用是返回有序数组begin,end中第一个大于等于val的元素的迭代器。

2023-07-10 20:57:15 109

原创 GPU硬件架构以及运行机制笔记

本文是对向往大神的文章的一个笔记。想阅读原文章移步博客园搜索向往原文章比较长,这是一个精简和自己的一些理解这篇文章要带着下面的问题去看1、GPU是如何与CPU协调工作的?2、GPU也有缓存机制吗?有几层?它们的速度差异多少?3、GPU的渲染流程有哪些阶段?它们的功能分别是什么?4、Early-Z技术是什么?发生在哪个阶段?这个阶段还会发生什么?会产生什么问题?如何解决?5、SIMD和SIMT是什么?它们的好处是什么?co-issue呢?6、GPU是并行处理的么?

2023-06-04 22:22:04 1480

原创 LearnOpenGL笔记(三)模型加载

由于Assimp的数据结构保持不变,不论导入的是什么种类的文件格式,它都能够将我们从这些不同的文件格式中抽象出来,用同一种方式访问我们需要的数据。当使用Assimp导入一个模型的时候,它通常会将整个模型加载进一个场景(Scene)对象,它会包含导入的模型/场景中的所有数据。Assimp会将场景载入为一系列的节点(Node),每个节点包含了场景对象中所储存数据的索引,每个节点都可以有任意数量的子节点。

2023-05-11 22:50:25 233

原创 LearnOpenGL笔记(二)光照

现在我们已经把法向量从顶点着色器传到了片段着色器。可是,目前片段着色器里的计算都是在世界空间坐标中进行的。所以,我们是不是应该吧法向量也转换为世界空间坐标?基本正确,但是这不是简单地把它乘以一个模型矩阵就能搞定的。意思是法线从模型空间转到世界空间坐标比较复杂。困难的地方:首先,法向量只是一个方向向量,不能表达空间中的特定位置。同时,法向量没有齐次坐标(顶点位置中的w分量)。这意味着,位移不应该影响到法向量。

2023-05-02 22:48:30 315

原创 LearnOpenGL笔记(一)入门

learnopengl的入门简介。包括创建窗口,绘制三角形,实现FPS摄像机,纹理,着色器

2023-05-01 18:09:49 562

原创 Cherno C++笔记

很久前在油管上看的大神cherno的c++教学视频,现在已经更新到了100P左右了。最近这段时间发现自己过去的时间里其实学了很多东西,但是一直没有时间总结,所以更新总结一下,也给自己梳理一下所学知识。关于cherno的笔记网络上有很多,我在写自己的笔记的时候因为时间比较久远,有些知识点会遗忘,也会一定参考别人的笔记,会在文末进行标注。1.欢迎来到C++使用c++的主要原因是可以直接控制硬件。c++写代码,代码被送去编译器进行编译,编译器会将代码输出为目标平台的机器码。机器码就是CPU实际上在运行的指令集。

2023-03-28 23:02:01 1785

原创 工业界实时渲染方法简略------计算机图形学高质量实时渲染(十三)

A Glimpse of Industry Solution我们可以看到ground truth和svgf结果非常接近,这说明svgf效果很不错以图中的A、B相互贡献为例,还记得我们上节课说过的:如果两者之间的深度差异小,则贡献权值大,反之两者深度差异大,则贡献权值小。我们来分析一下公式的各个部分:这是SVGF用来判断深度贡献权值的公式,从公式中可以看出:由于exp(x)是返回e的x次方,由于公式返回的是-x次方,所以差异越大,贡献越小。但是分母部分多了个 \sigma_{z} ,多了个 |\Delt

2023-02-13 01:11:17 305

原创 实时光线追踪(续)------计算机图形学高质量实时渲染(十二)

Recall:filtering== convoluation(101中说过,滤波==卷积)我们想要求一个像素周围一圈像素对自己的加权贡献,就相当于我们对2D函数F和高斯核在2D上进行一个卷积,由于2D高斯核可以拆分为两个1D的高斯核相乘,我们发现两个1D的高斯核分别与X和Y有关,因此当我们先做对X的积分时,Y是不参与的,所以把与Y相关的先拿出去,也就是先对X积分得到X积分后的结果,再在这个结果上对Y进行积分。但是这种做法理论上只适用于高斯对于双边滤波,两个高斯相乘,X和Y不容易拆分出来。

2023-02-13 00:51:13 134

原创 实时光线追踪------计算机图形学高质量实时渲染(十一)

左边为上一帧,右边为当前帧,我们可以看见本来后面箱子后的内容是被遮挡住的,但是推走后变成未被遮挡住,此时我们去求箱子后遮挡部分的两帧屏幕对应位置会发现,右边的蓝点所显示的对应位置为左边的蓝点,这里是没有出错的,因为在屏幕空间确实对应的是蓝点,只是无法显示遮挡后的内容,这是屏幕空间的问题,如果进行线性blending的话肯定会问题,这就是disocclusion(不遮挡)的问题。如果我们在任何时候都把上一帧的结果,先给拉近当前帧的结果不就使得两者之间的颜色很相似,从而弱化了这一不正确的现象吗?

2023-02-13 00:34:47 477

原创 基于物理的实时渲染(表面模型续)------计算机图形学高质量实时渲染(十)

NPR是一个Art Driven问题因此我们要做出什么样的效果是artist们决定的,我们要思考和实现的是如何做出这种效果:比如边界因此在这里沟通是最重要的,需要及时与美工他们沟通。NPR做的效果好与坏,其实根本上取决于photorealistic模型,而不是后期的各种处理.

2023-02-13 00:10:46 257

原创 基于物理渲染的实时渲染材料(表面模型) ------计算机图形学高质量实时渲染(九)

Real-Time Physically-Based Materials(Surface models)LTC:在不考虑遮挡和阴影情况下做微表面模型的shading。我们首先来看一下Physically-Based Rendering 的字面意思:基于物理的渲染实时渲染在材质方面的丰富程度要远远落后于离线渲染我们将其分成两类:1.基于物体表面上定义的材质(绝大多数材质)基于物体表面又分为两种:2.基于体积上定义的材质由于光线会进入到云,烟,雾,皮肤,头发等体积里,但是在RTR中基于体积要比基于表面的困难

2023-02-12 23:33:37 520

原创 屏幕空间实时全局光照(续)------计算机图形学高质量实时渲染(八)

SSR仍然是一种在RTR中实现GI的方式;是在屏幕空间做光线追踪不需要知道3D空间中的三角形,网格,加速结构等3D信息,只需要在屏幕空间中已有的信息,也就是从camera看去场景的得到的这样一层“壳”。由于我们认为它是ScreenSpace Raytracing,我们考虑的是任何光线(不单单是反射光)与场景中这层壳去做求交。找到交点后,算出对Shading Point的贡献值。我们用生活中的一些实例来看:在这个海景房中,地面会反射出窗户,椅子之类场景中的信息。

2023-02-12 22:58:08 313

原创 屏幕空间实时全局光照------计算机图形学高质量实时渲染(七)

LPV是把所有的次级光源发出的Radiance传播到了场景中的所有位置,只需要做一次从而让场景中的每个voxel都有自己的radiance,但是由于LPV使用的3D网格特性,并且采用了SH进行表示和压缩,因此结果并不准确,而且由于使用了SH因此只能考虑diffuse的,但是速度是很快的。VXGI把场景的次级光源记录为一个层次结构,对于一个shading point,我们要通过corn tracing 找到哪些次级光源能够照亮这个点。

2023-02-12 22:38:02 225

原创 实时全局光照(3D空间)------计算机图形学高质量实时渲染(六)

或者这样理解,我们最后得到的是不同方向上的radiance,自然而然是一个向量,我们将lighting投影到SH上得到的是一个向量,只有向量x矩阵,得到的结果才是向量,因此这里只能是矩阵。可想而知,这样的话将会产生巨大的存储量。正常情况下人们会用多少阶的基函数呢?基函数个数:9个(3阶)16个(4阶)25个(5阶)

2023-02-12 21:13:00 118

原创 实时环境光照(预计算辐射传输)------计算机图形学高质量实时渲染(五)

f(w)可以是任何一个函数,我们说过基函数可以重建任何一个球面函数,那么我们这里的f(w)就是环境光照,由于环境光是来自于四面八方且都有值,所以环境光照就是一个球面函数,我们可以把它投影到任何一个SH basis上,可以投影很多阶,但是只需要取前三阶的SH去恢复环境光就可以恢复出最低频的细节了,这个在下文RAVI教授的结论中有提到。图中的颜色表示的是值的大小,I=0中,越偏白的蓝色地方值越大,越黑的地方值越小,而黄色中则表示偏白的地方其绝对值大,偏黑的地方表示绝对值小,也就是蓝色表示正,黄色表示负。

2023-02-12 20:26:56 117

原创 阴影II(shadow II)------计算机图形学高质量实时渲染(四)

从图我们可以知道,以p1点为例,从o点到p1的距离为斜边,sdf(p1)是直角边,因此我们用arcsin就可以直接求出safe angle了。但是,arcsin的计算量其实是非常大的,因此再shader中我们不用反三角函数。只要sdf长度除以光线走过的距离乘一个k值,再限定到1以内,就能得到遮挡值或者说是visibility,而k的大小是控制阴影的软硬程度。我们从图中右半部分可以看出来,当k的值越大的时候,就越接近硬阴影的效果,也就是它限制了可能半影的区域。

2023-02-12 20:04:29 110

原创 阴影(shadow)------计算机图形学高质量实时渲染(三)

也就是省去了在这个范围内进行。

2023-02-12 19:32:01 293

原创 Shadow(PCF算法思路)------计算机图形学高质量实时渲染(二)

1.寻找blocker,并计算平均深度2.通过blocker深度计算fileter size3.按照PCF方式绘制软阴影PCSS本质上就是求出了阴影中需要做PCF的半影部分后再进行PCF的计算,这样动态调节了半影范围,也就是动态设置了PCF的搜索范围,这样我们的硬阴影部分清晰,软阴影部分模糊,动态的实现了不错的软阴影效果。简言之就是自适应滤波核的PCF。

2023-02-12 19:05:01 410

原创 图形学基础概念梳理以及OpenGL初识------计算机图形学高质量实时渲染(一)

1.复习计算机图形学基础2.复习GPU渲染管线3.OpenGL 和GLSL4.渲染方程5.相关微积分知识。

2023-02-04 23:47:45 251

原创 隐式曲面(代数形式,CSG,距离函数,分型几何)与显式几何

计算机图形学

2022-12-21 17:19:35 272

原创 计算机图形学十一伯恩斯坦多项式

计算机图形学

2022-12-21 11:08:32 210 1

原创 计算机图形学十贝塞尔曲线

计算及图形学 贝塞尔曲线

2022-12-20 16:14:15 1957

原创 算法刷题训练营(三)

算法刷题班整理

2022-12-19 13:54:40 31

原创 计算机图形学九重心坐标及其应用

我们令m=1-k,令n=k,就可以得到P=mA+nB (m+n=1),所以在已知AB的情况下,我们可以用m,n的坐标来表示直线上的任意一点,这也就叫做直线上的重心坐标。zt是插值点的深度,I是插值点的属性,zazbzc是插值点的深度,知道四个点的深度,和顶点的属性,还有重心坐标,插值出所求点的对应属性。还可以将顶点的其他属性,如颜色,法线,uv坐标,深度等,套重心公式插值得到三角形内任意一点。通常来说,三角形的重心坐标不需要考虑z的值,因为空间中的重心在平面上的正交投影上,重心的投影依然是三角形的重心。

2022-12-11 02:58:21 357

原创 算法刷题训练营(二)(这里用到一些堆的结构)算法中堆结构要掌握

根据分界线进行遍历,对于每个确定的分界线,遍历左边和右边的最大值,相减,将结果对maxa进行更新。3有a个,所以第一个1,可以搞定a个,第二个也可以搞定a个,,,,,,所以可以依次进行遍历,看第16个到底是哪个。上面的时间复杂度高在遍历上,我们可以直接用预处理数组来,直接去max就好了,要学会预处理数组的生成方法。给定一个数组arr,已知其中所有的值都是非负的,将这个数组看成一个容器,请返回容器最多能装多少水。在行也有序,列也有序的二维数组中,找num,找到返回true,否则返回false。

2022-12-09 22:52:06 38

原创 算法刷题训练营(一)

算法基础

2022-12-09 17:31:06 83

原创 计算机图形学八纹理映射

前言:为什么需要纹理映射?上一篇文章中,我们知道了phong着色模型,并且在只考虑漫反射的情况下,可以很轻松的用公式求出一个着色点,或者说一个像素的颜色。那么说如果我们要把一个长方体着色为白色,只需要每个点的kd值都为白色即可,也就是每个着色点的kd值都相同。但是大千世界,怎么有那么多纯色的东西呢?看下图:无论是球上的图案,还是地板上的木头的纹理都呈现了不同的颜色信息,那么在回想讲解Blinn-Phong反射模型是曾经提到过,一个点的颜色是由其漫反射系数决定的,反射什么颜色的光,人眼就能看到什么

2022-12-06 01:06:25 496

原创 计算机图形学七渲染管线和着色器Rendering Pipeline And Shader

计算机图形学基础图形渲染管线

2022-12-05 22:00:00 312

原创 计算机图形学六局部光照模型(blinn-phong反射模型)与shading

计算机图形学基础

2022-12-05 20:26:57 272

原创 计算机图形学五反走样的方法(详解)

计算机图形学抗锯齿

2022-12-04 22:48:51 800

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除