5435人加入学习
(36人评价)
Unity Shader入门(Unity2018.3)

完成与2019-03-31

价格 ¥ 380.00
该课程属于 Unity - A计划(永久有效期) 请加入后再学习

顶点着色器输入语义

语义:

可以理解为是一个标记。

最终也就是让Shader知道在哪里读数据,并且把数据输出到哪里。

例如:

struct a2v

{

    float4 texcoord : TEXCOORD0

}

上面a2v输入结构体中的语义   :TEXCOORD0

就是将第一套uv存储在变量 texcoord 中

 

如果在输出结构体v2f中我们仍然可以用

:TEXCOORD0  (即使输入结构体a2v中已经有:TEXCOORD0了我们仍然可以使用)这是因为

语义的另一个功能就是寄存器。

 

 

:SV_POSITION

(顶点着色器后使用)

例:float4 vert ( float4 v : POSITION ) : SV_POSITION

:SV_TARGET

(片元着色器后使用)

例:fixed4 frag ( ) :SV_TARGET

以上2种语义是特殊语义,不能乱用。

有时候我们能看见 SV_POSITION &  SV_TARGETSV 被写成了 POSITION &  TARGET 这是因为在DX10 之后引入了一个叫系统数值的语义。 这时候POSITION & TARGET 就有了他自己的目的需要去做的事情。所以我们就用SV_POSITION &  SV_TARGETSV

如果不使用 SV_POSITION &  SV_TARGETSV 而用 POSITION &  TARGET 我们会发现在PS4上会出错。

我们理解为在DX10 之后为了兼容某些硬件,我们引入了新的语义 SV_POSITION &  SV_TARGETSV 而 SV_POSITION &  SV_TARGETSV 是包含  POSITION &  TARGET。

 

 

 

顶点着色器输入结构体种的语义笔记

:POSITION 

(模型空间中的顶点位置,通常是float4类型)

:  NORMAL 

(顶点法线,通常是float3类型)

:TANGENT 

(顶点切线,通常是float4类型)

TEXCOORDn

( 顶点的纹理坐标,TEXCOOD0表示第一组uv坐标纹理通常是float2 , float4类型 )

(Shader Model2 & 3 可以支持最多 8 个TEXCOORD)

(Shader Model4 & 5 可以支持最多 16 个TEXCOORD)

COLOR 

(顶点颜色,通常是fixed4类型)

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

授课教师

课程特色

下载资料(1)
视频(184)