<一>Cocos Shader
Cocos Shader
在现代显卡中,若要正确地绘制物体,需要书写基于顶点(Vertex)和片元(Fragment)的代码片段,这些代码片段称为 Shader。在基于 OpenGL 系列驱动的硬件设备上,Shader 支持一种名为 GLSL(OpenGL Shading Language)的着色器语言。
- 什么是显卡?
显卡又称显示卡( Video card),是计算机硬件的一个重要组成部分,承担输出显示图形的任务。主流显卡的显示芯片主要由NVIDIA(英伟达)和AMD(超威半导体 )两大厂商制造,通常将采用NVIDIA显示芯片的显卡称为N卡,而将采用AMD显示芯片的显卡称为A卡。
显卡的核心就是显示芯片,显示芯片( Video chipset)是显卡的主要处理单元,又称为图形处理器(Graphic Processing Unit,GPU),GPU使显卡减少了对CPU的依赖,并完成部分原本属于CPU的工作。
显卡是插在主板上的扩展槽里的。 - 什么是顶点(Vertex)?
在计算机图形学中,对象通常被表示为三角多面体,其中对象顶点不仅与三个空间坐标相关联,还与正确渲染对象所必需的其他图形信息(例如颜色,反射属性,纹理和表面法线)相关联;这些属性用于由顶点着色器(顶点管线的一部分)进行渲染。 - 什么是片元(Fragment)?
在理解片元前需要先理解“图元”和“光栅化”的概念。
图元由顶点和边(模型决定)组成的用于描述对象的几何要素. 如最简单的图元就是一个点。如直线段、三角形、多边形、圆、二次曲线、曲面等.
图元是计算机图形学中的基本几何对象,它们构成了更复杂形状的基础。
光栅化是一个比较复杂的计算过程,它会将图元(如点、线段和三角形)转换为屏幕上的二维图像,每个图像点都包含颜色、深度、纹理等数据,该点和相关信息称为一个片元.
当几何图元(如三角形)被光栅化时,会为每个覆盖的像素位置生成一个或多个片元,也可以理解为最终形成像素的“候选人”。
生成的每个片元都会传递给片段着色器进行处理。
片段着色器是一种运行在 GPU 上的特殊的程序,它负责为每个片元计算最终的颜色。片段着色器可以访问片元的各种属性。
片段着色器也是程序可编辑的部分,语言就是上面提到的GLSL。
经过所有测试和处理后的片元最终会转换成屏幕上的像素点。 - 什么是OpenGL?
OpenGL(Open Graphics Library)是一个跨平台的图形应用程序接口(API),主要用于生成二维和三维矢量图形。它提供了一系列的功能,允许开发者直接与图形硬件交互,从而实现高效、高质量的图形渲染。 - OpenGL 渲染管线
现代 OpenGL 的渲染管线可以分为几个主要阶段:
- 顶点处理:
• 顶点着色器(Vertex Shader):每个输入顶点都会经过这个阶段,顶点着色器可以修改顶点的位置、计算光照等。
• 图元装配(Primitive Assembly):将顶点组合成图元(如三角形、线段等)。• 裁剪(Clipping):移除那些不在视锥体内的部分。
• 屏幕映射(Screen Mapping):将裁剪后的坐标转换为屏幕空间中的位置。 - 光栅化:
• 扫描转换(Scan Conversion):将图元分解成像素网格,生成片元。
• 属性插值(Attribute Interpolation):对顶点属性进行插值,为每个片元计算相应的值。 - 片段处理:
• 片段着色器(Fragment Shader):为每个片元计算最终的颜色。
• 测试与混合(Testing and Blending):执行深度测试、模板测试、Alpha 测试等,决定是否保留该片元,并将其与现有像素颜色混合。 - 输出合并:
• 将处理后的片元写入帧缓冲区,形成最终图像(像素)。
![image]()

浙公网安备 33010602011771号