风起提示:由于技术的发展风起云涌,需留意文章时效,2024-09-08。
回顾
前面我们已经从宏观上了解到GPU内部的各种配置及状态统称为内部状态,这些配置和状态影响着管线中各个阶段的行为,渲染过程描述了从数据配置到最终输出的整个步骤,渲染管线主要负责绘制阶段。
在管线绘制的过程中GPU开放出了一些步骤供我们控制,着色器程序就是参与控制这些步骤的语言。
着色器
Shader 是一种运行在 GPU 上的小型程序,主要用于控制计算机图形硬件GPU的运行。
类型
- 顶点着色器(Vertex Shader):
-
- 顶点着色器负责处理每个顶点的数据,如位置变换、光照计算等。
- 它们通常用于计算几何变换。
- 片段着色器(Fragment Shader):
-
- 片段着色器负责处理每个像素的数据,如颜色计算、纹理贴图等。
- 它们通常用于实现像素级别的效果。
- 几何着色器(Geometry Shader):
-
- 几何着色器可以在顶点着色器之后、光栅化之前运行,用于生成新的几何图元。
- 它可以在原有几何的基础上添加额外的细节。
- 计算着色器(Compute Shader):
-
- 计算着色器不在渲染管线内运行,而是专门用于执行通用计算任务。
- 它可以访问统一缓冲区(Uniform Buffer)和存储缓冲区(Storage Buffer)。
- 光追着色器(Ray Tracing Shaders):
-
- 针对硬件光追,用于实时光线追踪技术,模拟光线的行为来创建逼真的光照效果。
语言
- OpenGL Shading Language (GLSL) :
-
- 用于 OpenGL 的着色器编程语言。
- 适用于顶点着色器、片段着色器等。
- HLSL (High-Level Shader Language) :
-
- 用于 DirectX 的着色器编程语言。
- 适用于顶点着色器、像素着色器等。
- SPIR-V (Standard Portable Intermediate Representation) :
-
- 一种跨平台的中间表示语言,可以被多种图形 API 使用。
- 可以从 GLSL、HLSL 等高级语言编译而来。
- WGSL (WebGPU Shading Language) :
-
- WebGPU 的着色器编程语言,专为 WebGPU 设计,提供了对现代图形和计算API(如Vulkan、Metal和DirectX 12)的访问。
- 目标是简化跨平台GPU计算和图形渲染的脚本编写工作。
更多精彩内容可关注风起的博客,微信公众号:听风说图