图形学
文章平均质量分 68
baixiaofei567
如果十年前没种树,那最好的时间是现在
展开
-
GAMES101图形学P13笔记(Ray Tracing1)
为什么有光线追踪?因为光栅化不能将全局效果处理的很好,比如不过光栅化很快,但是质量很低光线追踪效果好,但是很慢。光栅化一般用于实时应用,光追一般用于离线应用(电影之类的)光线光线沿直线传播光线和光线之间不会发生碰撞,各传播各的光线从光源中被发出来经过多次反射折射等,最后传入到eye中。也可以认为光路是可逆的,从eye发出感知光线可以原路返回到光源光线追踪就是在模拟光线不断弹射的过程将光线折射和反射出去所有地方用light进行计算一遍(算是否在shadow中),将所有点的着色的值加上原创 2021-06-05 01:14:41 · 267 阅读 · 0 评论 -
GAMES101图形学P12笔记(geometry3)
Loop Subdivision(loop 细分),只能用于三角形面分出更多的三角形以及让三角形的位置发生变化,使整个模型更加光滑。方法:先引入更多的三角形再将老顶点根据新生成顶点的位置得到新位置。Catmull-Clark Subdivision,可以用于不同面的细分Shadow mapping着色解决不了阴影,所以用shadow mapping来解决,但是只能做硬阴影,就是0或者1,右或者无。key:点不在阴影里就是你可以看到这个点,但是光源看不到这个点shadowmapping的两原创 2021-06-01 14:31:34 · 175 阅读 · 0 评论 -
GAMES101图形学P11笔记(geometry2)
显示几何的表示方法:point cloud(点云),用无数精确和密集的点表示一整个面or模型polygon mesh(多边形面),用三角形or多边形表示一个面,最广泛Curve(曲线):贝塞尔曲线:用一系列的控制点去定义曲线,满足曲线的某些性质,只要经过起止点如何画出贝塞尔曲线?递归找点,假设每次找两个点中间,然后将其相连,这样就每次减少一个点,最后只剩一个点,这个点就是经过的点。然后再重新找两个点的三分之一,最后只剩一个的时候也是必定经过的。枚举两个点之间的所有情况,就可以将其所有会经过原创 2021-05-27 01:45:02 · 118 阅读 · 0 评论 -
GAMES101图形学P10笔记(geometry1)
纹理的应用:环境贴图:描述环境光怎么样,将环境光存储在贴图上,可以用这个贴图来渲染别的东西圆形贴图展开可能会有扭曲问题,解决方法就是映射到立方体凹凸(法线)贴图:不一定只描述颜色,可以定义高度(相对高度),也就是纹理的高度相对于物体本身这个点的高度差可以定义复杂纹理但是不改变几何信息,我们用凹凸贴图伪造它的高度模拟凹凸效果3d噪声记录已经计算好的信息几何几何分为隐式几何和显式几何隐式几何:表示一定的关系,并不给实际的点,比如x2+y2+z^2=1,就代表一个球缺点:很难看出形原创 2021-05-26 00:53:48 · 160 阅读 · 0 评论 -
游戏开发中的抗锯齿算法
转自https://blog.csdn.net/qq_36696486/article/details/105076650https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/11%20Anti%20Aliasing/锯齿由来锯齿的来源是因为场景的定义在三维空间中是连续的,而最终显示的像素则是一个离散的二维数组。所以判断一个点到底没有被某个像素覆盖的时候单纯是一个“有”或者“没有"问题,丢失了连续性的信息,导致锯齿。场景的定义在三维空间中是转载 2021-02-19 02:07:32 · 1052 阅读 · 0 评论 -
LearnOpenGL17——立方体贴图
什么是立方体贴图简单来说,立方体贴图就是一个包含了6个2D纹理的纹理,每个2D纹理都组成了立方体的一个面,我们知道如果将一张贴图赋给一个立方体模型,那么这个立方体的六个面都显示该贴图,但是对于立方体贴图,我们就能对立方体各个面都使用不同的贴图附在立方体上,如图:每个面展示的图片都不一样。立方体贴图原理下图展示纹理映射的原理对于立方体贴图,也使用了类似的映射原理,核心是对立方体的面进行展开,处理成2D纹理,然后再进行对应的纹理映射。如图:将立方体六个面展开成平面后进行纹理映射:立方体贴图应用—转载 2021-02-19 02:07:25 · 440 阅读 · 0 评论 -
LearnOpenGL16——帧缓冲
转自https://blog.csdn.net/qq_36696486/article/details/104425880https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/05%20Framebuffers/#_2帧缓存的概念到目前位置,已经介绍了多种缓存(数据)用于写入颜色值的颜色缓冲用于写入深度信息的深度缓冲允许我们根据一些条件丢弃特定片段的模板缓冲这些缓冲结合起来叫做帧缓冲(Framebuffer)帧缓存的作用用于转载 2021-02-19 02:07:16 · 182 阅读 · 0 评论 -
LearnOpenGL15——面剔除
转载自https://blog.csdn.net/qq_36696486/article/details/104422836https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/04%20Face%20culling/什么是面剔除在绘制一个正方体时,我们能看到最多的面数是3,而看不到的面虽然被绘制计算,但却无法通过深度测试,这样就做了一倍的无意义计算,倘若能省区这些计算将大幅度提高渲染性能。环绕顺序对于一个面,要么朝向摄像机(视口),要么转载 2021-02-18 00:21:17 · 127 阅读 · 0 评论 -
LearnOpenGL14——混合以及处理半透明物体
转载自https://blog.csdn.net/qq_36696486/article/details/104409547https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/03%20Blending/#_1前言OpenGL中,混合(Blending)通常是实现物体透明度(Transparency)的一种技术。透明就是说一个物体(或者其中的一部分)不是纯色(Solid Color)的,它的颜色是物体本身的颜色和它背后其它物体的颜色的不同强转载 2021-02-17 21:06:06 · 1606 阅读 · 0 评论 -
LearnOpenGL13——模板测试
转载自https://editor.csdn.net/md?not_checkout=1&articleId=113837266https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/02%20Stencil%20testing/需要模板测试的原因在上节中,讲了深度测试,即判断一个像素点是否能通过深度检测,显示到屏幕上,但是在实际开发中,我们可能遇到很多需求,希望实现不是通过深度关系进行遮挡的,比如游戏里常见的透视效果,可以看到一个物转载 2021-02-17 20:23:38 · 196 阅读 · 0 评论 -
LearnOpenGL12——深度测试
转载自https://blog.csdn.net/qq_36696486/article/details/104378594https://learnopengl-cn.github.io/04%20Advanced%20OpenGL/01%20Depth%20testing/#_2https://zhuanlan.zhihu.com/p/56739656需要深度测试的原因当我们渲染多个物体时,这多个物体之间存在互相遮挡的关系,被遮挡的物体的部分将不可见,也就是它离相机更远,为了告诉计算机被遮挡的转载 2021-02-17 15:16:51 · 213 阅读 · 0 评论 -
LearnOpenGL11——用Assimp库导入复杂模型
转载自:https://learnopengl-cn.github.io/03%20Model%20Loading/01%20Assimp/前言我们的工作就是解析这些导出的模型文件以及提取所有有用的信息,将它们储存为OpenGL能够理解的格式。一个很常见的问题是,模型的文件格式有很多种,每一种都会以它们自己的方式来导出模型数据。像是Wavefront的.obj这样的模型格式,只包含了模型数据以及材质信息,像是模型颜色和漫反射/镜面光贴图。而以XML为基础的Collada文件格式则非常的丰富,包含模型、转载 2021-02-16 23:02:17 · 564 阅读 · 0 评论 -
LearnOpenGL10——实现三种类型的光照(投光物)
转载自https://learnopengl-cn.github.io/02%20Lighting/05%20Light%20casters/#_9https://blog.csdn.net/qq_36696486/article/details/104338653平行光当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行。不论物体和/或者观察者的位置,看起来好像所有的光都来自于同一个方向。当我们使用一个假设光源处于无限远处的模型时,它就被称为定向光,因为它的所有光线都有着相同的方向,它转载 2021-02-16 22:13:10 · 257 阅读 · 0 评论 -
LearnOpenGL09——材质
转自https://blog.csdn.net/qq_36696486/article/details/104329131https://learnopengl-cn.github.io/02%20Lighting/03%20Materials/在现实世界里,每个物体会对光产生不同的反应。比如说,钢看起来通常会比陶瓷花瓶更闪闪发光,木头箱子也不会像钢制箱子那样对光产生很强的反射。每个物体对镜面高光也有不同的反应。有些物体反射光的时候不会有太多的散射(Scatter),因而产生一个较小的高光点,而有些物转载 2021-02-16 21:18:30 · 100 阅读 · 0 评论 -
LearnOpenGL08——光照以及冯氏光照模型
转自https://learnopengl-cn.github.io/02%20Lighting/02%20Basic%20Lighting/#_7https://blog.csdn.net/qq_36696486/article/details/104314572原理介绍我们在现实生活中看到某一物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的(Reflected)颜色。换句话说,那些不能被物体所吸收(Absorb)的颜色(被拒绝的颜色)就是我们能够感知到的物体的颜色。将光运用到图形学中,实转载 2021-02-16 14:50:49 · 291 阅读 · 0 评论 -
OpenGL词汇表
OpenGL: 一个定义了函数布局和输出的图形API的正式规范。GLAD: 一个拓展加载库,用来为我们加载并设定所有OpenGL函数指针,从而让我们能够使用所有(现代)OpenGL函数。视口(Viewport): 我们需要渲染的窗口。图形管线(Graphics Pipeline): 一个顶点在呈现为像素之前经过的全部过程。着色器(Shader): 一个运行在显卡上的小型程序。很多阶段的图形管道都可以使用自定义的着色器来代替原有的功能。标准化设备坐标(Normalized Device Coord.原创 2021-02-16 14:07:02 · 115 阅读 · 0 评论 -
LearnOpenGL07——摄像机
转自https://blog.csdn.net/qq_36696486/article/details/104291630https://learnopengl-cn.github.io/01%20Getting%20started/09%20Camera/#_3前面的教程中我们讨论了观察矩阵以及如何使用观察矩阵移动场景(我们向后移动了一点)。OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉,而不是场景在移动转载 2021-02-15 23:30:08 · 459 阅读 · 0 评论 -
LearnOpenGL06——坐标系统+两大投影
转载自https://learnopengl-cn.github.io/01%20Getting%20started/07%20Transformations/在上一个教程中,我们学习了如何有效地利用矩阵的变换来对所有顶点进行变换。OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说,每个顶点的x,y,z坐标都应该在-1.0到1.0之间,超出这个坐标范围的顶点都将不可见。我们通常会自己设定一个坐标的范转载 2021-02-15 22:45:13 · 320 阅读 · 0 评论 -
LearnOpenGL05——变换
转自https://learnopengl-cn.github.io/01%20Getting%20started/07%20Transformations/向量向量最基本的定义就是一个方向。或者更正式的说,向量有一个方向(Direction)和大小(Magnitude,也叫做强度或长度)。你可以把向量想像成一个藏宝图上的指示:“向左走10步,向北走3步,然后向右走5步”;“左”就是方向,“10步”就是向量的长度。那么这个藏宝图的指示一共有3个向量。向量可以在任意维度(Dimension)上,但是我们转载 2021-02-15 22:02:12 · 389 阅读 · 0 评论 -
LearnOpenGL04——纹理
转载自https://blog.csdn.net/qq_36696486/article/details/104277076https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/#_3我们已经了解到,我们可以为每个顶点添加颜色来增加图形的细节,从而创建出有趣的图像。但是,如果想让图形看起来更真实,我们就必须有足够多的顶点,从而指定足够多的颜色。这将会产生很多额外开销,因为每个模型都会需求更多的顶点,每个顶点又需求一个转载 2021-02-15 01:42:16 · 445 阅读 · 1 评论 -
LearnOpenGL03——Shader
转载自https://learnopengl-cn.github.io/01%20Getting%20started/05%20Shaders/https://blog.csdn.net/qq_36696486/article/details/104245596基础概念着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输转载 2021-02-14 21:35:57 · 157 阅读 · 0 评论 -
LearnOpenGL02——绘制三角形
转自https://blog.csdn.net/qq_36696486/article/details/104198142https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/#_2基础概念顶点数据我们在创建一个最基本的几何体时必须要告诉GPU要渲染的几何体的基本信息,包括顶点的坐标,颜色,法线,贴图等等,这些信息全部保存至数组当中,在使用的时候需要将这些数据传入顶点着色器。示例如下://顶点信转载 2021-02-14 20:06:28 · 123 阅读 · 0 评论 -
渲染管线
渲染管线的概念计算机的渲染管线是实时渲染的重要过程。渲染管线是以流水线的形式,讲一个模型的顶点坐标,发现,切线,颜色等数据从CPU传递给GPU,然后通过GPU进行计算,最终将这些顶点的数据通过插值的形式显示到屏幕上,最终能从屏幕上看到该模型的样子。渲染管线通常被分为四个阶段:应用阶段,几何阶段,光栅化阶段,像素处理阶段。接下来介绍一下每个阶段的大概任务。(1) 应用阶段:应用阶段是指在CPU段进行处理的阶段,包括物理碰撞检测、物理模拟、动画计算等任务,对于3D游戏来说,游戏中包含大量的模型,3D模型中保原创 2021-02-13 22:06:50 · 658 阅读 · 0 评论 -
GAMES101图形学P8笔记(shading)
镜面反射指数p是,因为N•h是夹角余弦,p的话是控制高光究竟多大的环境光不讲究光照方向,也不管观测方向,和法线也没关系Blinn-Phong反射模型Shading Frequencies(着色频率),分别是着色应用在每个面,每个顶点和每个像素的结果Graphics(Real-time Rendering) Pipeline(渲染管线)有像素着色器和顶点着色器GPU:整个图形管线的硬件实现Texture Mapping(纹理映射)用于定义物体任何一点的不同属性,不只是漫反射系数原创 2021-01-27 00:59:07 · 180 阅读 · 0 评论 -
GAMES101图形学P7笔记(Z-buffering&shading)
shading:引入明暗和颜色的不同Blinn-Phong光照模型:三个部分,镜面反射,漫反射,环境光某点光的能量漫反射的公式n•l就是cos的值,I/r^2是光源到达shading point时的光强,kd是反射率(越大越亮),如果是0证明反射出去的就是0。不管从哪观测得到的结果是一样的,和v完全没关系,只考虑光线和法线的夹角。...原创 2021-01-26 02:05:51 · 179 阅读 · 0 评论 -
GAMES101图形学P6笔记(反走样)
原创 2021-01-26 02:03:56 · 143 阅读 · 0 评论 -
GAMES101图形学P5笔记(三角形的光栅化)
原创 2021-01-26 02:03:15 · 213 阅读 · 0 评论 -
GAMES101图形学P3笔记
原创 2021-01-06 01:18:09 · 131 阅读 · 0 评论 -
GAMES101图形学P2笔记
原创 2021-01-05 17:02:14 · 119 阅读 · 0 评论