UnityShader 语义、内置文件、变量

内置文件

cgnic name Describe
UnityCG.cginc ,包含了最常用变量、帮助函数、宏、结构体
Lighting.cginc 各种内置的光照模型,表面着色器会自动包含该文件
HLSLSupport.cginc 声明了许多用于跨平台编译的宏和定义
UnityGlobalIllumination.cginc 全局光照

内置常用结构体

struct name include variables
appdata_base 顶点位置、顶点法线、第一组纹理坐标
appdata_tan 顶点位置、顶点切线、顶点法线、第一组纹理坐标
appdata_full 顶点位置、顶带你切线、顶点法线、四组纹理坐标
appdata_img 顶点位置、第一组纹理坐标
v2f_img (用于顶点着色器输出),裁剪空间位置、纹理坐标

内置变换矩阵

matraix name Describe
UNITY_MATRIX_MVP 当前的模型·观察·投影矩阵,用于将顶点方向矢量从模型空间变换到裁剪空间
UNITY_MATRIX_MV 当前的模型·观察矩阵,用于将顶点方向矢量从模型空间变换到裁剪空间
UNITY_MATRIX_V 当前的观察矩阵,用于将顶点方向矢量从世界空间变换到观察空间
UNITY_MATRIX_P 当前的投影矩阵,用于将顶点方向矢量从观察空间变换到世界空间
UNITY_MATRIX_T_MV UNITY_MATRIX_MV的转置矩阵
UNITY_MATRIX_IT_MV
UNITY_MATRIX_MV的逆转置矩阵,用于将法线从模型空间变换到观察空间,

也可用于得到UNITY_MATRIX_MV的逆矩阵。//可见链接最后的推导过程

_Object2World 把顶点方向矢量从模型空间变换到世界空间
_World2Object _Object2World的逆矩阵,用于将顶点方向矢量从世界空间变换到模型空间

内置变量-摄像机和屏幕参数

variable name type Describe
_WorldSpaceCameraPos float3 摄像机在世界空间中的位置
_ProjectionParams float4
x=1.0(-1.0如果正在使用一个翻转的投影矩阵渲染),y=Near,z=Far,w=1.0+1.0/Far.

其中Near和Far分别是近裁剪平面、远裁剪平面 和摄像机的距离

_ScreenParams float4
x=width,y=height,z=1.0+1.0/width,w=1.0+1.0/height,

其中width和height分别是摄像机的渲染目标(Render Target)的像素宽度和高度

_ZBufferParams float4 x=1-Far/Near,y=Far/Near,z=x/Far,w=y/Far,该变量用于线性化Z缓存中的深度值
unity_OrthoParams float4
x=width,y=height,z没有定义,w=1.0该摄像机是正交摄像机或 w=0.0该摄像机是

透视摄像机,其中width和height是正交投影摄像机的宽度和高度

unity_CameraProjection float4x4  该摄像机的投影矩阵
unity_CameraInvProjection float4x4 该摄像机的投影矩阵的逆矩阵
unity_CameraWorldClipPlanes[6]
该摄像机的6个裁剪平面在世界空间下的等式

按:左、右、下、上、近、远裁剪平面

UnityShader语义

从应用阶段传递模型数据给顶点着色器语义(模型空间中)

Semantics Describe
POSITION 顶点坐标,一般为float4
NORMAL 顶点法线,一般为float3
TANGENT 顶点切线,一般为float4
TEXCOORDn(n≥0) 顶点的纹理坐标,TEXCOORD0表示第一组纹理坐标(依次类推),一般为float2或float4
COLOR 顶点的颜色,一般为fixed4或float4

从顶点着色器传递给片元着色器语义(裁剪空间中)

Semantics Describe
SV_POSITION 顶点坐标,结构体必须包含此变量修饰符
COLOR0 第一组顶点颜色
COLOR1 第二组顶点颜色
TEXCOORD0 ~ TEXCOORD7 顶点对应的纹理坐标

片元着色器输出至Unity语义

SV_Target 输出值将会存储到渲染目标中

原文地址:https://www.cnblogs.com/baolong-chen/p/11668645.html

