unity shader编程参考

2021-03-06 14:29

阅读:545

标签:rev   not   text   color   选项   法线   结构   知识   min   

这篇不会有理论的学习,只是一些编程参考知识。

 

Properties语义块支持的属性类型:

属性类型 属性类型默认值的定义语法 例   子
Int number _Int("Int",Int) = 2
Float number _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) = ""{}
Cube "defaulttexture"{} _Cube("Cube",Cube) = "white"{}
3D "defaulttexture"{} _3D("3D",3D) = "black"{}

常见的渲染状态设置选项:

状态名称 设置指令 解释
Cull Cull Back|Front|Off 设置提出模式,剔除背面/正面/关闭剔除
ZTest ZTest Less Greator|LEqual|GEqual|Equal|NotEqual|Always 设置深度测试时使用的函数
Zwrite Zwrite On|Off 开启/关闭深度写入
Blend Blend SrcFactor DsFactor 开启并设置混合模式

SubShader的标签类型:

标签类型 说明 例子
Queue 控制渲染顺序,指定该物体属于哪一渲染队列,通过这种方式可以保证所有的透明物体可以在所有不透明后面被渲染,我们也可以自定义使用的渲染队列来控制物体的渲染顺序。 "Queue" = "Transparent"
RenderType 对着色器进行分类,例如这是一个不透明的着色器或是一个透明的着色器等,这可以被用于着色器替换(Shader Replacement)功能。 "RenderType" = "Queue"
DisableBatching 一些Shader在使用批处理是会出现问题,例如使用模型空间下的坐标进行顶点动画。这是可以通过该标签来直接知名是否对改SubShader使用批处理。 "DisableBatching"="True"
ForceNoShadowCasting 控制使用该SubShader的物体是否会投射阴影  
IgnoreProjector 如果该标签值为“True”,那么使用该SubShader的物体将不会受Projector的影响,通常用于半透明。  
CanUseSpriteAltas 当SubShader用于精灵(Sprites)时,将该标签设置为False  
PreviewType 指明材质面板将如何预览该材质,默认情况下,材质将显示为一个球形,我们可以通过把该标签设置为"Plane" "SkyBox"来改变预览类型  

Pass的标签类型:

标签类型 说明 例子
LightMode 定义该Pass在Unity的渲染流水线中的角色 "LightMode"="ForwardBase"
RequirOptions 用于指定当满足某些条件是才渲染该Pass,它的值是一个由空格分隔的字符串。目前,Unity支持的选项有SoftVegetation。在后面的版本中,可能会增加更多的选项 "RequirOptions"="SoftVegetation"

Unity支持的语义:

  POSITION,

  TANGENT,

  NORMAL,

  TEXCOORD0,TEXCOORD1, TEXCOORD2, TEXCOORD3,

  COLOR等

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

ShaderLab属性类型 CG变量类型
Color, Vector float4, half4, fixed4
Range, Float float, half, fixed
2D sampler2D
Cube samplerCube
3D sampler3D

从应用阶段传递模型数据给顶点着色器时Unity支持的常用语义:

语义 描述
POSITION 模型中的顶点位置,通常是float4类型
NORMAL 顶点法线,通常是float3类型
TANGENT 顶点切线,通常是float4类型
TEXCOORDn 该顶点的纹理坐标,TEXCOORD0表示第一组纹理坐标,以此类推,通常是float2或float4类型
COLOR 顶点颜色,通常是fixed4或float4类型

从顶点着色器传递数据给片元着色器时Unity使用的常用语义:

语义 描述
SV_POSITION 裁剪空间中的顶点坐标,结构体中必须包含一个用该语义修饰的变量,等同于DirectX9中的POSITION。但最好使用SV_POSITON
COLOR0 通常用于输出第一组顶点颜色,但不是必要的
COLOR1 通常用于输出第二组顶点颜色,但不是必要的
TEXCOORD0-TEXCOORD7 通常用于输出纹理坐标,但不是必要的

 

 

 

 

unity shader编程参考

标签:rev   not   text   color   选项   法线   结构   知识   min   

原文地址:https://www.cnblogs.com/gy881223/p/14292795.html


评论


亲,登录后才可以留言!