Tags

作者:追风剑情 发布于:2017-8-3 11:48 分类:Shader

参考 http://www.jianshu.com/p/7b9498e58659

SubShader中的Tags
SubShader
{
   Tags {"Queue"="Geometry" "RenderType"="Opaque" "ForceNoShadowCasting"="true" "IgnoreProjector"="true"}
}

参见官方文档 https://docs.unity3d.com/Manual/SL-ShaderReplacement.html
Queue: 渲染队列

  • "Background": 值为1000, 比如用于天空盒。
  • "Geometry": 值为2000, 大部分物体在这个队列。
  • "AlphaTest": 值为2450,已进行AlphaTest的物体在这个队列。
  • "Transparent": 值为3000,透明物体。
  • "Overlay": 值为4000。比如镜头光晕。
  • 用户自定义,比如"Queue"="Geometry+10"。


RenderType: 渲染类型
  • "Opaque": 大部分不透明的物体都使用这个;
  • "Transparent":绝大部分透明的物体、包括粒子特效都使用这个;
  • "Background":天空盒都使用这个;
  • "Overlay":GUI、镜头光晕都使用这个;
  • 用户也可以定义任意自己的RenderType这个标签所取的值。

ForceNoShadowCasting: 值为"true"时,表示不接受阴影。
IgnoreProjector: 值为"true"时,表示不接受Projector组件的投影。

Pass中的Tags
SubShader {
   Pass {
      Tags{ "LightMode"="ForwardBase" }
   }
}

参见官方文档 https://docs.unity3d.com/Manual/SL-PassTags.html
LightMode: 光照模式
  • "Vertex": 逐顶点光照渲染
  • "ForwardBase": 前向渲染
  • "ForwardAdd": 前向渲染,为每个光源执行一次Pass
  • "Deferred": 延迟渲染
  • "Always": 永远都渲染,但不处理光照。
  • "ShadowCaster": 用于渲染产生阴影的物体。
  • "ShadowCollector": 用于收集物体阴影到屏幕坐标Buff里。

示例


Shader "Custom/ForwardBase" {
	Properties {
        _Color ("Main Color", Color) = (1,1,1,0)
        _SpecColor ("Spec Color", Color) = (1,1,1,1)
        _Emission ("Emmisive Color", Color) = (0,0,0,0)
        _Shininess ("Shininess", Range (0.01, 1)) = 0.7
        _MainTex ("Base (RGB)", 2D) = "white" {}
    }
    SubShader {
		Tags {"Queue"="Geometry" "RenderType"="Opaque" "ForceNoShadowCasting"="true" "IgnoreProjector"="true"}
		
        Pass {
			Tags{ "LightMode"="ForwardBase" }
			
            Material {
            	//漫反射颜色
                Diffuse [_Color]
                //环境光颜色
                Ambient [_Color]
                //亮度
                Shininess [_Shininess]
                //高光颜色
                Specular [_SpecColor]
                //自发光颜色
                Emission [_Emission]
            }
            //开启光照
            Lighting On
            //开启高光
            SeparateSpecular On
            //混合纹理
            SetTexture [_MainTex] {
            	//纹理混合模式参见: https://docs.unity3d.com/Manual/SL-SetTexture.html
            	//主纹理rgb * 光照颜色rgb 2倍亮度, 主纹理alpha * 光照颜色的alpha
                Combine texture * primary DOUBLE, texture * primary

                //Quad: 4倍亮度
                //Combine texture * primary Quad, texture * primary
            }
        }
    }
}


标签: Shader

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号