zoukankan      html  css  js  c++  java
  • 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

    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)

  • 相关阅读:
    HTML5学习之画布和SVG(四)
    HTML5学习之视频与音频(三)
    HTML5学习之智能表单(二)
    HTML5学习之文档结构和语义(一)
    WCF分布式开发必备知识(3):Web Service 使用
    比较各大挪动门户网站淘宝、京东、网易、新浪、腾讯meta标签的异同
    jQuery Mobile学习之grid、等待显示的ajax效果、页面跳转、页面跳转传递参数等(二)
    jQuery Moblie 学习之page、button、theme、panel、listview、controlgroup、navbar等(一)
    使用Modernizr探测HTML5/CSS3新特性(转载)
    设计模式学习之模板方法模式(TemplateMethod,行为型模式)(9)
  • 原文地址:https://www.cnblogs.com/lancidie/p/6964636.html
Copyright © 2011-2022 走看看