ShaderLab和CG/HLSL的一些数据类型归纳(转)
Posted roz-001
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ShaderLab和CG/HLSL的一些数据类型归纳(转)相关的知识,希望对你有一定的参考价值。
1、ShaderLab和CG变量的匹配关系
ShaderLab属性类型 CG变量类型
Color, Vector float4, half4, fixed4
Range, Float float, half, fixed
2D sampler2D
Cube samplerCube
3D sampler3D
2、UnityCG的一些常用结构体
名称 描述 包含变量
appdata_base 顶点着色器的输入 顶点位置、顶点法线、第一组纹理坐标
appdata_tan 顶点着色器的输入 顶点位置、顶点切线、顶点法线、第一组纹理坐标
appdata_full 顶点着色器的输入 顶点位置、顶点切线、顶点法线、四组(或更多)纹理坐标
appdata_img 顶点着色器的输入 顶点位置、第一组纹理坐标
v2f_img 顶点着色器的输出 裁剪空间中的位置、纹理坐标
3、UnityCG的一些常用工具函数
函数名 描述
float3 WorldSpaceViewDir(float4 v) 输入一个模型空间中的顶点位置,返回世界空间中从该点到摄像机的观察方向
float3 ObjSpaceViewDir(float4 v) 输入一个模型空间中的顶点位置,返回模型空间中从该点到摄像机的观察方向
float3 WorldSpaceLightDir(float4 v) 输入一个模型空间中的顶点位置,返回世界空间中从该点到光源的光照方向,没有被归一化。仅可用于前向渲染中。
float3 ObjSpaceLightDir(float4 v) 输入一个模型空间中的顶点位置,返回世界空间中从该点到光源的光照方向,没有被归一化。仅可用于前向渲染中。
float3 UnityObjectToWorldNormal(float3 norm) 把法线方向从模型空间转换到世界空间中。
float3 UnityObjectToWorldDir(in float3 dir) 把方向矢量从模型空间变换到世界空间中。
float3 UnityWorldToObjectDir(float3 dir) 把方向矢量从世界空间变换到模型空间中。
4、顶点着色器输入数据的语义(Unity所支持的)
语义 描述
POSITION 模型空间中的顶点位置,通常是float4类型
NORMAL 顶点法线,通常是float3类型
TANGENT 顶点切线,通常是float4类型
TEXCOORDn 该顶点的纹理坐标,TEXCOORD0表示第一组纹理坐标,以此类推。通常是float2或者float4类型
COLOR 顶点颜色,通常是fixed4或者float4类型
5、顶点着色器的输出数据的语义(Unity所支持的)
语义 描述
SV_POSITION 裁剪空间中的顶点坐标,结构体中必须包含一个用该语义修饰的变量。等同于DX9中的POSITION,但最好使用SV_POSITION
COLOR0 通常用于输出第一组顶点颜色,但不是必需的
COLOR1 通常用于输出第二组顶点颜色,但不是必需的
TEXCOORD0~TEXCOORD7 通常用于输出纹理坐标,但不是必需的
原文:https://blog.csdn.net/u012689623/article/details/73249904?utm_source=blogxgwz8
以上是关于ShaderLab和CG/HLSL的一些数据类型归纳(转)的主要内容,如果未能解决你的问题,请参考以下文章
UnityShader之顶点片段着色器Vertex and Fragment ShaderShader资料
Vertex and FragmentShader顶点与片段着色器