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 $_," "; } 例子的作用就是定义一个数组并 ...
随机推荐
- C++ "multiple definition of .. first defined here"
C++ "multiple definition of .. first defined here" 在C++中,有时候需要在不同文件中使用同一个变量.对于这类变量如果处理不当,很 ...
- VMware虚拟机Mac OS X无法调整扩展硬盘大小的解决方案
使用VMware虚拟机搭建的MacOSX,在10.10以上可能会出现无法扩充磁盘大小的问题. 因为很多朋友在初次安装MacOSX的时候都默认选择40G的磁盘大小,结果用了没两天之后就发现磁盘不够用了. ...
- day6作业--选课系统
角色:学校.学员.课程.讲师 要求: 1.创建北京.上海2所学校: 2.创建Linux,Python,go 3个课程,Linux\python在北京开,go在上海开: 3.课程包含,周期.价格,通过学 ...
- mysql 触发器(Trigger)简明总结和使用实例
一,什么触发器 1,个人理解触发器,从字面来理解,一触即发的一个器,简称触发器(哈哈,个人理解),举个例子吧,好比天黑了,你开灯了,你看到东西了.你放炮仗,点燃了,一会就炸了.2,官方定义触发器(tr ...
- chromedriver与chrome版本对应表,firefox、geckodriver
一. chromedriver与chrome对应表(记得就会更新): chromedriver版本 支持的Chrome版本 v2.36 v64-66 v2.35 v62-64 v2.34 v61-6 ...
- React Native之数据存储技术AsyncStorage
1. 如何将数据存储到本地? 数据存储是开发APP必不可少的一部分,比如页面缓存,从网络上获取数据的本地持久化等,那么在RN中如何进行数据存储呢? RN官方推荐我们在RN中使用AsyncStorage ...
- Mac 上自带TFTP Server 软件的使用
搬瓦工搭建SS教程 1.TFTP协议 简单文件传输协议Trivial File Transfer Protocol (TFTP)是一个基于UDP协议的简单的.低开销的文件传输协议,允许客户端get或者 ...
- Keystone几种token生成的方式分析
从Keystone的配置文件中,我们可见,Token的提供者目前支持四种. Token Provider:UUID, PKI, PKIZ, or Fernet 结合源码及官方文档,我们用一个表格来阐述 ...
- flask使用flask_sqlalchemy连接数据库(python2.7)
1.出现编码问题 解决方法: #连接数据库时出现编码问题,需要pip install mysql-connector-python,并且数据库配置修改为 import mysql.connector ...
- Pipeline和FeatureUnion
注:本文是人工智能研究网的学习笔记 Pipeline:chaining(链接)estimators Pipeline可以用于把多个estimators级联合成一个estimator.这么做的原因是考虑 ...