Unity Shader 完全手册 —— 涵盖动画、光照、PBR、后处理、几何着色器、阴影等 17 个分类的 130 个 Shader 文件,是学习和参考 Unity 内置管线着色器编写的完整合集。
Assets/
├── Animation/ # 着色器动画(顶点动画、果冻弹跳、精灵动画)
│ ├── DepthMapKitty/ # 基于深度图的 2D 动画
│ ├── FishNButterfly/ # 鱼游动 & 蝴蝶扇翅顶点动画
│ ├── Qspring/ # Q 弹果冻效果
│ └── FromUnityShader/ # 外部合并的动画着色器
├── Base/ # 基础着色器(深度纹理)
│ └── DepthTexture/ # 深度图渲染
├── Cubemap/ # 立方体贴图(反射、折射、渲染 Cubemap)
│ ├── Reflection/ # Cubemap 反射
│ ├── Refraction/ # Cubemap 折射
│ ├── RenderCubemap/ # 运行时渲染 Cubemap 的编辑器工具
│ └── FromUnityShader/ # 外部合并的 Cubemap 着色器
├── Effect/ # 视觉特效(描边、水面、溶解、模糊、科幻等)
│ ├── 2D_Outline/ # 2D 描边
│ ├── 2D_Shadow/ # 2D 投影
│ ├── 3D_Outline/ # 3D 描边
│ ├── Bloom/ # 泛光效果
│ ├── Blur/ # 模糊(GrabPass、屏幕模糊)
│ ├── Dissolve/ # 溶解效果
│ ├── Dissolve2/ # 垂直溶解
│ ├── DoubleTex/ # 双纹理点光源效果
│ ├── HeatWave/ # 热浪扭曲
│ ├── Mask/ # 黑色光圈遮罩
│ ├── Sand/ # 沙化效果(几何着色器)
│ ├── Sci-fi/ # 科幻特效(全息屏幕、扫描、线框)
│ ├── Water/ # 卡通水面(多版本)
│ ├── WaterSurfaceSimulation/ # 水面模拟(Flow Map)
│ ├── Zoom/ # 放大镜效果
│ └── FromUnityShader/ # 外部合并的特效着色器
├── GeometryShader/ # 几何着色器(示例、草地渲染)
│ ├── Example/ # 几何着色器基础示例
│ ├── Grass/ # 草地渲染(几何+曲面细分)
│ └── FromUnityShader/ # 外部合并的几何着色器
├── GpuInstance/ # GPU 实例化(MaterialPropertyBlock)
├── Lighting/ # 光照模型(漫反射、高光)
│ ├── Diffuse/ # 逐顶点/逐像素漫反射、半兰伯特
│ ├── Specular/ # Phong、Blinn-Phong 高光
│ └── FromUnityShader/ # 外部合并的光照着色器
├── Math/ # 数学工具(Perlin 噪声纹理生成)
├── Other/ # 其他(共享模型资源)
│ └── FromUnityShader/ # 外部合并的杂项资源
├── PBR/ # 物理渲染(手写 PBR、Unity Standard)
│ ├── AlfxPBR/ # 功能完备的手写 PBR
│ ├── UnityPbrRendering/ # 参考教程手写 PBR 系列
│ └── FromUnityShader/ # 外部合并的 PBR 示例资源
├── PostProcessing/ # 后处理(Bloom、模糊、边缘检测、运动模糊等)
│ ├── Shaders/ # 《Unity Shader 入门精要》第 12 章后处理
│ └── FromUnityShader/ # 外部合并的后处理着色器
├── ScreenSpace/ # 屏幕空间效果
│ └── ScreenSpaceReflection/ # 屏幕空间反射(SSR)
├── Shadow/ # 阴影
│ ├── ShadowMap/ # 基础 ShadowMap
│ └── ShadowMap2/ # 改进版(PCF、Bias)
├── Skybox/ # 天空盒
│ └── FromUnityShader/ # 外部合并的天空盒着色器
├── UI/ # UI 着色器
│ └── UI毛玻璃shader/ # UI 毛玻璃模糊
├── Unity_Shaders_Book/ # 《Unity Shader 入门精要》配套着色器
│ └── Shaders/ # 第 11/13/15 章示例
└── SurfaceShader.shader # Surface Shader 示例(Cubemap 反射)
| 分类 | Shader 数 | 说明 |
|---|---|---|
| Animation | 5 | 着色器动画:顶点位移、深度图动画、Q 弹效果 |
| Base | 1 | 基础:深度纹理渲染 |
| Cubemap | 3 | 立方体贴图:反射、折射、简单反射 |
| Effect | 48 | 视觉特效:描边、水面、溶解、模糊、科幻等 |
| GeometryShader | 8 | 几何着色器:基础示例、草地渲染、曲面细分 |
| GpuInstance | 1 | GPU 实例化:MaterialPropertyBlock |
| Lighting | 9 | 光照模型:漫反射、半兰伯特、Phong、Blinn-Phong |
| Math | 0 | 数学工具:Perlin 噪声纹理生成(C# 脚本) |
| Other | 0 | 其他:共享模型资源(无 Shader) |
| PBR | 12 | 物理渲染:手写 PBR、Unity Standard、BRDF |
| PostProcessing | 27 | 后处理:Bloom、高斯模糊、边缘检测、运动模糊等 |
| ScreenSpace | 1 | 屏幕空间反射(SSR) |
| Shadow | 6 | 阴影:ShadowMap、PCF、Bias |
| Skybox | 1 | 天空盒(Quake3 格式,非 Unity Shader) |
| UI | 2 | UI 着色器:毛玻璃模糊 |
| Unity_Shaders_Book | 5 | 《Unity Shader 入门精要》配套:水面、雾效、边缘检测等 |
| 根目录 | 1 | SurfaceShader.shader:Surface Shader 示例 |
| 合计 | 130 |
基于深度图的 2D 角色动画、顶点动画(鱼游动、蝴蝶扇翅)、Q 弹果冻形变等。
深度纹理渲染,是许多高级效果(阴影、雾效、后处理)的基础。
使用 Cubemap 实现环境反射和折射效果,包含运行时渲染 Cubemap 的编辑器工具。
项目最大的分类,包含 2D/3D 描边、泛光、模糊、溶解、热浪、遮罩、沙化、科幻特效(全息屏幕、扫描线、线框)、卡通水面、水面模拟、放大镜等 48 个 Shader。
几何着色器基础示例(锥体、线段、点、凸起)和草地渲染(结合曲面细分和风扰动)。
使用 MaterialPropertyBlock 和 UNITY_INSTANCING_BUFFER 实现 GPU 实例化,减少 Draw Call。
逐顶点/逐像素漫反射、半兰伯特光照、Phong/Blinn-Phong 高光模型。
Perlin 噪声纹理生成器(C# 脚本实现,非 Shader 文件)。
功能完备的手写 PBR(AlfxPBR)、Unity Standard Shader、基于教程的 PBR 系列着色器。
Bloom、高斯模糊、边缘检测、运动模糊、亮度/饱和度/对比度调整,以及来自 PPSSPP 的后处理着色器集合。
屏幕空间反射(SSR),使用 GrabPass 和射线步进实现。
基础 ShadowMap 渲染、带 Bias 和 PCF 软阴影的改进版本。
来自外部资源的 darkskies 天空盒着色器(Quake3 格式,非 Unity 原生 Shader)。
UI 毛玻璃模糊效果,支持 Stencil 遮罩和 Alpha 裁剪。
《Unity Shader 入门精要》第 11/13/15 章的配套 Shader:水面扭曲、基于深度纹理的雾效/运动模糊/边缘检测、噪声雾效。
- Unity 版本: 2018.4.36f1
- 渲染管线: Built-in Render Pipeline(内置管线)
- 着色器语言: CG/HLSL(
CGPROGRAM/ENDCG) - Shader Model: 大部分要求 SM 3.0,几何着色器和曲面细分类要求 SM 4.0/4.6
- 平台要求: Windows/Mac,需支持对应 Shader Model 的 GPU
-
克隆项目:
git clone https://github.com/wangshucheng/UnityShaderComplete.git
-
用 Unity 打开: 使用 Unity 2018.4.36f1(或兼容版本)打开项目。
-
浏览着色器: 在 Project 窗口中导航到
Assets/下各分类目录,每个分类都有README.md说明文档。 -
应用到材质: 在材质球 Inspector 中选择对应的 Shader 路径(如
MyShader/Effect/Dissolved)。 -
运行示例场景: 部分子目录包含示例场景(.unity),可直接运行查看效果。
主要修复内容:
mul(UNITY_MATRIX_MVP, *)→UnityObjectToClipPos(*)(矩阵变换 API 更新)unity_ObjectToWorld/unity_WorldToObject变量名更新- 移除已废弃的
BindChannels指令 #pragma target声明统一添加UnityGC.cginc引用修正
- ShaderLib — llapuras — 基础 shader 效果收藏
- Awesome Unity Open Source — Unity 开源项目汇总
- X-PostProcessing-Library — 浅墨 — 高品质后处理库
- HoloShield — AdultLink — 科幻风格 Shader
- Unity Shader 入门精要 — 冯乐乐 — 配套着色器源码