HLSL 'technique' 关键字文档

HLSL 'technique' keyword documentation

很简单的问题...
我有一些代码示例:

technique Draw
{
    pass
    {
        vertex_shader = VertexShaerName(vec_in);
        pixel_shader  = PixelShaderName(vec_in);
    }
}

在哪里可以找到 technique 关键字用法的文档? Here 没有 link 为此类声明提供的描述...

技术被(现已弃用)效果系统使用。

它包含了很多低级别的内容api(最初 DirectX9 使用技术,所以创建它是为了促进 direct3d9 到 direct3d10/11 之间的转换)。

它提供帮助程序来管理常量缓冲区和 reflection/variable api 来将数据分配给着色器。

因此,在使用低级管道时,您将独立编译顶点和像素着色器,创建常量缓冲区,以及随之而来的结构,它允许在一个块中构建uild所有内容,中断将常量缓冲区下移到变量系统中,并有一个通道 api 允许一次性执行所有绑定。

两者各有利弊,fx 非常适合创作和原型制作(例如,使用他们的变量系统创建自动 gui 真的很容易),但由于它管理了很多样板对你来说,但在高效资源重用或复杂的着色器排列方面,它会变得有点尴尬。

我特别想念效果的一件事是变量语义和注释,您可以设置如下内容:

float2 tex : TARGETSIZE;

并通过使用变量系统检测 tex 具有 TARGETSIZE 语义,隐藏 ui 并自动附加渲染目标大小。

注释的旧常见用法是为以下值提供一些元数据:

float4 color <bool color=true;> = 1.0f;

跨注释反映允许我们将此变量视为一种颜色(并在编辑器中显示颜色选择器而不是 4 个通道)

虽然 fx_5_0 配置文件在 d3dcompiler_47 中已弃用,但仍然可以使用它,并且包装器是开源的: https://github.com/microsoft/FX11