• 高级着色语言HLSL入门(6)


    16.7内建函数

    HLSL有一个丰富的内建函数的集合,它们对3D图形来说非常有用。下表是一个删减了的列表,注意:要得到更多的参考,可以参看DirectX文档中内建HLSL函数的完整列表。

    以下表格中,//<variable>//表示变量variable的模(例如向量的绝对值)。

    函数

    描述

    abs(x)

    返回 |x|

    ceil(x)

    返回 ≥ x 的最小整数

    clamp(x, a, b)

    Clamps x to the range [a, b] and returns the result.

    cross(u, v)

    返回 u × v(叉积)

    degrees(x)

    转换 x 从弧度到角度

    determinant(M)

    返回矩阵M的行列式det(M)

    distance(u, v)

    返回u点和v点之间的距离||v - u||

    dot(u, v)

    返回 u · v(点积)

    floor(x)

    返回 ≤ x 的最大整数

    length(v)

    返回 ||v||

    lerp(u, v, t)

    在u和v之间线性插值,参数 t 在[0, 1 ]之间变化。

    log(x)

    返回 ln(x)

    log10(x)

    返回 log10(x)

    log2(x)

    返回 log2(x)

    max(x, y)

    如果x ≥ y,则返回 x;否则返回 y

    min(x, y)

    如果 x ≤ y,返回x;否则返回 y

    mul(M, N)

    返回矩阵乘积 MN. 注意:矩阵乘积必须是已定义的. 如果M是一个向量,它被作为一个行向量,则向量-矩阵(vector-matrix)乘法是已定义的。类似的,如果N 是一个向量,他被作为一个列向量,则矩阵-向量(matrix-vector)乘法是已定义的。

    normalize(v)

    返回 v/∥v∥

    pow(b, n)

    返回 bn

    radians(x)

    转换 x 从 角度 到 弧度

    reflect(v, n)

    给定向量v和表面法线n,计算其反射向量

    refract(v,n, eta)

    给定向量v、表面法线n和两种材质的两个索引的比率eta,计算其折射向量. 翻看一下物理书中Snell的规则或者在互联网上搜索一下关于refraction(反射)的信息

    rsqrt(x)

    返回x的平方根的倒数

    saturate(x)

    返回clamp(x, 0.0, 1.0)

    sin(x)

    返回x的正弦,其中x单位为弧度

    sincos(in x, out s, out c)

    返回x的正弦和余弦,其中x单位为弧度

    sqrt(x)

    返回x的平方根

    tan(x)

    返回x的正切,其中 x 单位为弧度

    transpose(M)

    返回M的转置

    abs (Direct3D 9 HLSL)

    Computes the absolute value of each component.

    Syntax

    ret abs(x)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in scalar, vector, or matrix float, int any
    ret out same as input x same as input x same dimension(s) as input x

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_1_4

    ceil (Direct3D 9 HLSL)

    Returns the smallest integer which is greater than or equal to x.

    Syntax

    ret ceil(x)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in scalar, vector, or matrix float any
    ret out same as input x float same dimension(s) as input x

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_2_0

    clamp (Direct3D 9 HLSL)

    Clamps x to the range [min, max].

    Syntax

    ret clamp(x, min, max)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in scalar, vector, or matrix float, int any
    min in same as input x float, int same dimension(s) as input x
    max in same as input x float, int same dimension(s) as input x
    ret out same as input x float, int same dimension(s) as input x

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_1_4

    cross (Direct3D 9 HLSL)

    Returns the cross product of two 3D vectors.

    Syntax

    ret cross(x, y)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in vector float 3
    y in vector float 3
    ret out vector float 3

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_1_4

    degrees (Direct3D 9 HLSL)

    Converts x from radians to degrees.

    Syntax

    ret degrees(x)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in scalar, vector, or matrix float any
    ret out same as input x float same dimension(s) as input x

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_2_0

    determinant (Direct3D 9 HLSL)

    Returns the determinant of the square matrix m.

    Syntax

    ret determinant(m)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    m in matrix float any (number of rows = number of columns)
    ret out scalar float 1

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_1_4

    distance (Direct3D 9 HLSL)

    Returns the distance between two points x and y.

    Syntax

    ret distance(x, y)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in vector float any
    y in vector float same dimension(s) as input x
    ret out scalar float 1

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_2_0

    dot (Direct3D 9 HLSL)

    Returns the • product of two vectors, x and y.

    Syntax

    ret dot(x, y)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in vector float, int any
    y in vector float, int same dimensions(s) as input x
    ret out scalar float, int 1

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_1_1

    floor (Direct3D 9 HLSL)

    Returns the greatest integer which is less than or equal to x.

    Syntax

    ret floor(x)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in scalar, vector, or matrix float any
    ret out same as input x float same dimension(s) as input x

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_2_0

    length (Direct3D 9 HLSL)

    Returns the length of the vector x.

    Syntax

    ret length(x)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in vector float any
    ret out scalar float 1

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_2_0

    lerp (Direct3D 9 HLSL)

    Returns x + s(y - x). This linearly interpolates between x and y, such that the return value is x when s is 0, and y when s is 1.

    Syntax

    ret lerp(x, y, s)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in scalar, vector, or matrix float any
    y in same as input x float same dimension(s) as input x
    s in same as input x float same dimension(s) as input x
    ret out same as input x float same dimension(s) as input x

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_1_4

    log (Direct3D 9 HLSL)

    Returns the base-e logarithm of x. If x is negative, the function returns indefinite. If x is 0, the function returns +INF.

    Syntax

    ret log(x)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in scalar, vector, or matrix float any
    ret out same as input x float same dimension(s) as input x

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_2_0

    log10 (Direct3D 9 HLSL)

    Returns the base-10 logarithm of x. If x is negative, the function returns indefinite. If x is 0, the function returns +INF.

    Syntax

    ret log10(x)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in scalar, vector, or matrix float any
    ret out same as input x float same dimension(s) as input x

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_2_0

    log2 (Direct3D 9 HLSL)

    Returns the base-2 logarithm of x. If x is negative, the function returns indefinite. If x is 0, the function returns +INF.

    Syntax

    ret log2(x)

    Where:

    NameIn/OutTemplate TypeComponent TypeSize
    x in scalar, vector, or matrix float any
    ret out same as input x float same dimension(s) as input x

    Minimum Shader Version

    This intrinsic function is supported in the following (or above) shader versions:

    Vertex ShaderPixel Shader
    vs_1_1 ps_2_0
  • 相关阅读:
    ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第二篇:第一个页面
    HTML5网页录音和压缩,边猜边做..(附源码)
    策划编写一个新的Helper类
    正由另一进程使用,因此该进程无法访问此文件。
    第三方组件引用另一个第三方组件的悲剧
    数据库连接池的计数器设计
    让Ajax更简单
    更新Literacy
    多说
    利用C#自带组件强壮程序日志
  • 原文地址:https://www.cnblogs.com/8586/p/1401978.html
Copyright © 2020-2023  润新知