首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spir-v、GLSL和HLSL的差异

Spir-v、GLSL和HLSL的差异
EN

Stack Overflow用户
提问于 2022-08-18 12:30:01
回答 1查看 299关注 0票数 1

我在试图找出所有的着色语言之间的区别。我正在做一个游戏,在c++与武尔坎目前巫婆的意思(如果我已经正确地阅读),我呈现给Vulkan的每一个着色器必须在spir扩展。

但我有时会看到这个库的用途:https://github.com/KhronosGroup/SPIRV-Cross可以将spir翻译成其他语言(GLSL、HLSL或MSL),当我尝试制作一个游戏时,它会有用吗?不要在不同的平台上使用着色器。

或者我需要这些不同的格式来使用它们或者不同的平台?(这似乎不对,因为vulkan在寻找spir)。尽管如此,我发现有一个工具MoltenVK可以在Mac上使用着色器。这意味着mac不支持vulkan?那么,这些语言的利弊是什么呢?(我的意思是,在创建游戏时,用户不应该修改着色器)

我希望我的问题不要太模糊。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-18 18:50:44

您不能将SPIR与诸如GLSL和HLSL这样的高级语言进行比较。那些都是不同的东西。SPIR-V是一种与平台无关的中间表示(即SPIR-V中的"I“),其目的是将Vulkan (作为API)与实际的高级阴影语言(例如GLSL和HLSL)解耦。因此(您已经注意到),Vulkan实现并不真正了解GLSL或HLSL,只能使用SPIR-V着色器。

考虑到这一点,现在你所选择的高级语言(GLSL,HLSL,一些完全不同的东西)几乎没有关系,只要你有一种方法从那种阴影语言生成SPIR-V。对于GLSL,例如使用GLSL参考编译器生成SPIR-V,对于HLSL,可以使用DirectX着色编译器生成SPIR-V。尽管HLSL来自DirectX世界,但它有一个官方支持的SPIR编译器后端,已经准备好生产了。无论您是使用GLSL还是HLSL,基本上都是个人选择。HLSL在商业领域中更常见,因为这种语言比GLSL更现代,有模板之类的东西。但最终选择是你的。

至于MacOS: MoltenVK是一个MacOS/iOS兼容的Vulkan实现在金属之上。因此,所有对Vulkan适用的内容也适用于MoltenVK (在MacOS和iOS上)。因此,对于Windows、Android或Linux,您可以在SPIR-V中提供您的着色器。由于SPIR-V着色器与平台无关,您生成的SPIR-V将在所有支持Vulkan的平台上工作(除非您在着色器中使用特定的扩展,而这些扩展在特定的平台上是不可用的)。

至于SPIR交叉:在编写游戏时,它可能不是你需要的东西。当您决定使用哪种阴影语言,然后使用编译器为该阴影语言生成SPIR-V,您提供给Vulkan您很可能不需要转换从SPIR-V,因为您的所有源着色器都是用一种高级语言编写的。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73403116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档