栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

Unity Shader学习之Unity Shader中常用变量、文件等说明

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity Shader学习之Unity Shader中常用变量、文件等说明

1.顶点/片元函数声明

#pragma vertex name

#pragma fragment name

其中name为函数名

2.常用语义

从应用阶段传递模型数据给顶点着色器时Unity支持的常用语义

语义描述
POSITION模型空间中的顶点位置,通常为float4类型
NORMAL顶点法线,通常为float3类型
TANGENT顶点切线,通常为float4类型

TEXCOORDn,如TEXCOORD0,TEXCOORD1等

该顶点的纹理坐标,TEXCOORD0表示第一组纹理坐标,依此类推,通常为float2或float4类型
COLOR顶点颜色,通常是fixed4或float4

从顶点着色器传递数据给片元着色器时Unity使用的常用语义

语义描述
SV_POSITION裁剪空间中的顶点坐标,结构体中必须包含一个用该语义修饰的变量。等同于DirectX9中的POSITION,但最好使用SV_POSITION
COLOR0通常用于输出第一组顶点颜色,但不是必须的
COLOR1通常用于输出第二组顶点颜色,但不是必须的
TEXCOORD0~TEXCOORD7通常用于输出纹理坐标,但不是必须的

片元着色器输出时Unity支持的常用语义

语义描述
SV_Target输出值将会存储到渲染目标(render target)中。等同于DirectX9中的COLOR语义,但最好使用SV_Target

3.ShaderLab属性类型和Cg变量类型的匹配关系

ShaderLab属性类型Cg变量类型
Color,Vectorfloat4,half4,fixed4
Range,Floatfloat,half,fixed
2Dsampler2D
CubesamplerCube
3Dsampler3D

4.UnityShader中常用的包含文件

文件名描述
UnityCG.cginc包含了最常使用的帮助函数、宏和结构体等
UnityShaderVariables.cginc在编译Unity Shader时,会被自动包含进来。包含了很多内置的全局变量,如UNITY_MATRIX_MVP等
Lighting.cginc包含了各种内置的光照模型,如果编写的是Surface Shader的话,会自动包含进来
HLSLSupport.cginc在编译Unity Shader时,会被自动包含进来。声明了很多跨平台编译的宏和定义

5.UnityCG.cginc中一些常用的结构体

名称描述包含的变量
appdata_base可用于顶点着色器的输入顶点位置、顶点法线、第一组纹理坐标
appdata_tan可用于顶点着色器的输入顶点位置、顶点切线、顶点法线、第一组纹理坐标
appdata_full可用于顶点着色器的输入顶点位置、顶点切线、顶点法线、四组(或更多)纹理坐标
appdata_img可用于顶点着色器的输入顶点位置、第一组纹理坐标
v2f_img可用于顶点着色器的输出裁剪空间中的位置、纹理坐标

6.UnityCG.cginc中的一些常用的帮助函数

函数名描述
float3 WorldSpaceViewDir(float4 v)输入一个模型空间中的顶点位置,返回世界空间中从该点到摄像机的观察方向
float3 ObjSpaceViewDir(float4 v)输入一个模型空间中的顶点位置,返回模型空间中从该点到摄像机的观察方向
float3 WorldSpaceLightDir(float4 v)仅可用于前向渲染中。输入一个模型空间中的顶点位置,返回世界空间中从该点到光源的光照方向。没有被归一化
float3 ObjSpaceLightDir(float4 v)仅可用于前向渲染中。输入一个模型空间中的顶点位置,返回模型空间中从该点到光源的光照方向。没有被归一化
float3 UnityObjectToWorldNormal(float3 norm)把法线方向从模型空间转换到世界空间中。
float3 UnityObjectToWorldDir(float3 dir)把方向矢量从模型空间转换到世界空间中。
float3 UnityWorldToObjectDir(float3 dir)把方向矢量从世界空间变换到模型空间中。

7.Cg/HLSL中3种精度的数值类型

类型精度
float最高精度的浮点值。通常使用32位来存储。
half中等精度的浮点值。通常使用16位来存储,精度范围是-60000~60000
fixed最低精度的浮点值。通常使用11位来存储,精度范围是-2.0~2.0

8.Unity支持的Shader Target

指令描述
#pragma target 2.0

默认的Shader Target等级。相当于Direct3D 9上的

Shader Model 2.0,不支持对顶点纹理的采样,

不支持显式的LOD纹理采样

#pragma target 3.0

相当于Direct3D 9上的Shader Model 3.0,支持对

顶点纹理的采样等。

#pragma target 4.0

相当于Direct3D 9上的Shader Model 4.0,支持几何

着色器等

#pragma target 5.0相当于Direct3D 9上的Shader Model 5.0

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/951339.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号