Unity Shader种类

standard surface shader包含标准光照模型的表面着色器模板
unlit shader不包含光照但包含雾效的基本顶点/片元着色器
image effect shader实现各种屏幕后处理效果基本模板
compute shader利用gpu的并行性来进行一些与常规渲染无关的计算

每个着色器都必须定义唯一一个Shader
Shader name
定义一个显示在材质设定界面的属性列表
Properties
至少有一个子着色器,当加载一个着色器时,Unity会遍历整个列表,获取第一个能被用户机器支持的子着色器。
Sub shaders
如果没有将尝试降低着色器,即Fallback操作
Fallback

SubShader
Tags 可选标签
CommonState 通用状态
Pass通道
子着色器定义了一个渲染通道列表,并可选是否为所有通道初始化所需要的通用状态
当unity选择一个SubShader进行渲染的时候,将优先渲染一个呗每个通道所定义的对象。由于渲染每一个物体都是十分昂贵的操作,有时在一些显卡上,所需要的效果不能通过单次通道来完成,就必须使用多次通道

常用标签
Queen列队标签
    决定对象被渲染的次序。
    Backgroud背景 1000
    Geometry 几何体 2000
    AlphaTest Alpha测试 2450
    Transparent 透明 3000从最远的对象开始,由远至近渲染
    Overlay 覆盖 4000
    Queen = Geometry + 600表示在AlphaTest和Transparent之渲染
RenderType渲染类型标签
    Opaque不透明
    Tranparent透明
    TransparentCutout遮蔽的透明做色漆
    Background天空盒做色漆
    Overlay GUITexture 光晕做色漆 闪光着色器
    TreeOpaque地形树皮做色漆
    TreeTransparentCutout地形引擎输液
    TreeBillboard地形引擎布告板数
    Grass地形引擎草
    GrassBillboard地形引擎布告板草
DisableBatching禁止批处理标签
    某些着色器(大部分是进行物体空间顶点变形)在进行秒回调用批处理时会不起作用。有三个可选值 true一直禁用false不禁用LODFading当LODFading被激活时禁用

ForceNoShadowCasting强制不投射阴影标签。使用该子着色器渲染的对象将永不投射阴影。
IgnoreProjecttor忽略投影标签,如果为True,则使用这个着色器的对象将不会被投影器所影响。
CanUseSpriteAltas使用精灵图集变迁,如果使用False,则当精灵被打包进图集后,着色器就不会起作用
PreviewType预览类型,

Category是渲染命令的逻辑组,着色器可以多个子着色器,他们需要共同的效果

  • 表面着色器(Surface Shaders):最常用的Shader,可以与灯光、阴影、投影器交互,以Cg/HLSL语言进行编写,不涉及光照时尽量不要使用。

  • 顶点和片段着色器(Vertex and Fragment Shaders):全屏图像效果,代码比较多,以Cg/HLSL编写,难以和光照交互。

  • 固定功能管线着色器(Fixed Function Shaders):游戏要运行在不支持可编程管线的老旧机器上时,需要用ShaderLab语言来编写。

你可能感兴趣的:(unity,shader)