zoukankan      html  css  js  c++  java
  • Unity 内建数据索引

    看到多少补多少

    顶点输入类型

    UnityCG.cginc Line:58 

    struct appdata_base {
        float4 vertex : POSITION;
        float3 normal : NORMAL;
        float4 texcoord : TEXCOORD0;
        UNITY_VERTEX_INPUT_INSTANCE_ID
    };
    
    struct appdata_tan {
        float4 vertex : POSITION;
        float4 tangent : TANGENT;
        float3 normal : NORMAL;
        float4 texcoord : TEXCOORD0;
        UNITY_VERTEX_INPUT_INSTANCE_ID
    };
    
    struct appdata_full {
        float4 vertex : POSITION;
        float4 tangent : TANGENT;
        float3 normal : NORMAL;
        float4 texcoord : TEXCOORD0;
        float4 texcoord1 : TEXCOORD1;
        float4 texcoord2 : TEXCOORD2;
        float4 texcoord3 : TEXCOORD3;
        fixed4 color : COLOR;
        UNITY_VERTEX_INPUT_INSTANCE_ID
    };
    

    内建一些变量

    Transformations

    All these matrices are float4x4 type.

      
    Name Value
    UNITY_MATRIX_MVP Current model * view * projection matrix.
    UNITY_MATRIX_MV Current model * view matrix.
    UNITY_MATRIX_V Current view matrix.
    UNITY_MATRIX_P Current projection matrix.
    UNITY_MATRIX_VP Current view * projection matrix.
    UNITY_MATRIX_T_MV Transpose of model * view matrix.
    UNITY_MATRIX_IT_MV Inverse transpose of model * view matrix.
    unity_ObjectToWorld Current model matrix.
    unity_WorldToObject Inverse of current world matrix.

    Camera and screen

    These variables will correspond to the Camera that 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 is 1.0 (or –1.0 if currently rendering with a flipped projection matrix), y is the camera’s near plane, z is the camera’s far plane and w is 1/FarPlane.
    _ScreenParams float4 x is the width of the camera’s target texture in pixels, y is the height of the camera’s target texture in pixels, z is 1.0 + 1.0/width and w is 1.0 + 1.0/height.
    _ZBufferParams float4 Used to linearize Z buffer values. x is (1-far/near), y is (far/near), z is (x/far) and w is (y/far).
    unity_OrthoParams float4 x is orthographic camera’s width, y is orthographic camera’s height, z is unused and w is 1.0 when camera is orthographic, 0.0 when perspective.
    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

    灯光部分 根据LightMode 不同可用的内建数据也是不同的

    Light parameters are passed to shaders in different ways depending on which Rendering Path is used, and which LightMode Pass Tag is used in the shader.

    Forward rendering (ForwardBase and ForwardAdd pass types):

       
    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).
    _LightMatrix0 (declared in AutoLight.cginc) float4x4 World-to-light matrix. Used to sample cookie & attenuation textures.
    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.
    unity_WorldToShadow float4x4[4] World-to-shadow matrices. One matrix for spot lights, up to four for directional light cascades.

    Deferred shading and deferred lighting, used in 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.
    unity_WorldToShadow float4x4[4] World-to-shadow matrices. One matrix for spot lights, up to four for directional light cascades.

    Spherical harmonics coefficients (used by ambient and light probes) are set up for ForwardBasePrePassFinal and Deferred pass types. They contain 3rd order SH to be evaluated by world space normal (see ShadeSH9 from UnityCG.cginc). The variables are all half4 type, unity_SHAr and similar names.

    Vertex-lit rendering (Vertex pass type):

    Up to 8 lights are set up for a Vertex pass type; always sorted starting from the brightest one. So if you want to render objects affected by two lights at once, you can just take first two entries in the arrays. If there are less lights affecting the object than 8, the rest will have 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.
    unity_LightAtten half4[8] Light attenuation factors. x is cos(spotAngle/2) or –1 for non-spot lights; y is 1/cos(spotAngle/4) or 1 for non-spot lights; z is quadratic attenuation; w is squared light range.
    unity_SpotDirection float4[8] View-space spot light positions; (0,0,1,0) for non-spot lights.

    Fog and Ambient

       
    Name Type Value
    unity_AmbientSky fixed4 Sky ambient lighting color in gradient ambient lighting case.
    unity_AmbientEquator fixed4 Equator ambient lighting color in gradient ambient lighting case.
    unity_AmbientGround fixed4 Ground ambient lighting color in gradient ambient lighting case.
    UNITY_LIGHTMODEL_AMBIENT fixed4 Ambient lighting color (sky color in gradient ambient case). Legacy variable.
    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.

     内建函数

    Vertex transformation functions in UnityCG.cginc

    Function:Description:
    float4 UnityObjectToClipPos(float3 pos) Transforms a point from object space to the camera’s clip space in homogeneous coordinates. This is the equivalent of mul(UNITY_MATRIX_MVP, float4(pos, 1.0)), and should be used in its place.
    float3 UnityObjectToViewPos(float3 pos)

    Transforms a point from object space to view space. This is the equivalent of mul(UNITY_MATRIX_MV, float4(pos, 1.0)).xyz, and should be used in its place.

    Generic helper functions in UnityCG.cginc

    Function:Description:
    float3 WorldSpaceViewDir (float4 v) Returns world space direction (not normalized) from given object space vertex position towards the camera.
    float3 ObjSpaceViewDir (float4 v) Returns object space direction (not normalized) from given object space vertex position towards the camera.
    float2 ParallaxOffset (half h, half height, half3 viewDir) calculates UV offset for parallax normal mapping.
    fixed Luminance (fixed3 c) Converts color to luminance (grayscale).
    fixed3 DecodeLightmap (fixed4 color) Decodes color from Unity lightmap (RGBM or dLDR depending on platform).
    float4 EncodeFloatRGBA (float v) Encodes [0..1) range float into RGBA color, for storage in low precision render target.
    float DecodeFloatRGBA (float4 enc) Decodes RGBA color into a float.
    float2 EncodeFloatRG (float v) Encodes [0..1) range float into a float2.
    float DecodeFloatRG (float2 enc) Decodes a previously-encoded RG float.
    float2 EncodeViewNormalStereo (float3 n) Encodes view space normal into two numbers in 0..1 range.
    float3 DecodeViewNormalStereo (float4 enc4) Decodes view space normal from enc4.xy.

    Forward rendering helper functions in UnityCG.cginc

    These functions are only useful when using forward rendering (ForwardBase or ForwardAdd pass types).

    Function:Description:
    float3 WorldSpaceLightDir (float4 v) Computes world space direction (not normalized) to light, given object space vertex position.
    float3 ObjSpaceLightDir (float4 v) Computes object space direction (not normalized) to light, given object space vertex position.
    float3 Shade4PointLights (...) Computes illumination from four point lights, with light data tightly packed into vectors. Forward rendering uses this to compute per-vertex lighting.

    Screen-space helper functions in UnityCG.cginc

    The following functions are helpers to compute coordinates used for sampling screen-space textures. They return float4 where the final coordinate to sample texture with can be computed via perspective division (for example xy/w).

    The functions also take care of platform differences in render texture coordinates.

    Function:Description:
    float4 ComputeScreenPos (float4 clipPos) Computes texture coordinate for doing a screenspace-mapped texture sample. Input is clip space position.
    float4 ComputeGrabScreenPos (float4 clipPos) Computes texture coordinate for sampling a GrabPass texure. Input is clip space position.

    Vertex-lit helper functions in UnityCG.cginc

    These functions are only useful when using per-vertex lit shaders (“Vertex” pass type).

    Function:Description:
    float3 ShadeVertexLights (float4 vertex, float3 normal) Computes illumination from four per-vertex lights and ambient, given object space position & normal.

  • 相关阅读:
    dev、test和prod是什么意思?
    构建项目时依赖库下载不下来的解决
    自定义view规范步骤步骤
    【转】MIUI8以及ViVO X9上在Android Studio运行出错集及其解决方案
    Ubuntu 16.04使用git
    Android中WebView与H5的交互,Native与JS方法互调
    [转] Fragment——startActivityForResult后onActivityResult无反应之问题总结
    解决运行github项目build时间长问题
    SVN回滚至某个版本
    【算法】种花问题
  • 原文地址:https://www.cnblogs.com/wbaoqing/p/8892437.html
Copyright © 2011-2022 走看看