UnityShader----ShaderLab

1.ShaderLab框架

Shader “StudyShader/MyFirstShader”{
——————————//属性接口,贴图颜色等,以便在Untiy编辑器里选定

    Properties{    
    _Color("Main Color",Color)=(1,1,1,1)          //颜色
//      变量名  Inspector名 类型    默认值

    _MainTex("Base (RGB)",2D)="White"{}           //2D纹理,方形2次方尺寸
    _RangeValue("RangeValue",Range(0,1))=0.5      //浮点数,通过最大最小值的滑动条来修改
    _RectTex("Rect tex",Rect)=""{}                //长方形纹理,非2次方
    _CubeMap("Cube Map",Cube)=""{}                //6面立方贴图纹理,如天空盒贴图
    _FloatNum("",Float)=2.0                       //浮点数,直接输入的值
    _VectorValue("Vector Value",Vector)=(1,1,1,1) //4维向量,4个可填的值
} 

1.在纹理后面{}里为纹理属性
TexGen texgenmode纹理生成模式(自动纹理坐标生成模式)
LightmapMode 光照贴图模式

属性对应的Inspecter面板

——————————//Shader实现,可写多个SubShader来适应各种显卡
SubShader{
Pass{ //通道,完整的渲染过程,一个SubShader至少一个Pass通道,每个Pass都会执行
}
}
SubShader{
Pass{
}
}
——————————//FallBack,所有SubShader都不适用的情况下,使用这个后援Shader
FallBack “Diffuse”
}

2.SubShader

SubShader{ //[]为可选
———[Tags]——标签指定值,能设置任意多个标签
Tags{
“TagName1”=”Value1”

“Queue”=”Geometry”
“RenderType”=”Background”
}

1.Rendering Order渲染顺序 -Queue

    Background         常用于SkyBox
    Geometry           最常用,用作不透明物体
    Transparent        透明物体
    Overlay            用作叠加

2.RenderType

    Opaque             不透明
    Transparent        半透明
    TransparentCutour  透明遮罩
    Background         天空
    Overlay
    TreeOpaque
    TreeTransparentCutout
    TreeBillboard
    Grass
    GrassBillboard

3.ForceNoShadowCasting 是否要有阴影,默认true

    true
    false

4.IgnoreProjector 忽略投影,默认false

    true
    false

——–[CommonState]——-公共状态
Cull off //剔除模式为关
1.Cull 多边形剔除模式
back front off
2.ZTest 默认LEqual(小于等于)
Less Greater LEqual GEqual Equal NotEqual Always
3.ZWrite 深度写模式
On Off
4.AlphaTest
5.Blend SourceBlendMode DestBlendMode //alpha混合模式
值: One DstAlpha
Zero OneMinusSrcColor
SrcColor OneMinusSrcAlpha
SrcAlpha OneMinusDstColor
DstColor OneMinusDstAlpha
如: Blend One Zero
Blend DstColor SrcColor

6.Fog 雾参数
Fog{
Mode XXX
Color
Density
Range
}
7.ColorMask RGB A 0
8.Offset 深度偏移

———[Pass]————–通道

Pass{    
//这些设定针对当前通道
    [Name and Tags] 
    1.LightMode   光照模式tag
    [RenderSetup]
    [TextureSetup]

CGPROGRAM
#pragma vert
#pragma frag
...
#include "UnityCG.cginc"

ENDCG

}

猜你喜欢

转载自blog.csdn.net/noEnoughChief/article/details/82147556
今日推荐