<一>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 的渲染管线可以分为几个主要阶段:
  1. 顶点处理:
    • 顶点着色器(Vertex Shader):每个输入顶点都会经过这个阶段,顶点着色器可以修改顶点的位置、计算光照等。
    • 图元装配(Primitive Assembly):将顶点组合成图元(如三角形、线段等)。• 裁剪(Clipping):移除那些不在视锥体内的部分。
    • 屏幕映射(Screen Mapping):将裁剪后的坐标转换为屏幕空间中的位置。
  2. 光栅化:
    • 扫描转换(Scan Conversion):将图元分解成像素网格,生成片元。
    • 属性插值(Attribute Interpolation):对顶点属性进行插值,为每个片元计算相应的值。
  3. 片段处理:
    • 片段着色器(Fragment Shader):为每个片元计算最终的颜色。
    • 测试与混合(Testing and Blending):执行深度测试、模板测试、Alpha 测试等,决定是否保留该片元,并将其与现有像素颜色混合。
  4. 输出合并:
    • 将处理后的片元写入帧缓冲区,形成最终图像(像素)。
    image
posted @ 2024-12-25 18:35  EricShx  阅读(33)  评论(0)    收藏  举报