confundido sobre el lenguaje de sombreado a usar (HLSL o GLSL), debido a las plataformas compatibles. Los recursos de HLSL están disponibles en abundancia, pero vi a través de la web que es específico para DirectX (Windows). ¿Sería eso un problema si planeo ejecutar mi aplicación en Android? -No puedo confiar completamente en ShaderGraph-
Gracias
Puede usar HLSL en Unity en plataformas Android. De la documentación :
sintaxis HLSL
El lenguaje HLSL en sí tiene dos sintaxis: una sintaxis de estilo DX9 "heredada" y una sintaxis de estilo DX10+ más moderna.
La diferencia radica principalmente en cómo funcionan las funciones de muestreo de textura:
- La sintaxis heredada usa sampler2D, tex2D() y funciones similares. Esta sintaxis funciona en todas las plataformas.
- La sintaxis DX10+ utiliza las funciones Texture2D, SamplerState y .Sample(). Algunas formas de esta sintaxis no funcionan en plataformas OpenGL, debido a que las texturas y las muestras no son objetos diferentes en OpenGL. En Unity, puede evitar problemas con la compatibilidad con la plataforma de sintaxis HLSL mediante el uso de macros predefinidas para declarar y probar texturas. Unity expande estas macros a la sintaxis más adecuada, según la plataforma para la que se compila el sombreador.
Compiladores de sombreadores
Diferentes plataformas usan diferentes compiladores de shaders para la compilación de programas de shaders de la siguiente manera:
- Las plataformas Windows y Microsoft (DX11, DX12 y Xbox One) utilizan el compilador HLSL de Microsoft (actualmente FXC/D3DCompiler_47).
- OpenGL (Core y ES), Metal y Vulkan usan HLSL de Microsoft seguido de la traducción del código de bytes a GLSL, Metal o SPIR-V, usando HLSLcc.
- Otras plataformas de consola usan sus respectivos compiladores (por ejemplo, PSSL en PS4).
- Los Surface Shaders usan HLSL y MojoShader para el paso de análisis de generación de código.