PIXEL / ORBIT
← 所有文章

让光有形状:从零理解 Shader 的世界

· 图形渲染

UnityShader

示例内容 · 用于展示博客阅读体验,非个人已发布成果。

从坐标开始

这是一篇展示阅读体验的示例文章。Shader 告诉 GPU 如何将输入数据变成屏幕上的颜色。

UV 描述纹理表面的位置。先让 U 控制红色、V 控制绿色,可以直观看到坐标方向。

half4 frag(Varyings input) : SV_Target
{
    return half4(input.uv.x, input.uv.y, 0, 1);
}

用法线感知光

表面法线与光照方向的点积描述表面朝向光源的程度。这里假设两个向量已归一化。

float diffuse = max(0, dot(normal, lightDir));

先观察,再叠加

在 Unity 中先单独观察法线、深度和光照,再添加颜色与材质。以上是原理片段,完整 Shader 需要匹配实际渲染管线的输入和 Pass。


支持我的创作 ↗