内置变量都在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

Xis 1.0 (or –1.0 if currently rendering with aflipped projection matrix),yis the camera’s near plane,zis the camera’s far plane andwis 1/FarPlane.

x 值是1.0或-1.0(当为反转的投影矩阵时)

y 近截面,z远截面,w 1/远截面

_ScreenParams

float4

xis the camera’s render target width in pixels,yis the camera’s render target height in pixels,zis 1.0 + 1.0/width andwis 1.0 + 1.0/height.

屏幕尺寸x宽,y高,z 1+1.0/width,w 1+1.0/height

_ZBufferParams

float4

Used to linearize Z buffer values.xis (1-far/near),yis (far/near),zis (x/far) andwis (y/far).

用于线性化zbuffer

unity_OrthoParams

float4

xis orthographic camera’s width,yis orthographic camera’s height,zis unused andwis 1.0 when camera is orthographic, 0.0 when perspective.

正交摄像机的相关参数,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 LODGroupx 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内置变量的更多相关文章

  1. unity shader 内置变量

    官网Manual:http://docs.unity3d.com/Manual/SL-UnityShaderVariables.html unity提供大量的内置变量,来供我们使用,主要包括一些 :矩 ...

  2. 学习笔记:GLSL Core Tutorial – Vertex Shader(内置变量说明)

    1.每个Vertex Shader都有用户定义的输入属性,例如:位置,法线向量和纹理坐标等.Vertex Shaders也接收一致变量(uniform variables). uniform vari ...

  3. Maven系列三Maven内置变量

    Maven内置变量说明: ${basedir} 项目根目录(即pom.xml文件所在目录) ${project.build.directory} 构建目录,缺省为target目录 ${project. ...

  4. Maven的内置变量

    Maven内置变量说明: ${basedir} 项目根目录(即pom.xml文件所在目录) ${project.build.directory} 构建目录,缺省为target目录 ${project. ...

  5. nginx的那些内置变量

    nginx在配置文件nginx.conf中可以使用很多内置变量,配置如下: location /info { add_header 'Content-Type' 'text/html'; echo & ...

  6. Maven内置变量说明

    Maven内置变量说明: ${basedir} 项目根目录 ${project.build.directory} 构建目录,缺省为target ${project.build.outputDirect ...

  7. 学习笔记——Maven 内置变量

    Maven内置变量说明: ${basedir} 项目根目录(即pom.xml文件所在目录) ${project.build.directory} 构建目录,缺省为target目录 ${project. ...

  8. makefile 分析 -- 内置变量及自动变量

    makefile 分析1  -p 选项,可以打印出make过程中的数据库, 下面研究一下内置的变量和规则. -n 选项, 只运行,不执行, -d 选项,相当于--debug=a,  b(basic), ...

  9. Perl中的特殊内置变量详解

    #!/usr/bin/perl -w @array = qw(a b c d); foreach (@array) { print $_," "; } 例子的作用就是定义一个数组并 ...

随机推荐

  1. 一步一步学习IdentityServer3 (15) 授权模式那些事

    总结一句话,其实很简单 在什么Clients 拿的认证权限Scope 就去 去开什么Scope限制的服务接口门 在写Clients的时候,会有Scope,看下面的代码 new Client { Cli ...

  2. 容器计划任务大坑:在alpine容器里,想用非root帐号执行crontab任务

    我只能说抱歉,我前前后后测试了七天, 将自己预想的配置错误,一个一个去验证. 非root帐号在alpine容器里执行crontab任务,还是失败, 输出依旧是一片空白~ stackoverflow里, ...

  3. Android 客户端 okhttp3 与服务器之间的双向验证

    [原文]https://blog.csdn.net/leng_wen_rou/article/details/58596142 本篇是Android 客户端基于okhttp3的网络框架 和后台服务器之 ...

  4. 【PAT】1018 锤子剪刀布 (20)(20 分)

    1018 锤子剪刀布 (20)(20 分) 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算 ...

  5. day6 shelve模块

        shelve模块 shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式,shelve模块是对pickle模块的补充.我们知道 ...

  6. 【LOJ】#2446. 「NOI2011」 NOI 嘉年华

    题解 一道神奇的dp 我们发现关于两个东西的记录很难办,但是我们发现在固定时间区间内,如果A场地举办的活动数是一定的,那么B场地肯定举办的活动越多越好 我们预处理一个\(num[i][j]\)表示时间 ...

  7. ab性能测试工具

    Apache自带的压力测试工具——ab初体验 http://studiogang.blog.51cto.com/505887/386852 我们知道压力测试的软件确实很多,诸如微软的WAST,惠普的L ...

  8. vwware虚拟机无法连接外网

    1.问题:动态IP时连接外网没有问题,但是将IP改为静态IP时发现没有办法连接外网 查看文件/etc/resolv.conf,里面的内容全部都被注释 [root@jenkins network-scr ...

  9. 安卓逆向之基于Xposed-ZjDroid脱壳

    http://bbs.pediy.com/thread-218798.htm     前言 之前介绍了普通常见的反编译模式 但对于使用了 360加固 棒棒 爱加密 等等的加固应用就没办法了. 你会发现 ...

  10. tomcat+serlet+eclipse环境按键

    ---恢复内容开始--- 1. tomcat环境搭建 安装向导:http://www.runoob.com/jsp/eclipse-jsp.html 1. tomcat启动一闪而过,需要配置 JAVA ...