3 min read

Unity Shader

普通 Unity 项目内提供的 Shader 类型

  • 标准表面着色器(Standard Surface Shader) 包含了标准光照模型的表面着色器模板
  • 非光照着色器 (Unlit Shader) 不包含光照(但包含雾效)的基本的顶点/片元着色器
  • 图像效果着色器 (Image Effect Shader) 屏幕后处理效果的模板
  • 计算着色器 (Compute Shader) 特殊的shader文件,利用GPU的并行性来进行一些与常规渲染流水线无关的计算
  • 光线追踪着色器 (Ray Tracing Shader) 光追着色器

标准表面着色器

如果我们像创建一个与光线交互的着色器,有两个选项

  • 使用无光照着色器,并添加允许再材质上进行光线渲染的数学函数
  • 或使用标准表面着色器,该着色器具有基本的照明模型

非光照着色器

非光照着色器是指基本颜色模型,通常是我们用来创建效果的基础结构 这种类型的程序,非常适合低端硬件

图像效果着色器

其结构与非光照着色器非常相似,图像特效主要用于内置 RP 中后处理效果,并需要 C# 中的函数 OnRenderImage

计算着色器

这种类型的程序以在显卡上运行为特点,却位于正常的渲染管线之外,其结构与先前提到的着色器非常不同 与普通着色器不同,他的扩展名为 '.comoute', 编程语言为 HLSL

光线追踪着色器

光线追踪着色器是一种扩展名为 .raytrace 的实验性程序类型,他允许 GPU 进行光线追踪处理,我们可以使用这种类型的程序来替换用于光线投射处理算法的 '.compute' 类型的着色器

URP 或 HDRP Unity 项目中会有 Shader Graph