时间: 2024-11-07 18:54:47

UnityShader 语义、内置文件、变量的相关文章

Flask内置URL变量转换器

Flask内置URL变量转换器: 转换器通过特定的规则执行,"<转换器: 变量名>".<int: year>把year的值转换为证书,因此我们可以在视图函数中直接对year变量进行数学计算: @app.route('/goback/<int:year>' def go_back(year):     return '<p>Welcom to %s ! </p>' %(2019-year) if __name__ == '__m

[Perl] 内置特殊变量

一.正则表达式特殊变量:1.$n  :包含上次模式匹配的第n个子串2.$& :前一次成功模式匹配的字符串3.$`  :前次匹配成功的子串之前的内容4.$' :前次匹配成功的子串之后的内容5.$+ :前一次使用括号的模式匹配的字符串. 二.文件句柄特殊变量:1.$| :如果设置为零,在每次调用函数write或print后,自动调用函数fflush,将所写内容写回文件2.$% :当前输出页号3.$= :当前每页长度4.$- :当前页剩余的行数5.$~ :当前报表输出格式的名称.默认值是文件句柄名.6

nginx内置常用变量

HTTP核心模块支持一些内置变量,变量名与apache里的对应.比如 $http_user_agent,$http_cookie等表示HTTP请求信息的变量. 更多变量: $args, 请求中的参数; $content_length, HTTP请求信息里的”Content-Length”; $content_type, 请求信息里的”Content-Type”; $document_root, 针对当前请求的根路径设置值; $document_uri, 与$uri相同; $host, 请求信息中

Unity 内置Shader变量、辅助函数等

一:标准库里的常用.cginc文件 HLSLSupport.cginc - (automatically included) Helper macros and definitions for cross-platform shader compilation. HLSLSupport.cginc :(自动包含)跨平台着色器编译帮助宏和定义 UnityCG.cginc - commonly used global variables and helper functions. UnityCG.c

Perl内置特殊变量

一.正则表达式特殊变量: 1.$n  :包含上次模式匹配的第n个子串 2.$& :前一次成功模式匹配的字符串 3.$`  :前次匹配成功的子串之前的内容 4.$' :前次匹配成功的子串之后的内容 5.$+ :前一次使用括号的模式匹配的字符串. 二.文件句柄特殊变量: 1.$| :如果设置为零,在每次调用函数write或print后,自动调用函数fflush,将所写内容写回文件 2.$% :当前输出页号 3.$= :当前每页长度 4.$- :当前页剩余的行数 5.$~ :当前报表输出格式的名称.默

Jenkins内置环境变量

一.查看Jenkins有哪些环境变量 1.新建任意一个job 2.增加构建步骤:Execute shell 或 Execute Windows batch command 3.点击输入框下方的“可用环境变量” 4.可以看到有如下变量供使用: 变量名 解释 BUILD_NUMBER The current build number, such as "153" BUILD_ID The current build ID, identical to BUILD_NUMBER for bui

mysql全文索引____内置分词变量

上一节,我们发现搜索'a',但是发现'aa','aaa','aaaa'搜索不出来.为什么呢? 这就涉及到mysql的一个内置变量ft_boolean_syntax. ft_boolean_syntax Variable_name    Value ft_boolean_syntax    + -><()~*:""&|(其中有一个空格) 该变量的意思,表示需要被全文索引的字段通过以上这些变量进行分词切分. 譬如有一段字符串"a,b,c,ab",如果

通过lua获取nginx的内置变量,通过这些变量做些逻辑的处理

Nginx提供了很多内置的变量,如: $arg_PARAMETER 这个变量包含在查询字符串时GET请求PARAMETER的值. $args 这个变量等于请求行中的参数. $binary_remote_addr 二进制码形式的客户端地址. $body_bytes_sent 传送页面的字节数 $content_length 请求头中的Content-length字段. $content_type 请求头中的Content-Type字段. $cookie_COOKIE cookie COOKIE的值

Jmeter之Bean shell使用-常用内置变量

Bean Shell常用内置变量   JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”); ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext. vars - (JMeterVariables):操作jmeter变量,这个变量实