shader内置变量
内置变量都在UnityShaderVariables.cginc文件中声明
变换矩阵
All these matrices arefloat4x4 type.
|
Name |
Value |
|
UNITY_MATRIX_MVP |
Current model * view * projection matrix. 从object space转到 projection space |
|
UNITY_MATRIX_MV |
Current model * view matrix. 从object space转到camera space |
|
UNITY_MATRIX_V |
Current view matrix. 从world space转到camera space |
|
UNITY_MATRIX_P |
Current projection matrix. 从camera space转到projection space |
|
UNITY_MATRIX_VP |
Current view * projection matrix. 从world space转到projection space |
|
UNITY_MATRIX_T_MV |
Transpose of model * view matrix. UNITY_MATRIX_MV 的转置矩阵 |
|
UNITY_MATRIX_IT_MV |
Inverse transpose of model * view matrix. UNITY_MATRIX_MV的逆转置矩阵,法线的矩阵转换需要用变换矩阵的逆转置矩阵. |
|
_Object2World |
Current model matrix. 从object space转到world space |
|
_World2Object |
Inverse of current world matrix. _Object2World的逆矩阵,从world space 到object space |
Camera and screen
These variables will correspond to the Camerathat is rendering. For example during shadowmap rendering,they will still refer to the Camera component values, and not the “virtual camera”that is used for the shadowmap projection.
|
Name |
Type |
Value |
|
_WorldSpaceCameraPos |
float3 |
World space position of the camera. 相机的世界坐标 |
|
_ProjectionParams |
float4 |
x 值是1.0或-1.0(当为反转的投影矩阵时) y 近截面,z远截面,w 1/远截面 |
|
_ScreenParams |
float4 |
屏幕尺寸x宽,y高,z 1+1.0/width,w 1+1.0/height |
|
_ZBufferParams |
float4 |
Used to linearize Z buffer values. 用于线性化zbuffer |
|
unity_OrthoParams |
float4 |
正交摄像机的相关参数,w值1时是正交投影,0时是透视投影 |
|
unity_CameraProjection |
float4x4 |
Camera’s projection matrix. 摄像机的投影矩阵 |
|
unity_CameraInvProjection |
float4x4 |
Inverse of camera’s projection matrix. 摄像机的投影矩阵的逆矩阵 |
|
unity_CameraWorldClipPlanes[6] |
float4 |
Camera frustum plane world space equations, in this order: left, right, bottom, top, near, far. 视锥体的左右下上远近 |
Time
|
Name |
Type |
Value |
|
_Time |
float4 |
Time since level load (t/20, t, t*2, t*3), use to animate things inside the shaders. |
|
_SinTime |
float4 |
Sine of time: (t/8, t/4, t/2, t). |
|
_CosTime |
float4 |
Cosine of time: (t/8, t/4, t/2, t). |
|
unity_DeltaTime |
float4 |
Delta time: (dt, 1/dt, smoothDt, 1/smoothDt). 帧间隔时间 |
Lighting
Light parameters are passed to shaders in differentways depending on which Rendering Pathis used, and which LightModePass Tag is used in the shader.
Forward rendering (ForwardBase andForwardAdd passtypes):
forward渲染的光照变量
|
Name |
Type |
Value |
|
_LightColor0(declared in Lighting.cginc) |
fixed4 |
Light color. 光线颜色 |
|
_WorldSpaceLightPos0 |
float4 |
Directional lights: (world space direction, 0). Other lights: (world space position, 1). World space 光照位置,平行光的w值为0,其他光源的w值为1 |
|
_LightMatrix0(declared in AutoLight.cginc) |
float4x4 |
World-to-light matrix. Used to sample cookie & attenuation textures. World space转到light space矩阵 |
|
unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0 |
float4 |
(ForwardBase pass only)world space positions of first four non-important point lights. |
|
unity_4LightAtten0 |
float4 |
(ForwardBase pass only)attenuation factors of first four non-important point lights. |
|
unity_LightColor |
half4[4] |
(ForwardBase pass only)colors of of first four non-important point lights. |
在正向渲染中,影响物体的最亮的几个光源使用逐像素光照模式。接下来,最多有4个点光源会以逐顶点渲染的方式被计算。其他光源将以球面调和(Spherical Harmonics)的方式进行计算,球面调和技术计算很快但只能得到近似值。
Deferred shading and deferred lighting, usedin the lighting pass shader (all declared in UnityDeferredLibrary.cginc):
延迟光照相关变量
|
Name |
Type |
Value |
|
_LightColor |
float4 |
Light color.光照颜色 |
|
_LightMatrix0 |
float4x4 |
World-to-light matrix. Used to sample cookie & attenuation textures. World space转到light space矩阵 |
Spherical harmonics coefficients (used by ambientand light probes) are set up forForwardBase,PrePassFinalandDeferredpasstypes. They contain 3rd order SH to be evaluated by world space normal (seeShadeSH9fromUnityCG.cginc).The variables are all half4 type,unity_SHArandsimilar names.
Vertex-lit rendering (Vertex pass type):
Up to 8 lights are set up for aVertexpass type; always sorted starting from the brightest one. So if you wantto render objects affected by two lights at once, you can just take first two entriesin the arrays. If there are less lights affecting the object than 8, the rest willhave their color set to black.
顶点光照相关变量
|
Name |
Type |
Value |
|
unity_LightColor |
half4[8] |
Light colors. 光照颜色 |
|
unity_LightPosition |
float4[8] |
View-space light positions. (-direction,0) for directional lights; (position,1) for point/spot lights. View space光照位置,平行光的w值为0,其他光源的w值为1 |
|
unity_LightAtten |
half4[8] |
Light attenuation factors.xis cos(spotAngle/2) or –1 for non-spot lights;yis 1/cos(spotAngle/4) or 1 for non-spot lights;zis quadratic attenuation;wis squared light range. 光照衰减值 |
|
unity_SpotDirection |
float4[8] |
View-space spot light positions; (0,0,1,0) for non-spot lights. View space聚光灯位置 |
Fog and Ambient
Window > Lighting> Scene 里设置的相应的颜色
|
Name |
Type |
Value |
|
UNITY_LIGHTMODEL_AMBIENT |
fixed4 |
Ambient lighting color (Equator ambient in three-color lighting case). |
|
unity_AmbientSky |
fixed4 |
Sky ambient lighting color in three-color lighting case. |
|
unity_AmbientGround |
fixed4 |
Ground ambient lighting color in three-color lighting case. |
|
unity_FogColor |
fixed4 |
Fog color. |
|
unity_FogParams |
float4 |
Parameters for fog calculation: (density / sqrt(ln(2)), density / ln(2), –1/(end-start), end/(end-start)).x is useful for Exp2 fog mode, y for Exp mode, z and w for Linear mode. |
Various
|
Name |
Type |
Value |
|
unity_LODFade |
float4 |
Level-of-detail fade when using LODGroup. x is fade (0..1), y is fade quantized to 16 levels,z and w unused. |
Built-in shader helper functions
其他一些杂七杂八的变量
#pragmatarget 3.0 定义Shader模型为Shader Model 3.0,
Image Effect取到depthTexture相关的步骤
GetComponent<Camera>().depthTextureMode=DepthTextureMode.Depth//设置摄像机模式
Shader中声明 sampler2D _CameraDepthTexture;//深度纹理的声明
取样float d = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture,uv) , //0-1越远越大
生成一个深度+法线纹理
GetComponent<Camera>().depthTextureMode=DepthTextureMode.DepthNormals;
Shader中声明
sampler2D _CameraDepthTexture;//深度纹理的声明
sampler2D _CameraNormalsTexture;//法线纹理的声明
用tex2d方法进行法线取样
或者声明
sampler2D _CameraDepthNormalsTexture.//
用DecodeDepthNormal(tex2D(_CameraDepthNormalsTexture,i.screen.xy), depthValue, normalValues);取得法线跟深度值
DecodeDepthNormalto decode depth and normalfrom the encoded pixel value. Returned depth is in 0.1 range.
_CameraDepthTexturealways refers to the camera’sprimary depth texture. By contrast, you can use_LastCameraDepthTextureto refer to the last depthtexture rendered by any camera.This couldbe useful for example if you render a half-resolution depth texture in script usinga secondary camera and want to make it available to a post-process shader.
_LastCameraDepthTexture取得最后渲染的深度纹理
Texturesize 纹理尺寸获得
{TextureName}_TexelSize- a float4 property contains texture size information:
xcontains1.0/width
ycontains1.0/height
zcontainswidth
wcontainsheight
例子
uniform float4 _MainTex_TexelSize分别对应Vector4(1 / width, 1 / height, width, height),
Texturetiling & offset 纹理偏移
Materialsoften have Tiling and Offset fields for their texture properties.This information is passed into shaders in a float4 {TextureName}_STproperty:
xcontainsX tiling value
ycontainsY tiling value
zcontainsX offset value
wcontainsY offset value
例:
o.uv =TRANSFORM_TEX(v.texcoord,_MainTex);
相当于
o.uv = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
o.uv = v.texcoord.xy相当于Tiling为(1,1)Offset为(0,0)
shader内置变量的更多相关文章
- unity shader 内置变量
官网Manual:http://docs.unity3d.com/Manual/SL-UnityShaderVariables.html unity提供大量的内置变量,来供我们使用,主要包括一些 :矩 ...
- 学习笔记:GLSL Core Tutorial – Vertex Shader(内置变量说明)
1.每个Vertex Shader都有用户定义的输入属性,例如:位置,法线向量和纹理坐标等.Vertex Shaders也接收一致变量(uniform variables). uniform vari ...
- Maven系列三Maven内置变量
Maven内置变量说明: ${basedir} 项目根目录(即pom.xml文件所在目录) ${project.build.directory} 构建目录,缺省为target目录 ${project. ...
- Maven的内置变量
Maven内置变量说明: ${basedir} 项目根目录(即pom.xml文件所在目录) ${project.build.directory} 构建目录,缺省为target目录 ${project. ...
- nginx的那些内置变量
nginx在配置文件nginx.conf中可以使用很多内置变量,配置如下: location /info { add_header 'Content-Type' 'text/html'; echo & ...
- Maven内置变量说明
Maven内置变量说明: ${basedir} 项目根目录 ${project.build.directory} 构建目录,缺省为target ${project.build.outputDirect ...
- 学习笔记——Maven 内置变量
Maven内置变量说明: ${basedir} 项目根目录(即pom.xml文件所在目录) ${project.build.directory} 构建目录,缺省为target目录 ${project. ...
- makefile 分析 -- 内置变量及自动变量
makefile 分析1 -p 选项,可以打印出make过程中的数据库, 下面研究一下内置的变量和规则. -n 选项, 只运行,不执行, -d 选项,相当于--debug=a, b(basic), ...
- Perl中的特殊内置变量详解
#!/usr/bin/perl -w @array = qw(a b c d); foreach (@array) { print $_," "; } 例子的作用就是定义一个数组并 ...
随机推荐
- 在Eclipse中导入新浪微博SDK
在Eclipse中导入新浪微博SDK 今天在看<Android开发应用实战>,全书都在讲一个android版的新浪微博客户端怎么做,于是按照书上步骤做.网上有人说这本书没有细节,我想对于小 ...
- 减小VirtualBox虚拟硬盘文件的大小
虚拟机使用久了就会发现虚拟硬盘越来越大,但是进入虚拟机里的系统用命令看了下,实际占用的空间远没有虚拟硬盘大小那么大,这个让人很不爽,而且在分享虚拟机镜像的时候也很不方便.VirtualBox似乎没有提 ...
- CCF CSP 201412-4 最优灌溉
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201412-4 最优灌溉 问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖 ...
- Ionic Js四:复选框
ionic 复选框(checkbox)与普通的 HTML 复选框没什么区别,以下实例演示了 ionic 复选框 ion-checkbox 的应用. <ion-checkbox ng-model= ...
- Bootstrap进阶三:jQuery插件概览
单个还是全部引入 JavaScript 插件可以单个引入(使用 Bootstrap 提供的单个 *.js 文件),或者一次性全部引入(使用 bootstrap.js 或压缩版的 bootstrap.m ...
- thinkphp条用函数与类库
手册上说的很冗余,没看懂,下面简单的讲一下具体用法. 函数调用: lib公共函数库叫 common.php App/common/common.php 分组模块下的公共函数库叫 function.ph ...
- Bunch 转换为 HDF5 文件:高效存储 Cifar 等数据集
关于如何将数据集封装为 Bunch 可参考 关于 『AI 专属数据库的定制』的改进. PyTables 是 Python 与 HDF5 数据库/文件标准的结合.它专门为优化 I/O 操作的性能.最大限 ...
- 详谈 Spring 中的 IOC 和 AOP
这篇文章主要讲 Spring 中的几个点,Spring 中的 IOC,AOP,下一篇说说 Spring 中的事务操作,注解和 XML 配置. Spring 简介 Spring 是一个开源的轻量级的企业 ...
- nyoj素数环
素数环 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环. 为了简 ...
- php开启redis扩展
1.安装redis git下载地址https://github.com/MSOpenTech/redis/releases 2.测试redis windows 运行(快捷键:windows键+R键), ...