【问题标题】:HLSL Docs and IDEHLSL 文档和 IDE
【发布时间】:2022-07-21 17:27:09
【问题描述】:

我在 Unity 中为着色器编写 HLSL 代码,我需要一个教程或文档来了解 类和类型。 Microsoft Docs 的信息很差(我搜索 Vector 但我不知道如何处理它)。 我需要一个 ide 或其他东西来自动完成语法。

因此,如果有人建议学习 HLSL 的文档或教程,并了解其中的函数和类以及标准库,以及用于调试和 autoCompelte 语法的 ide。

【问题讨论】:

  • “Microsoft Docs 信息很差” - 完全同意!

标签: unity3d shader hlsl


【解决方案1】:

HLSL Tools for Visual Studio 是 VS 的一个很好的扩展,我已经读到 Visual Studio 代码也有很好的工具,但我假设你正在使用带有 Unity 的 Visual Studio。

Vector 类是 UnityEngine 的一部分,因此不能从着色器中使用。该扩展将有很大帮助,但为了帮助您入门,大多数数值变量都被打包为向量(数字集合的数字术语),可以用作 float2float3float4 for 2 、3 或 4 个向量(非常类似于将浮点数存储在 Vector2、Vector3 或 Vector4 中)。您可以以相同的方式使用矩阵:float3x3float2x4 等。

如果你想取两个向量的叉积并将结果归一化,

float3 a = float3(1,2,3);
float3 b = float3(5,3,2);
return normalize(cross(a,b));

你可以用dot(a,b)做点积,用mul(a,b)做矩阵乘法。

在语法上它与 c++ 非常相似。根据您要完成的任务,您可以重新创建 UnityEngine.Vector 类的大部分功能 (more info here)。

统一调试着色器的最快方法是返回一些结果作为测试并评估它。如果你正在做任何与图形相关的事情,那只是意味着输出一个中间结果。您还可以编写与单线程 cpu 任务相同的代码并进行传统调试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多