Shader的属性和语义

属性

Shader 属性property就是Unity面板和shader的连接器。

	Properties {
		// Numbers and Sliders
		_ExampleName ("Integer display name", Integer) = 1
		_ExampleName ("Float display name", Float) = 0.5
		_ExampleName ("Float with range", Range(0.0, 1.0)) = 0.5
		// Colors and Vectors
		_ExampleColor("Example color", Color) = (.25, .5, .5, 1)
		_ExampleVector ("Example vector", Vector) = (.25, .5, .5, 1)
		// Textures
		_ExampleName ("Texture2D display name", 2D) = "" {}
		_ExampleName ("Texture2D display name", 2D) = "red" {}
		_ExampleName ("Texture2DArray display name", 2DArray) = "" {}
		_ExampleName ("Texture3D", 3D) = "" {}
		_ExampleName ("Cubemap", Cube) = "" {}
		_ExampleName ("CubemapArray", CubeArray) = "" {}
	}

语义

应用阶段到顶点着色器时用常用的语义如下:

  • POSITION:模型空间中的顶点位置,通常是float4类型

  • NORMAL:模型空间中的顶点法线,通常是float3类型

  • TANGENT:模型空间中的顶点切线,通常是float4类型

  • TEXCOORD:模型空间中的顶点纹理坐标,通常是float4 float2类型
    TEXCOORD0表示第一组坐标纹理 SHADERMODEL版本支持最大个数 2-3 支持8个 4-5 支持16个

  • COLOR:模型空间中的顶点颜色,通常是float4或fixed4类型

顶点着色器传递数据给片元着色器时常用的语义如下:

  • SV_POSITION:裁剪空间中的顶点坐标
  • COLOR0:输出第一组顶点颜色,不是必须
  • COLOR1:输出第二组顶点颜色,不是必须
  • TEXCOORDn:输出第n组纹理坐标,不是必须

片元着色器输出数据到unity阶段常用的语义如下:

  • SV_TARGET 输出值将存储到渲染目标(render target)中,等同于DX9中的COLOR语义

写法如下哦

struct a2v {
float4 vertex : POSITION;
float3 normal : NORMAL;
float4 texcoord : TEXCOORD0;
};

struct v2f {
float4 pos : SV_POSITION;
fixed3 color : COLOR0;
};
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值