乌啦呀哈呀哈乌啦!

欢迎光临,这里是喵pass的个人博客,希望有能帮到你的地方

0%

着色器

Shader(着色器)是一段运行在 GPU 上的程序,用来决定物体怎么被画出来。 比如物体是什么颜色、有没有反光、表面是否透明,以及是否出现发光、溶解等效果。

在 Unity 中,可以这样理解它们的关系:

  • 模型(Mesh):提供形状,例如一个球。
  • 贴图(Texture):提供图案,例如球表面的木纹。
  • Shader:规定如何处理光照、贴图和颜色,让球看起来像木头、金属或玻璃。
  • 材质(Material):选择一个 Shader,并设置贴图、颜色、光滑度等具体参数,然后赋给物体。

同一个球模型,使用不同 Shader 和材质,就能呈现完全不同的外观。

常见的 Shader 处理阶段有:

阶段 作用
顶点着色器(Vertex Shader) 处理模型顶点的位置,可以实现波浪、树叶摇摆等形变
片元着色器(Fragment Shader) 计算表面每个片元的颜色,可以实现光照、透明、渐变等效果

“片元”可以先理解成一个准备画到屏幕上的像素候选,它还可能被深度测试等步骤丢弃。

在 Unity 里,你可以直接使用内置 Shader,也可以用 Shader Graph 连接节点来制作效果,或者用 HLSL 写代码。

例如做一个“物体逐渐溶解”的效果,Shader 会根据噪声贴图和溶解参数,丢弃一部分片元,并给溶解边缘加上发光颜色。


Credits:

https://zhuanlan.zhihu.com/p/718015588