ShaderForge学习笔记:Constant Vector(向量)
发表于2018-07-16
ShaderForge是一款为Unity所用的、基于节点操作的Shader插件。所以这个ShaderForge学习笔记系列希望可以帮到大家。本文主要让大家了解插件中向量这个概念和使用方法。
shaderforge向量
节点一览
1、Value 一维数据
2、Vector2 二维数据
典型的二维数据有:uv信息
3、Vector3 三维数据
典型的三维数据有:
空间位置坐标(x,y,z) RGB颜色 法线信息 法线贴图
4、Vector4 四维数据
典型的四维数据有:
RGBA的颜色
5、Matrix4x4
4x4的矩阵
shaderforge对维度的表现在于节点输入输出端口发出的连线的线条数,有几条线就代码节点的数据是几维的。
维度变换
1、高维度变低维度
使用部分通道
例如使用RGBA颜色的R通道,就将四维数据降为了一维数据。
使用ComponentMask节点手动降维度
Component Mask
用于数据维度的分解
高维数据连接到输入端,节点中有四个通道的选项,可以让我们控制通道的开启与关闭,并可以将任意一个通道设置成任意一个输入通道的数据。输出的是将节点在四个选项中开启的所有通道附加起来的高维数据和所有开启的单个通道。
2、低维度变高维度
维度的自动变换
当低维度的数据与高维度的数据进行计算时,shaderforge会将低纬度的数据自动提升上去
一维数据转为高维数据
自身附加自身
1->(1,1,1,1)
二维以上的数据转为更高维度的数据
在原来的基础上附加0
(1,2)->(1,2,0,0)
通过Append节点手动提升维度
Append
低维数据连接到输入端,高维数据在输出端输出
Append的节点会将计算好的数据以一种颜色RGBA的形式显示出来
Append节点最多可以附加四个一维数据(因为shader中最高维度的数据类型是float4,且我们的计算最高涉及到四维)
3、Unity Shader中的维度变换
GPU是以四维向量为基本单位来计算的。4个浮点数所组成的float4向量是GPU内置的最基本类型。使用GPU对两个float4向量进行计算,与CPU对两个整数或两个浮点数进行计算一样简单,都是只需要一个指令就可以完成。
HLSH的基本数据类型定义了float、int和bool等非向量类型,但是它们实际上都会被Complier转换成float4的向量,只要把float4向量的其中3个数值忽略,就可以把float4类型作为标量使用。
在使用float4向量中的个别数值时,可以用xyzw或rgba,都可以用来表示四维向量中的数值。但不能把它们混用,例如不能用xyba,把它视为颜色时就用rgba,否则就是用xyzw,不能把这二者混合使用。
float4 appendData = float4(float3(x,y,z),float(w)) //数据维度附加 float w = appendData.w; //或appendData.a; //数据维度的分解
单个数据与数组
一个颜色是一个单个的三维数据,一个图片就是一个三维数组。
来自:https://blog.csdn.net/v_xchen_v/article/details/79250337