zoukankan      html  css  js  c++  java
  • [Unity] Shader

    CG 跟 HLSL几乎是一摸一样的。

    (HLSL官方参考,包含语法格式,函数库,关键字,在这个地方:

    http://msdn.microsoft.com/en-us/library/bb509638(v=VS.85).aspx, 如果链接失效,用“
    Reference for HLSL”搜索。)

    Shader本身是一个单纯的单元,就是对输入(顶点或像素或物体)进行能做的算术运算,然后把结果送出的一个固件。

    1、内置元类型


    float: 32 bit浮点类型
    half:  16 bit浮点
    int:   32 bit 整形
    fixd:  12 bit定点
    bool:  布尔值
    sampler*: 纹理对象的句柄
    string:  不是每个都支持

    上述类型很多都被cg提供内置的向量数据类型(build-in vector data types),如

    float1、float4,
    bool2, bool3,
    float1x1
    float2x3

    类型转换跟C是一样的,用强制转化。
    类型定义的时候可以在常量后跟后缀,如2.0f,1.0h,3x。目前值有f,h,x(fixed)三种。

    2、支持类型


    数组
    float a[10];
    float4 b[10];
    int length = a.length; //获取长度,上面两个返回都是10

    float b[2][3] = { { }, { } };
    int length1 = b.length; // length1 = 2;
    int length2 = b[0].length; // length = 3;

    结构
    以struct开始,紧跟名字,内容用{};包住。不要忘记最后的分号。
    结构中可以带function,是C++中的用法。
    结构不支持继承。


    3、特定关键字


    in , out , inout,
    uniform (被修饰的变量从外部传入), const ,

    4、输入语义关键字


    Vertex Shader的输入:

    POSITION, NORMAL, BINORMAL, BLENDINDICES, BLENDWEIGHT, TANGENT, PSIZE, TEXCOORD0 ~ TEXCOORD7

    如:in float4 modelPos: POSITION

    Vertex Shader的输出, 也就是Pixel Shader的输入

    POSITION, PSIZE, FOG,COLOR0 ~ COLOR1, TEXCOORD1 ~ TEXCOORD7

    Pixel Shader的输出:

    COLOR

    5、入口函数


    通过观察程序的输入输出语义绑定,就可以区分入口函数对应到顶点程序还是片段程序。

    6、内置函数库


    reflect  求发射向量
    refract  求折射向量
    mul      矩阵相乘
    normalize  归一化

    五大类: 数学函数、几何函数、纹理映射函数、调试函数

  • 相关阅读:
    React网络请求fetch之post请求
    从ajax到fetch到axios
    了解 Fetch API与Fetch+Async/await
    new FormData() 前端上传文件图片到服务器
    ES7之async/await同步编程异步函数
    React网络请求fetch之get请求
    React非受控组件
    React 组件优化之函数防抖节流---使用 debounce +throttle 函数
    【LeetCode】86. Partition List
    【LeetCode】122. Best Time to Buy and Sell Stock II
  • 原文地址:https://www.cnblogs.com/yangyxd/p/5351213.html
Copyright © 2011-2022 走看看