【Unity Shader 中Pass相关介绍_第二篇】

简介: 【Unity Shader 中Pass相关介绍_第二篇】

1.1.语义


接着上一篇我们继续


a.顶点着色器的输入语义。(不是输出


输入参数给到顶点函数,输入的参数需要填充一个语义,用于表示所传递的数据。


下面是顶点着色器输入语义:

语义 描述
POSITION 顶点的坐标信息,通常为float3或者float4类型
NORMAL 顶点的法线信息,通常为float3类型
TEXCOORD0 模型的第一套UV坐标,通常为float2、float3或者float4类型,TEXCOORD0到TEXCOORD3分别对应为第一到第四套UV坐标
TANGENT 顶点的切向量,通常为float4类型
COLOR 顶点的颜色信息,通常为float4类型

注意事项:

当顶点信息包含的元素少于顶点着色器输人所需要的元素时,缺少的部分会被0填充,而W分量会被1填充。例如:项点的 UV 坐标通常是二维向量,只包含x和y元素。如果输人的语义 TEXCOORD0 被声明为float4 类型,那么顶点着色器最终获取到的数据将变成(x,y,0,1)。


b.顶点着色器的输出和片段着色器输入语义。(顶点的输出 片段的输入!)


一个渲染流程分为三个阶段:应用阶段、几何阶段、光栅化阶段。

在应用阶段最重要是输出渲染所需的几何数据,也就是渲染图元,渲染图元可以是点、线和三角面。这些数据会传到下一阶段,即几何阶段。

在几何阶段通过对输入的渲染图元处理,如 顶点着色器(空间变换、顶点着色等)、曲面细分着色器、几何着色器、裁剪、屏幕映射;输出屏幕空间的二维顶点坐标、对应的深度、着色等信息传递给下一阶段光栅化阶段。

光栅化阶段主要是决定每个渲染图元中的那些像素会被绘制在屏幕上,对上一阶段的逐顶点数据(纹理、顶点颜色)进行插值。(这三个阶段是概念流水线,只是做了基本的功能划分。)


下面是渲染流程三阶段(概念阶段):

image.png

image.png

图形渲染流水线以顶点数据作为开始,当GPU获取到CPU传递的顶点数据之后,图形渲染流水线正式开始执行。


下面是部分GPU渲染流水线:


image.png

在整个渲染流水线中,顶点着色器需要输出顶点在裁切空间中的坐标,这样GPU就可以知道顶点在屏幕上的光栅化位置及深度值。在顶点函数中输出参数使用float4类型的SV_POSITION语义进行填充。


根据上面提到到渲染流程三阶段,顶点着色器输出的值将会在光栅化阶段,对逐顶点数据(纹理、顶点颜色)插值计算,最终作为像素值输入到片段着色器。也即 顶点着色器的输入也可以成为片段着色器的输入。

温馨提示: 这就解释了有些Shader的片段函数中只有输出参数,没有输入参数。


下面是顶点着色器输出和片段着色器输入常用的语义:

语义 描述
SV_POSITION 顶点在裁切空间中的坐标,float4类型
TEXCOORD0、TEXCOORD1 等 用于声明任意高精度的数据,例如纹理坐标、向量等
COLOR0、COLOR1 用于声明任意低精度的数据,例如颜色、数值区间[0,1]的变量
特别提醒 TEXCOORDn 或者 COLORn 不特指UV和颜色,语义范围只包括但不限于此。忘各位仁兄不要受骗。


在顶点和片段着色器的输入和输出参数后被冒号:隔开的就是语义,语义所代表的是需要传递的数据。那么如何才能在CG代码块中调用属性变量,如何起到关联作用,最终在属性面板中做调整得到想要的效果。这涉及到在CG中调用Proprieties代码块声明,做到Shader程序可访问这些属性,需要在CG代码块中再次声明。

关于CG中声明属性变量,会在下一篇进行补充。

相关文章
|
图形学 Android开发 iOS开发
|
4月前
|
图形学 数据可视化 开发者
超实用Unity Shader Graph教程:从零开始打造令人惊叹的游戏视觉特效,让你的作品瞬间高大上,附带示例代码与详细步骤解析!
【8月更文挑战第31天】Unity Shader Graph 是 Unity 引擎中的强大工具,通过可视化编程帮助开发者轻松创建复杂且炫酷的视觉效果。本文将指导你使用 Shader Graph 实现三种效果:彩虹色渐变着色器、动态光效和水波纹效果。首先确保安装最新版 Unity 并启用 Shader Graph。创建新材质和着色器图谱后,利用节点库中的预定义节点,在编辑区连接节点定义着色器行为。
267 0
|
4月前
|
C# 图形学 C语言
Unity3D学习笔记3——Unity Shader的初步使用
Unity3D学习笔记3——Unity Shader的初步使用
47 0
|
4月前
|
数据可视化 图形学
小功能⭐️Unity2018 Shader Graph——全息影像、物体消融
小功能⭐️Unity2018 Shader Graph——全息影像、物体消融
|
6月前
|
图形学
【实现100个unity特效】shader实现3D物品闪光和描边效果
【实现100个unity特效】shader实现3D物品闪光和描边效果
83 0
|
6月前
|
开发工具 图形学
【推荐100个unity插件之11】Shader实现UGUI的特效——UIEffect为 Unity UI 提供视觉效果组件
【推荐100个unity插件之11】Shader实现UGUI的特效——UIEffect为 Unity UI 提供视觉效果组件
372 0
|
6月前
|
图形学
【实现100个unity特效之2】使用shader和shader Graph实现2d图片描边效果(附源码)
【实现100个unity特效之2】使用shader和shader Graph实现2d图片描边效果(附源码)
259 0
|
6月前
|
图形学 开发者
【实现100个unity特效之1】使用Shader Graph实现动物森友会的世界弯曲效果(带源码)
【实现100个unity特效之1】使用Shader Graph实现动物森友会的世界弯曲效果(带源码)
124 0
|
7月前
|
图形学 异构计算
【Unity Shader 中Pass相关介绍_第四篇】
【Unity Shader 中Pass相关介绍_第四篇】
|
7月前
|
缓存 图形学 异构计算
【#Unity Shader#Amplify Shader Editor(ASE)_第二篇】
【#Unity Shader#Amplify Shader Editor(ASE)_第二篇】