Unity Shader入门

 

Properties语义块支持的属性类型

Properties语义块支持的属性类型
属性类型默认值的定义语法例子
Intnumber_Int("Int",Int)=2
Floatnumber_Float("Float",Float)=1.5
Range(min,max)number_Range("Range",Range(0.0,5.0))=3.0
Color(number,number,number,number)_Color("Color",Color)=(1,1,1,1)
Vector(number,number,number,number)_Vector("Vector",Vector)=(2,3,6,1)
2D"defaulttexture"{}_2D("2D",2D)=""{}
Cude"defaulttexture"{}_Cude("Cude",Cude)="white"{}
3D"defaulttexture"{}_3D("3D",3D)="black"{}

 

 

 

 

 

 

 

 

 

 

常见的渲染状态设置选项

常见的渲染状态设置选项
状态名称设置指令解释
CullCull Back | Flont | Off设置剔除模式:剔除背面 | 正面 | 关闭剔除
ZTestZTest Less Greater | LEqual | GEqual | Equal | NotEqual | Always设置深度测试时使用的函数
ZWriteZWrite On | Off开启 | 关闭深度写入
BlendBlend SrcFactor DstFactor开启并设置混合模式

 

 

 

 

 

 

SubShader的标签类型

SubShader的标签类型
标签类型说明例子
Queue控制渲染顺序,指定该物体属于哪一个渲染队列Tags{"Queue" = "Transparent"}
RenderType对着色器进行分类,例如这是一个不透明/透明物体Tags{"RenderType" = "Opaque"}
DisableBatching是否对SubShader进行批处理Tags{"DisableBatching" = "True"}
ForceNoShadowCasting控制使用该SubShader的物体是否会投射阴影Tags{"ForceNoShadowCasting" = "True"}
IgnoreProjector是否受Projector的影响,通常用于半透明物体Tags{"IgnoreProjector" = "False"}
CanUseSpriteAtlas当该SubShader是用于精灵时,将该标签设为"False"Tags{"CanUseSpriteAtlas" = "False"}
PreviewType指明材质面板将如何预览该材质,默认为球形Tags{"PreviewType" = "Plane"}

 

 

 

 

 

 

 

 

 

特殊的Pass

  • UsePass:使用该命令可以复用其他Unity Shader中的Pass
  • GrabPass:该Pass负责抓取屏幕并将结果存储在一张纹理中

 

ShaderLab属性类型和Cg变量类型的匹配关系

ShaderLab属性类型和Cg变量类型的匹配关系
ShaderLab属性类型Cg变量类型

Color, Vector

float4, half4, fixed4

Range, Floatfloat, half, fixed
2D

sampler2D

CubesamplerCube
3Dsampler3D

 

 

 

 

 

 

 

UnityCG.cginc中的一些常用的结构体

UnityCG.cginc中的一些常用的结构体
名称描述包含的变量
appdata_base可用于顶点着色器的输入顶点位置、顶点法线、第一组纹理坐标
appdata_tan可用于顶点着色器的输入顶点位置、顶点切线、顶点法线、第一组纹理坐标
appdata_full可用于顶点着色器的输入顶点位置、顶点切线、顶点法线、四组或更多纹理坐标
appdata_img可用于顶点着色器的输入顶点位置、第一组纹理坐标
v2f_img可用于顶点着色器的输出裁剪空间中的位置、纹理坐标

 

常用语义

从应用阶段传递模型数据给顶点着色器时Unity支持的常用语义
语义描述
POSITION模型空间的顶点位置,通常时float4类型
NORMAL顶点法线,通常时float3类型
TANGENT顶点切线,通常时float4类型
TEXCOORDn

纹理坐标,float2或float4

COLOR顶点颜色,fixed4或float4

 

 

 

 

 

 

 

从顶点着色器传递给片元着色器时Unity使用的常用语义
语义描述
SV_POSITION裁剪空间的顶点坐标
COLOR0通常用于输出第一组颜色信息
COLOR1通常用于输出第二组颜色信息
TEXCOOED0~TEXCOORD7

通常用于输出纹理坐标

片元着色器输出时Unity支持的常用语义
语义描述
SV_Target输出值将会存储到渲染目标中

 

 

 

Debug

  • 假彩色图像
  • Visual Studio+Graphics Debugger
  • 帧调试器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值