• UnityShader 语义、内置文件、变量


    内置文件

    cgnic name Describe
    UnityCG.cginc image,包含了最常用变量、帮助函数、宏、结构体
    Lighting.cginc 各种内置的光照模型,表面着色器会自动包含该文件
    HLSLSupport.cginc 声明了许多用于跨平台编译的宏和定义
    UnityGlobalIllumination.cginc 全局光照


    内置常用结构体

    struct name include variables
    appdata_base 顶点位置、顶点法线、第一组纹理坐标
    appdata_tan 顶点位置、顶点切线、顶点法线、第一组纹理坐标
    appdata_full 顶点位置、顶带你切线、顶点法线、四组纹理坐标
    appdata_img 顶点位置、第一组纹理坐标
    v2f_img (用于顶点着色器输出),裁剪空间位置、纹理坐标

    内置变换矩阵

    matraix name Describe
    UNITY_MATRIX_MVP 当前的模型·观察·投影矩阵,用于将顶点方向矢量从模型空间变换到裁剪空间
    UNITY_MATRIX_MV 当前的模型·观察矩阵,用于将顶点方向矢量从模型空间变换到裁剪空间
    UNITY_MATRIX_V 当前的观察矩阵,用于将顶点方向矢量从世界空间变换到观察空间
    UNITY_MATRIX_P 当前的投影矩阵,用于将顶点方向矢量从观察空间变换到世界空间
    UNITY_MATRIX_T_MV UNITY_MATRIX_MV的转置矩阵
    UNITY_MATRIX_IT_MV

    UNITY_MATRIX_MV的逆转置矩阵,用于将法线从模型空间变换到观察空间,

    也可用于得到UNITY_MATRIX_MV的逆矩阵。//可见链接最后的推导过程

    _Object2World 把顶点方向矢量从模型空间变换到世界空间
    _World2Object _Object2World的逆矩阵,用于将顶点方向矢量从世界空间变换到模型空间

    内置变量-摄像机和屏幕参数

    variable name type Describe
    _WorldSpaceCameraPos float3 摄像机在世界空间中的位置
    _ProjectionParams float4

    x=1.0(-1.0如果正在使用一个翻转的投影矩阵渲染),y=Near,z=Far,w=1.0+1.0/Far.

    其中Near和Far分别是近裁剪平面、远裁剪平面 和摄像机的距离

    _ScreenParams float4

    x=width,y=height,z=1.0+1.0/width,w=1.0+1.0/height,

    其中width和height分别是摄像机的渲染目标(Render Target)的像素宽度和高度

    _ZBufferParams float4 x=1-Far/Near,y=Far/Near,z=x/Far,w=y/Far,该变量用于线性化Z缓存中的深度值
    unity_OrthoParamsfloat4

    x=width,y=height,z没有定义,w=1.0该摄像机是正交摄像机或 w=0.0该摄像机是

    透视摄像机,其中width和height是正交投影摄像机的宽度和高度

    unity_CameraProjectionfloat4x4  该摄像机的投影矩阵
    unity_CameraInvProjectionfloat4x4 该摄像机的投影矩阵的逆矩阵
    unity_CameraWorldClipPlanes[6]

    该摄像机的6个裁剪平面在世界空间下的等式

    按:左、右、下、上、近、远裁剪平面


    UnityShader语义

    从应用阶段传递模型数据给顶点着色器语义(模型空间中)

    Semantics Describe
    POSITION 顶点坐标,一般为float4
    NORMAL 顶点法线,一般为float3
    TANGENT 顶点切线,一般为float4
    TEXCOORDn(n≥0) 顶点的纹理坐标,TEXCOORD0表示第一组纹理坐标(依次类推),一般为float2或float4
    COLOR 顶点的颜色,一般为fixed4或float4

    从顶点着色器传递给片元着色器语义(裁剪空间中)

    Semantics Describe
    SV_POSITION 顶点坐标,结构体必须包含此变量修饰符
    COLOR0 第一组顶点颜色
    COLOR1 第二组顶点颜色
    TEXCOORD0 ~ TEXCOORD7 顶点对应的纹理坐标

    片元着色器输出至Unity语义

    SV_Target输出值将会存储到渲染目标中

  • 相关阅读:
    移动端高清、多屏适配方案
    Cookie存中文乱码的问题
    手机网站-前端开发布局技巧汇总
    深入理解javascript中的立即执行函数(function(){…})()
    test
    [PAT] A1013 Battle Over Cities (25分)
    PAT索引
    [PAT] A1012 The Best Rank
    [PAT] A1091 Acute Stroke
    [PAT] A1067 Sort with Swap(0, i)
  • 原文地址:https://www.cnblogs.com/baolong-chen/p/11668645.html
Copyright © 2020-2023  润新知