Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d HLSL vs GLSL,在编写Unity着色器时_Unity3d_Glsl_Shader_Hlsl_Hlsl2glsl - Fatal编程技术网

Unity3d HLSL vs GLSL,在编写Unity着色器时

Unity3d HLSL vs GLSL,在编写Unity着色器时,unity3d,glsl,shader,hlsl,hlsl2glsl,Unity3d,Glsl,Shader,Hlsl,Hlsl2glsl,由于支持平台,对使用HLSL或GLSL的着色语言感到困惑。 HLSL资源非常丰富,但我在网上看到它是DirectX windows特有的。如果我计划在android上运行我的应用程序,这会是一个问题吗? -我不能完全依赖ShaderGraph- 谢谢您可以在Android平台上的Unity中使用HLSL。发件人: HLSL语法 HLSL语言本身有两种语法:“遗留”DX9样式语法和更现代的DX10+样式语法 区别主要在于纹理采样函数的工作方式: 传统语法使用sampler2D、tex2D和类似函数

由于支持平台,对使用HLSL或GLSL的着色语言感到困惑。 HLSL资源非常丰富,但我在网上看到它是DirectX windows特有的。如果我计划在android上运行我的应用程序,这会是一个问题吗? -我不能完全依赖ShaderGraph-


谢谢

您可以在Android平台上的Unity中使用HLSL。发件人:

HLSL语法 HLSL语言本身有两种语法:“遗留”DX9样式语法和更现代的DX10+样式语法

区别主要在于纹理采样函数的工作方式:

传统语法使用sampler2D、tex2D和类似函数。此语法适用于所有平台。 DX10+语法使用Texture2D、SampleState和.Sample函数。这种语法的某些形式在OpenGL平台上不起作用,因为纹理和采样器在OpenGL中不是不同的对象。 在Unity中,通过使用预定义宏声明和采样纹理,可以避免HLSL语法平台支持的问题。Unity将这些宏扩展为最合适的语法,具体取决于着色器编译的平台。 着色器编译器 不同的平台使用不同的着色器编译器进行着色器程序编译,如下所示:

Windows和Microsoft平台DX11、DX12和Xbox One都使用Microsoft的HLSL编译器(目前为FXC/D3DCompiler_47)。 OpenGL Core&ES、Metal和Vulkan使用微软的HLSL,然后使用HLSLcc将字节码翻译成GLSL、Metal或SPIR-V。 其他控制台平台使用各自的编译器,例如PS4上的PSSL。 曲面着色器使用HLSL和MojoShader进行代码生成分析步骤。
HLSL确实是Direct3D的着色器语言,但鉴于大型游戏引擎需要在多个平台上工作,它们通常具有某种可移植性机制,允许您在其他平台上使用HLSL。正如@Ruzihm所说,团结就是如此。