zoukankan      html  css  js  c++  java
  • ShaderLab和CG/HLSL的一些数据类型归纳(转)

    1、ShaderLab和CG变量的匹配关系
     
    ShaderLab属性类型     CG变量类型
    Color, Vector       float4, half4, fixed4
    Range, Float       float, half, fixed
    2D                       sampler2D
    Cube                   samplerCube
    3D                       sampler3D

    2、UnityCG的一些常用结构体
     
    名称           描述        包含变量
    appdata_base  顶点着色器的输入   顶点位置、顶点法线、第一组纹理坐标
    appdata_tan   顶点着色器的输入     顶点位置、顶点切线、顶点法线、第一组纹理坐标
    appdata_full  顶点着色器的输入    顶点位置、顶点切线、顶点法线、四组(或更多)纹理坐标
    appdata_img  顶点着色器的输入   顶点位置、第一组纹理坐标
    v2f_img  顶点着色器的输出 裁剪空间中的位置、纹理坐标
     
    3、UnityCG的一些常用工具函数
     
    函数名         描述
    float3 WorldSpaceViewDir(float4 v)      输入一个模型空间中的顶点位置,返回世界空间中从该点到摄像机的观察方向
    float3 ObjSpaceViewDir(float4 v)         输入一个模型空间中的顶点位置,返回模型空间中从该点到摄像机的观察方向
    float3 WorldSpaceLightDir(float4 v)     输入一个模型空间中的顶点位置,返回世界空间中从该点到光源的光照方向,没有被归一化。仅可用于前向渲染中。
    float3 ObjSpaceLightDir(float4 v)         输入一个模型空间中的顶点位置,返回世界空间中从该点到光源的光照方向,没有被归一化。仅可用于前向渲染中。
    float3 UnityObjectToWorldNormal(float3 norm)     把法线方向从模型空间转换到世界空间中。
    float3 UnityObjectToWorldDir(in float3 dir)            把方向矢量从模型空间变换到世界空间中。
    float3 UnityWorldToObjectDir(float3 dir)                把方向矢量从世界空间变换到模型空间中。
     
    4、顶点着色器输入数据的语义(Unity所支持的)
     
    语义  描述
    POSITION          模型空间中的顶点位置,通常是float4类型
    NORMAL            顶点法线,通常是float3类型
    TANGENT          顶点切线,通常是float4类型
    TEXCOORDn     该顶点的纹理坐标,TEXCOORD0表示第一组纹理坐标,以此类推。通常是float2或者float4类型
    COLOR              顶点颜色,通常是fixed4或者float4类型
     
    5、顶点着色器的输出数据的语义(Unity所支持的)
     
    语义   描述
    SV_POSITION   裁剪空间中的顶点坐标,结构体中必须包含一个用该语义修饰的变量。等同于DX9中的POSITION,但最好使用SV_POSITION
    COLOR0            通常用于输出第一组顶点颜色,但不是必需的
    COLOR1            通常用于输出第二组顶点颜色,但不是必需的
    TEXCOORD0~TEXCOORD7      通常用于输出纹理坐标,但不是必需的
     
     
    原文:https://blog.csdn.net/u012689623/article/details/73249904?utm_source=blogxgwz8
  • 相关阅读:
    软件架构模式
    经济学基础
    使用vue-cli3新建一个项目,并写好基本配置
    vue+iview+less实现主题切换功能
    ivew table组件二次封装,解决slot-scope跨组件传递的问题
    vue-cli3使用less全局变量,不用每个组件引入less文件(亲测有效)
    vscode开发vue项目使用eslint+prettier格式化:保存时自动执行lint进行修复(升级篇,保存时可格式化模板和css)
    切换子路由时,父路由的组件会重新渲染
    更换路由时页面实现左右滑动的效果
    div设置为inline-block后,两个div之间有空隙
  • 原文地址:https://www.cnblogs.com/Roz-001/p/13233299.html
Copyright © 2011-2022 走看看