导图社区 Unity Shader基础
根据unity shader入门精要提炼出来的知识点,内容包含unity shader形式和unity shader结构。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
Unity Shader基础
Unity Shader结构
Shader语义块
定义shader的名字及位置
Shader“Custom/MyShder”{}
properties语义块
Name (“display name”, PropertyType) = DefaultValue
属性名字(Name)
在Shader中访问
显示名称(Display name)
显示在材质面板上的名字
属性类型(Property Type)
Int
Float
Range
Color
Vector
2D
Cube
3D
默认值(DefaultValue)
材质面板默认显示的属性值
Int/Float/Range
数字(number)
Color/Vector
四维向量(number, number, number, number)
2D/Cube/3D
“defaulttexture”{}
“white”
“black”
“gray”
“bump”
示例
SubShader语义块
Unity Shader包含一个或多个SubShader
旧显卡使用复杂度低的着色器
高级显卡使用复杂度高的着色器
结构
状态[RebderSetup](可选)
常见渲染状态设置选项
SubShader中设置的渲染状态将会应用到所有的Pass
可在Pass语义块中单独设置
标签[Tags](可选)
是一个键值对(Key/Value Pair),键和值都是字符串类型
Tags{“TagName1” = “Value1” “TagName2” = “Value2”}
标签类型
上述仅可以在SubShader中声明,而不可以在Pass块中声明
Pass语义块
定义Pass名称
Name “MyPassName”
调用其他Unity Shader中的Pass
UsePass “MyShader/MYPASSNAME
设置渲染状态
SubShader中的状态设置同样适用于Pass
使用固定管线的着色器命令
设置标签
不同于SubShader的标签
Pass的标签类型
特殊的Pass
UsePass
复用其他Unity Shader中的Pass
GrabPass
抓取屏幕并将结果存储在一张纹理中
Fallback指令
Fallback “name”
释义:若上述SubShader都无法运行,则使用这个最低级的Shader
Fallback Off
关闭Fallback功能
影响阴影投射
Unity Shader形式
表面着色器
Unity自己创造的着色器
代码量少但渲染代价大
在背后需要转换成对应的顶点/片元着色器
为我们处理了很多光照细节
定义在SubShader语义块中
示例代码
顶点/片元着色器
定义在Pass语义块中
固定函数着色器
应用于不支持可编程渲染管线着色器的旧设备的渲染工作,只能完成一些简单的效果
使用ShaderLab语法
ShaderLab
编写Unity Shader的语言
定义了一个材质所需的所有东西
根据平台选择不同的图像编程接口
载入模型
设置着色器输入
定义顶点/片元着色器
对渲染顺序排序
把渲染资源加载到GPU
Unity在背后根据使用的平台编译成真正的代码和Shader文件
Unity Shader概述
Unity Shader
属性
指令
材质
调节属性
赋予模型