2023年12月7日发(作者:)
的工具函数和宏(一)
一、包含的数学常数
UNITY_PI 圆周率
UNITY_TWO_PI 2倍圆周率
UNITY_FOUR_PI 4倍圆周率
UNITY_INV_PI 圆周率的倒数
UNITY_INV_TWO_PI 2倍圆周率的倒数
UNITY_INV_FOUR_PI 4倍圆周率的倒数
UNITY_HALF_PI 半圆周率
UNITY_INV_HALF_PI 半圆周率的倒数
二、与颜色空间相关的常数和工具函数
1、IsGammaSpace() 用于判断当前是否启用了伽马颜色空间
根据宏UNITY_COLORSPACE_GAMMA是否被启用了,判断当前是否启用了伽马颜色空间。本函数在新版本中不再使
用,保留它是为了兼容旧版本及很多已经存在的着色器。
2、GammaToLinearSpaceExact(float value) 把一个颜色值精确地从伽马颜色空间变换到线性空间。
3、GammaToLinearSpace(half3 sRGB) 把颜色值近似地从伽马颜色空间变换到线性空间。
4、LinearToGammaSpaceExact(float value) 把一个颜色值精确地从线性空间变换到伽马颜色空间。
5、LinearToGammaSpace(half3 linRGB) 把颜色值近似地从线性空间变换到伽马颜色空间。
三、描述顶点数据的结构体
不同场合中渲染引擎需要顶点携带的信息是不同的,如果只用一个把所有顶点信息都添加在内的结构体去描述顶点,在
很多场合会造成数据的冗余。因此,Unity预定了若干用以描述顶点数据的结构体,方便开发者在不同的场合使用。
1、appdata_base
struct appdata_base{ float4 vertex : POSITION; //模型空间顶点坐标 float3 normal : NORMAL; //模型空间顶点法线 float4
texcoord : TEXCOORD0; //模型空间顶点使用的第一层纹理坐标 UNITY_VERTEX_INPUT_INSTANCE_ID //顶点多例
化的ID};
UNITY_VERTEX_INPUT_INSTANCE_ID为定义顶点多例化ID用的一个宏。
2、appdata_tan
struct appdata_tan { float4 vertex : POSITION; //模型空间顶点坐标 float4 tangent : TANGENT; //模型空间顶点切线
float3 normal : NORMAL; //模型空间顶点法线 float4 texcoord : TEXCOORD0; //顶点使用的第一层纹理坐标
UNITY_VERTEX_INPUT_INSTANCE_ID //顶点多例化的ID};
相对于appdata_base结构体,appdata_tan多了一个顶点的切线信息,在使用法线贴图等技术时需要利用顶点的切线。相对于appdata_base结构体,appdata_tan多了一个顶点的切线信息,在使用法线贴图等技术时需要利用顶点的切线。
3、appdata_full
struct appdata_full { float4 vertex : POSITION; float4 tangent : TANGENT; float3 normal : NORMAL; float4 texcoord :
TEXCOORD0; float4 texcoord1 : TEXCOORD1; float4 texcoord2 : TEXCOORD2; float4 texcoord3 : TEXCOORD3;
fixed4 color : COLOR; UNITY_VERTEX_INPUT_INSTANCE_ID};
appdata_full定义了最全的顶点信息,该结构体有四层纹理坐标和顶点颜色。在做地形渲染时,通常会用到非常多的纹
理,以产生复杂多变的地面效果。


发布评论