顶点着色器输出和片元着色器输入
顶点着色器需要输出顶点的最终裁剪空间位置unity 顶点着色器3D角色,以便 GPU 知道屏幕上的栅格化位置以及深度。此输出需要具有 SV_POSITION 语义3D道具,并为 float4 类型。
顶点着色器生成的所有其他输出(“插值器”或“变化”)都是您的特定着色器需要的。从顶点着色器输出的值将在渲染三角形的面上进行插值,并且每个像素的值将作为输入传递给片元着色器。
许多现代 GPU 并不真正关心这些变量的语义;然而,一些旧系统(最主要的是 Direct3D 9 上的着色器模型 2 GPU)存在关于语义的特殊规则:
为了获得最佳的跨平台支持unity 顶点着色器,应将顶点输出和 片元输入标记为 TEXCOORDn 语义。
这样每个片元的颜色都会不同
//可以使用结构体来定义顶点着色器函数的输入数据
struct a2v
{
float4 vertex:POSITION;
float3 normal:NORMAL;//NORMAL 表示模型空间中的顶点法线
};
//返回值也可以使用结构体
struct v2f
{
float4 pos:SV_POSITION; //投影空间的顶点位置
fixed3 color:COLOR0; //颜色
};
v2f vert (a2v v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.color = v.normal * 0.5 + fixed3(0.5,0.5,0.5); //v.normal范围为-1~1,乘0.5再加0.5,最后color为0~1
return o;
}
Shader "ShaderLab学习/Shader03"
{
//属性,这里是暴露给外部交互的属性,可以是图片,颜色,数值等等
Properties
{
//类比C++中定义变量的格式
//color _Color = ragb(1.0,1.0,1.0,1.0);//颜色
//属性定义的方式
//属性名("属性说明",属性类型) = 属性默认值
_Color("颜色",color) = (1.0,1.0,1.0,1.0)
//Range是float类型以范围的方式用滑块条表现的特殊形式
_Light("亮度",Range(0,1)) = 1.0
}
SubShader
{
//渲染标记,此处是将渲染的物体标记为不透明物体
Tags { "RenderType"="Opaque" }
LOD 100
//UnityShaderLab中LOD的作用
//https://blog.csdn.net/linjf520/article/details/117651726
//一个pass表示一次渲染的过程,一个subshader中可以有多个pass
Pass
{
//表示开始shader代码编程
CGPROGRAM
//指定顶点着色器函数 vert
#pragma vertex vert
//指定片元着色器函数 frag
#pragma fragment frag
//如果在属性中写了属性值,需要在这里定义同名的变量才能在Shader中使用
fixed4 _Color;
half _Light;
/*
fixed half float 都表示浮点数
float 单精度浮点数
half 表示的是半精度浮点数
fixed 定点数
浮点数后面跟数字表示有多少个浮点数
float 一个浮点数
float2 表示两个浮点数 也可以表示二维向量 float2 a; a.x a.y 分别访问对应float
float3x3 可以人为是二维数组也可以是矩阵
*/
//可以使用结构体来定义顶点着色器函数的输入数据
struct a2v
{
float4 vertex:POSITION;
float3 normal:NORMAL;//NORMAL 表示模型空间中的顶点法线
};
//返回值也可以使用结构体
struct v2f
{
float4 pos:SV_POSITION; //投影空间的顶点位置
fixed3 color:COLOR0; //颜色
};
v2f vert (a2v v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.color = v.normal * 0.5 + fixed3(0.5,0.5,0.5); //v.normal范围为-1~1,乘0.5再加0.5,最后color为0~1
return o;
}
//指定的片元着色器
//SV_Target 表示最后输出的颜色
fixed4 frag (v2f i) : SV_Target
{
return fixed4(i.color,1.0);
}
ENDCG
}
}
}
最后效果
文章来源:https://blog.csdn.net/m0_69722751/article/details/130220248