Unity入门—顶点着色器与片元着色器以及它们的通信机制
逐个顶点调用的,而片元着色器是柱逐片元调用的。片元着色器中的输入实际上是把顶点着色器的输出进行插值后得到结果。
现在开始实验:
双击unity shader文件,删除所有代码,并复制下面这一段:
Shader "Custom/Chapter5-SimpleShader"//shader文件名
{
/*因此SubShader将使用默认的渲染设置和标签设置。在SubShader语义块中,我们定义了一个
Pass,在这个Pass中我们同样没有进行任何自定义的渲染设置和标签设置。*/
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert //包含了顶点着色器
#pragma fragment frag //包含了片元着色器
/*顶点着色器代码它是逐顶点执行的。 vert函数的输入v包含了这顶点的位置,
这是通过 POSITION 语义指定的。 它的返回值是一个float4类型的变量,它是该顶点在裁剪空间中的位置*/
float4 vert(float4 v : POSITION) : SV_ POSITION
{
return mul(UNITY_ MATRIX_ MVP, v);
}
/*frag 函数没有任何输入。它的输出是 一个 fixed4 类型的变量,并且使用
了 SV_ Target 语义进行限定。 SV_ Target 也是 HLSL 中的一个系统语义, 它等同于告诉渲染器,
把用户的输出颜色存储到一个渲染目标( render target)中,这里将输出到默认的帧缓存中。片元着色器
中的代码返回了一个表示白色的 fixed4 类型的变量。 片元着色器输出的颜色的每个分量范围在[0, 1],
其中(0, 0, 0) 表示黑色, 而(1, 1, 1) 表示白色。*/
fixed4 frag() : SV_ Target
{
return fixed4(1. 0, 1. 0, 1. 0, 1. 0);
}
ENDCG
}
}
}
效果图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)