Unity 技术美术 - Shader 篇
片段着色器
图元、片元和像素
生成的先后顺序:顶点 → 图元 → 片元 → 像素
ShaderLab 模板
- Standard Surface Shader 表面着色器
- Unlit Shader 不受光照(UnLight)
- Image Effect Shader 后处理
- Compute Shader
- Ray Tracing Shader
SubShader
GPU 会检查第一个 SubShader,如果 SubShader 不支持(显卡特性等),会检查第二个 SubShader,如果没有找到合适的 SubShader 就会执行 FallBack 中的 Shader 代码
常用的 cginc
- HLSLSupport.cginc 编译 CGRPOGRAM 时自动包含此文件,其中声明了很多预处理器宏帮助多平台开发
- UnityShaderVariables.cginc 编译 CGRPOGRAM 时自动包含此文件,其中声明了很多各种内置的全局变量
- UnityCG.cginc 需要手动添加,其中声明了很多内置的帮助函数与结构
材质属性 Properties
语法格式
1 |
|
1 |
|
混合操作
片段着色器(源颜色 *
SrcFactor) BlendOp 帧缓冲区 Frame Buffer(目标颜色 *
DstFactor)
Shader 中的时间_Time
_Time.xyzw
_Time.x (t / 20)
_Time.y (t)
_Time.z (t * 2)
_Time.w (t * 3)
相关术语
菲涅尔效应
在真实世界中,除了金属之外,其它物质均有不同程度的“菲涅尔效应”。简单的讲,就是视线垂直于表面时,反射较弱,而当视线非垂直表面时,夹角越小,反射越明显。如果你看向一个圆球,那圆球中心的反射较弱,靠近边缘较强。不过这种过度关系被折射率影响。如果你站在湖边,低头看脚下的水,你会发现水是透明的,反射不是特别强烈;如果你看远处的湖面,你会发现水并不是透明的,但反射非常强烈。这就是“菲涅尔效应”
Unity 技术美术 - Shader 篇
https://silhouettesforyou.github.io/2023/04/03/6539b036c88c/