“特效编程”笔记 -- OpenGL Shader / GLSL 资料收集

用 vscode+glsl canvas 插件可以作为一个 shader 开发环境。最终选择了:glsl。

Shader Language?

三大 Shader 编程语言(CG / HLSL / GLSL)。Shader Language 目前主要有 3 种语言:

  1. GLSL ( OpenGL ) 基于 OpenGL 的 OpenGL Shading Language,简称 GLSL;
  2. HLSL ( DirectX ) 基于 DirectX 的 High Level Shading Language,简称 HLSL;
  3. CG ( OpenGL & DirectX capable, made by NVIDIA ) 还有 NVIDIA 公司的 C for Graphic,简称 Cg 语言。

Cg

GLSL 与 HLSL 分别基于 OpenGL 和 Direct3D 的接口,两者不能混用。

Cg 是一个可以被 OpenGL 和 Direct3D 广泛支持的图形处理器编程语言。 Cg 语言和 OpenGL、Direct3D 并不是同一层次的语言,而是 OpenGL 和 DirectX 的上层, 即 Cg 程序是运行在 OpenGL 和 DirectX 标准顶点和像素着色的基础上的。 Cg 由 NVIDIA 公司和微软公司相互协作在标准硬件光照语言的语法和语义上达成了一致开发。 所以,HLSL 和 Cg 其实是同一种语言。

OpenGL / GLSL 渲染环境搭建

OpenGL / GLSL

图 2.6 GPU 的渲染流水线实现。颜色表示了不同阶段的可配置性或可编程性: 绿色表示该流水线阶段是完全可编程控制的, 黄色表示该流水线阶段可以配置但不是可编程的, 蓝色表示该流水线阶段是由 GPU 固定实现的,开发者没有任何控制权。 实线表示该 shader 必须由开发者编程实现,虚线表示该 Shader 是可选的。

图 2.11 OpenGL 和 DirectX 的屏幕坐标系差异。对于一张 512*512 大小的图像,在 OpenGL 中其(0, 0)点在左下角,而在 DirectX 中其(0, 0)点在左上角。

一些牛逼

士郎 Shader — 实时水面模拟与渲染(一)

参考

---
本文短链接:
If you have any questions or feedback, please reach out haihoing@qq.com.

自由转载-非商用-非衍生-保持署名(创意共享 3.0 许可证)