type
status
date
slug
summary
tags
category
icon
password
获取标准着色器代码
下载地址:
Buildin Shaders目录结构
一般包含四个文件夹:
- CGIncludes:各种封装函数目录。如光照模型、坐标空间转换辅助函数
- DefaultResources:丢几个基本的Shader目录,如错误处理的ErrorShader,GUI的FontShader,以及清屏的Clear。
- DefaultResourcesExtra:各平台的Shaders总目录。
- Editor:Standard Shader的自定义GUI cs文件目录。
建议采用Unity 5.3或以上版本,因为Unity将光照模型(BRDF)从Phong改为了GGX。Phong简单快速,各向同性,但是表达能力有限;GGX更为复杂,支持各向异性,并且有接近现实世界的高光效果,表达能力较强。这是一个很大的改进,使我们可以制作更多有趣的示例。
Standard Shader简介
一个简单的Surface着色器。位于DefaultResourcesExtra\Standard.shader
主要的Pass
- Base forward pass:基本的前向渲染通道,主要处理直射光,自发光,光照图
- Additive foward pass:附加的前向渲染通道,主要处理除非主光源的其他光源,一个光源一个Pass,不处理雾效
- Shadow caster pass:物体影子的处理通道
- Deffered pass:延迟渲染通道
- Meta pass:烘焙光影信息提取通道,常规渲染期间不会执行
前向渲染模块 UnityStandardCoreForward.cginc
区分普通跟简单的顶点和片段着色器入口
注意:简单模块不支持PARALLAXMAP(视差贴图,主要增强不同视角的凹凸感,像素级别的处理比较耗性能)、DIRLIGHTMAPCOMBINED(开启后全局间接光会叠加烘焙光,手机端不需要那么精准的光照效果,优化一般自动剔除)、DIRLIGHTMAP_SEPARATE(代码里面没有这关键字影子)
顶点着色函数vertForwardBase
关于插值器(interpolators)参考
顶点着色函数输入结构体VertexInput
顶点着色函数输出结构体VertexOutputBase
片元着色函数fragForwardBaseInternal
- 作者:zuig
- 链接:https://blog.zuig.net//article/StandardShader
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。