
从基础的颜色渐变到复杂的 Raymarching,带你进入 GLSL 着色器的奇妙世界
## 什么是着色器
着色器是运行在 GPU 上的程序,分为顶点着色器(处理位置)和片段着色器(处理颜色)。
## 你好,着色器世界
```glsl
// 片段着色器
precision mediump float;
uniform float uTime;
varying vec2 vUv;
void main() {
vec3 color = vec3(vUv.x, vUv.y, sin(uTime) * 0.5 + 0.5);
gl_FragColor = vec4(color, 1.0);
}
```
## SDF 和 Raymarching
Signed Distance Functions (SDF) 是程序化几何的核心工具,配合 Raymarching 可以渲染复杂的隐式曲面:
```glsl
float sdSphere(vec3 p, float r) {
return length(p) - r;
}
float scene(vec3 p) {
return sdSphere(p - vec3(0.0, 0.0, 0.0), 1.0);
}
```
从简单的球体开始,你可以用纯数学构建整个宇宙。
着色器是运行在 GPU 上的程序,分为顶点着色器(处理位置)和片段着色器(处理颜色)。
## 你好,着色器世界
```glsl
// 片段着色器
precision mediump float;
uniform float uTime;
varying vec2 vUv;
void main() {
vec3 color = vec3(vUv.x, vUv.y, sin(uTime) * 0.5 + 0.5);
gl_FragColor = vec4(color, 1.0);
}
```
## SDF 和 Raymarching
Signed Distance Functions (SDF) 是程序化几何的核心工具,配合 Raymarching 可以渲染复杂的隐式曲面:
```glsl
float sdSphere(vec3 p, float r) {
return length(p) - r;
}
float scene(vec3 p) {
return sdSphere(p - vec3(0.0, 0.0, 0.0), 1.0);
}
```
从简单的球体开始,你可以用纯数学构建整个宇宙。