WebGPU基础(五)着色器

262 阅读2分钟

风起提示:由于技术的发展风起云涌,需留意文章时效,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计算和图形渲染的脚本编写工作。

更多精彩内容可关注风起的博客,微信公众号:听风说图