- 博客(333)
- 收藏
- 关注
原创 LearnOpenGL学习(高级OpenGL - - 实例化,抗锯齿)
借助该变量,我们可以改变其位置,渲染方式等。从0开始,当渲染第43个实例时,该变量为42。索引一个包含100个偏移向量的uniform数组,将偏移值加到每个实例化的四边形上。)技术,用一个绘制函数让OpenGL绘制多个物体,而非循环(Drawcall: N->1)。,来节省每次绘制物体时CPU -> GPU的通信,它只需要一次即可。(Instance Count),它能够设置我们需要渲染的实例个数。对于在同一场景中使用相同顶点数据的对象(如草地中的草),可以使用。版本需要一个额外的参数,叫做。
2024-12-17 17:42:15
585
原创 LearnOpenGL学习(高级OpenGL -> 高级GLSL,几何着色器)
float 输出变量,用于控制渲染型图元时,点的大小。可用于粒子系统。将其设置为 gl_Position.z 时,可以使点的距离越远,大小越大。创建出类似近视眼看远处灯光的效果//也是需要开启int 型输入变量(只读),存储了正在绘制顶点的ID(当(使用glDrawElements)进行索引渲染的时候,这个变量会存储正在绘制顶点的当前索引。当(使用glDrawArrays)不使用索引进行绘制的时候,这个变量会储存从渲染调用开始的已处理顶点数量。
2024-12-11 22:15:54
987
1
原创 LearnOpenGL学习(高级OpenGL --> 帧缓冲,立方体贴图,高级数据)
当把一个纹理附加到帧缓冲的时候,所有的渲染指令将会写入到这个纹理中,就像它是一个普通的颜色/深度或模板缓冲一样。创建一个渲染缓冲对象和纹理对象类似,不同的是这个对象是专门被设计作为帧缓冲附件使用的,而不是纹理那样的通用数据缓冲(General Purpose Data Buffer)。我们将会将场景渲染到一个附加到帧缓冲对象上的颜色纹理中,之后将在一个横跨整个屏幕的四边形上绘制这个纹理。帧缓冲(FrameBuffer)是所有屏幕缓冲(包括颜色缓冲,深度缓冲,模板缓冲)的集合。的渲染缓冲上进行的。
2024-12-09 17:29:37
1008
原创 LearnOpenGL学习(高级OpenGL -- 深度测试,模板测试,环绕顺序)
用来防止被阻挡的面渲染到其他面的前面,深度缓冲就像颜色缓冲,在每个片段中储存了信息,当深度测试(Depth Testing)被启用的时候,OpenGL会将一个片段的深度值与深度缓冲的内容进行对比。OpenGL会执行一个深度测试,如果这个测试通过了的话,深度缓冲将会更新为新的深度值。如果深度测试失败了,片段将会被丢弃。深度缓冲运行在是GLSL内建变量,它是一个vec3,x和y分量代表了片段的屏幕坐标(左下角为原点),z分量为片段的深度值。
2024-12-05 16:01:31
905
原创 LearnOpenGL学习(模型加载 -- Assimp,网格,模型)
3D建模工具如Blender、3DS Max在导出模型文件时,会自动生成所有的顶点坐标、顶点法线和纹理坐标。格式只包含了模型数据和材质信息(颜色、贴图等)是一个开源的模型导入库,支持数十种不同的3D模型格式。使用Assimp导入模型时,通常会把模型加载入一个场景(Scene)对象,它包含了导入的模型/场景内的所有数据。Assimp会把场景载入为一系列的节点,每个节点包含了场景对象中存储数据的索引。
2024-12-03 21:52:32
1145
原创 LearnOpenGL学习(光照 -- 颜色,基础光照,材质,光照贴图)
当我们把光源的颜色与物体的颜色值相乘,所得到的就是这个物体所反射的颜色。
2024-12-01 19:33:13
509
原创 LearnOpenGL学习(入门--变换,坐标系统,摄像机)
我们把箱子在每个轴都缩放到0.5倍,然后沿z轴旋转90度创建一个 uniform 变量用来传值会随时间旋转。
2024-11-30 17:01:21
330
原创 LearnOpenGL 学习(入门--三角形,着色器,纹理)
下面,你会看到一个图形渲染管线的每个阶段的抽象展示。要注意蓝色部分代表的是我们可以注入自定义的着色器的部分。图形渲染管线的第一个部分是,它把一个单独的顶点作为输入。顶点着色器主要的目的是把3D坐标转为另一种3D坐标(后面会解释),同时顶点着色器允许我们对顶点属性进行一些基本处理。顶点着色器阶段的输出可以选择性地传递给。几何着色器将一组顶点作为输入,这些顶点形成图元,并且能够通过发出新的顶点来形成新的(或其他)图元来生成其他形状。在这个例子中,它从给定的形状中生成第二个三角形。
2024-11-29 18:11:36
1094
原创 《Unity Shader 入门精要》高级纹理
图形学中,(Cubemap)是(Environment Mapping)的一种实现方法。环境映射可以模拟物体周围的环境,而使用了环境映射的物体可以看起来像镀了层金属一样反射出周围的环境。对立方体纹理采样我们需要提供一个,这个三维纹理坐标表示了我们在世界空间下的一个3D方向。这个方向矢量从立方体的中心出发,当它向外部延伸时就会和立方体的6个纹理之一发生相交,而采样得到的结果就是由该交点计算而来的简单快速,效果较好场景发生变化(有新物体、光源,物体位移)时,需要重新生成立方体纹理。
2024-11-27 21:59:05
1048
原创 《UnityShader 入门精要》更复杂的光照
到了这里就开启了书里的中级篇,之后会讲解 Unity 中的渲染路径,如何计算光照衰减和阴影,如何使用高级纹理和动画等一系列进阶内容。
2024-11-25 18:35:01
964
原创 《Shader入门精要》透明效果
在实时渲染中要实现透明效果,通常会在渲染模型时控制它的。当开启透明混合后,当一个物体被渲染到屏幕上时,每个片元除了颜色值和深度值之外,它还有另一个属性——透明度。当透明度为1时,表示该像素是完全不透明的,而当其为0时,则表示该像素完全不会显示。我们通常使用两种方法来实现透明效果:第一种是使用,这种方法其实无法得到真正的半透明效果;另一种是。在实时渲染中,,它可以决定哪个物体的哪些部分会被渲染在前面,而哪些部分会被其他物体遮挡。它的。
2024-11-24 21:32:14
1129
原创 Cherno OpenGL(28 ~ 33)
在这里我们将在一个drawcall打包多个几何体。即 batch geometry。我们在这里将聚焦于2d渲染,我们如何渲染一堆2d的quads或者说rectangles呢?一种情况是比如一个2d游戏有很多个tile组成,要去渲染这些tile;另一种情况比如一个粒子系统有很多独立的quads,又或者UI渲染:把一个文字当作一个独立的 texture quad。字面上,batching 就是 batch 一些几何体在一个的 vertex buffer 和 index buffer 中然后draw一次。
2024-11-18 22:16:20
492
原创 Cherno OpenGL(18 ~ 27)
默认情况下 OpenGL 不执行任何混合,它只需要你们渲染的东西,然后把它渲染成不透明的东西。之前我们渲染了红色方块,在它上面我们以某种形式渲染了一个半透明的蓝色方块(不透明的蓝色方块会直接覆盖红色方块),我们期望得到这两种颜色的组合:紫色。如果我们现实生活中拿红玻璃和蓝玻璃然后把它们像这样叠在一起,我们会看到穿过的光实际上是紫色的,那就是我们用眼睛所看到的。
2024-11-16 21:42:41
447
原创 Cherno OpenGL(14 ~ 17)
首先我们抽象顶点数组的目的是什么?对我们来说,顶点数组需要做的是将顶点缓冲区与某种布局联系在一起,所以顶点缓冲区就是有数据的缓冲区,它们没有实际的概念比如前三个浮点数是位置,没有类型或者大小之类的概念,它只是实际数据的普通缓冲区。每个字节是什么、这些顶点有多大等等才是顶点数组真正代表的,它应该把缓冲区和实际布局联系在一起。顶点数组对象是 OpenGL 存储那种状态的方式,那么当我们考虑创建这个接口时,我们需要做的是需要一些东西来创建一个顶点数组。
2024-11-15 21:25:08
291
原创 Cherno OpenGL (1 ~ 13)
OpenGL 是一种,比如 API 代表应用程序接口由于 OpenGL 是一种图形 API,它允许我们做一些与图形相关的事情,特别的是它也就是显卡,。为了利用电脑或其他设备(比如手机)中强大的图形处理器,需要调用一些 API 访问固件。OpenGL 正好是允许访问和操作 GPU 的许多接口中的一种,当然我们也有一些其他的接口,比如 Direct3D、Vulcan 和 Metal 等等,所以某种角度来说 OpenGL 允许我们控制显卡。OpenGL,和 CPP 规范差不多。
2024-11-13 17:21:23
343
原创 cherno引擎课 -
我们要构建的是一种,读取文件、转换、然后展现到屏幕上的东西,且有交互能力。程序的具体行为是面向数据的,而非硬编码的。游戏引擎通常包含一个平台、一套工具,可以创建那些资产。它为我们提供创建资源的方式。比如用 PS 做纹理、用 3D Studio Max 或者 Maya 或者 Blender 等制作3D模型,但是工作的最后仍然需要将那个3D模型转换为游戏引擎真正接受的格式。因为对于大多数正经的大型游戏引擎,几乎从来不会直接读取 png、jpeg 或者 obj 模型之类的。
2024-11-10 16:24:25
1141
原创 WebGL编程指南 - 进入三维世界1
初步了解三维呈现方式:视点、观察点、上方向。了解WebGL可视空间,采用投影矩阵对物体进行投影操作,实现盒状可视空间和正射投影。对于正射投影矩阵的数学原理进行了本书之外的补充说明。透视投影可视空间、投影矩阵和模型视图投影矩阵的相关操作,提及规范立方体。
2024-10-24 22:19:25
668
原创 WebGL编程指南 - 颜色与纹理
将顶点的其他(非坐标)数据——如颜色等——传入顶点着色器。发生在顶点着色器和片元着色器之间的从图形到片元的转化,又称为图元光栅化 (rasterzation process)。将图像(或称纹理)映射到图形或三维对象的表面上。
2024-10-20 18:57:08
927
原创 WebGL编程指南 - 高级变换与动画基础
学习使用一个矩阵变换库,该库封装了矩阵运算的数学细节。快速上手使用该矩阵库,对图形进行复合变换。在该矩阵库的帮助下,实现简单的动画效果。
2024-10-19 21:20:57
939
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人