|
|
@@ -707,10 +707,11 @@ int main(int _argc, const char* _argv[])
|
|
|
|
|
|
bool raw = cmdLine.hasArg('\0', "raw");
|
|
|
|
|
|
- uint32_t glsl = 0;
|
|
|
- uint32_t essl = 0;
|
|
|
- uint32_t hlsl = 2;
|
|
|
- uint32_t d3d = 11;
|
|
|
+ uint32_t glsl = 0;
|
|
|
+ uint32_t essl = 0;
|
|
|
+ uint32_t hlsl = 2;
|
|
|
+ uint32_t d3d = 11;
|
|
|
+ uint32_t metal = 0;
|
|
|
const char* profile = cmdLine.findOption('p', "profile");
|
|
|
if (NULL != profile)
|
|
|
{
|
|
|
@@ -731,6 +732,10 @@ int main(int _argc, const char* _argv[])
|
|
|
{
|
|
|
hlsl = 5;
|
|
|
}
|
|
|
+ else if (0 == strcmp(profile, "metal") )
|
|
|
+ {
|
|
|
+ metal = 1;
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
glsl = atoi(profile);
|
|
|
@@ -796,6 +801,7 @@ int main(int _argc, const char* _argv[])
|
|
|
// preprocessor.setDefaultDefine("BGFX_SHADER_LANGUAGE_ESSL");
|
|
|
preprocessor.setDefaultDefine("BGFX_SHADER_LANGUAGE_GLSL");
|
|
|
preprocessor.setDefaultDefine("BGFX_SHADER_LANGUAGE_HLSL");
|
|
|
+ preprocessor.setDefaultDefine("BGFX_SHADER_LANGUAGE_METAL");
|
|
|
preprocessor.setDefaultDefine("BGFX_SHADER_TYPE_COMPUTE");
|
|
|
preprocessor.setDefaultDefine("BGFX_SHADER_TYPE_FRAGMENT");
|
|
|
preprocessor.setDefaultDefine("BGFX_SHADER_TYPE_VERTEX");
|
|
|
@@ -832,6 +838,9 @@ int main(int _argc, const char* _argv[])
|
|
|
{
|
|
|
preprocessor.setDefine("BX_PLATFORM_OSX=1");
|
|
|
preprocessor.setDefine(glslDefine);
|
|
|
+ char temp[256];
|
|
|
+ bx::snprintf(temp, sizeof(temp), "BGFX_SHADER_LANGUAGE_METAL=%d", metal);
|
|
|
+ preprocessor.setDefine(temp);
|
|
|
}
|
|
|
else if (0 == bx::stricmp(platform, "windows") )
|
|
|
{
|
|
|
@@ -1102,7 +1111,8 @@ int main(int _argc, const char* _argv[])
|
|
|
else
|
|
|
{
|
|
|
if (0 != glsl
|
|
|
- || 0 != essl)
|
|
|
+ || 0 != essl
|
|
|
+ || 0 != metal)
|
|
|
{
|
|
|
}
|
|
|
else
|
|
|
@@ -1346,6 +1356,9 @@ int main(int _argc, const char* _argv[])
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ else if (0 != metal)
|
|
|
+ {
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
preprocessor.writef(
|
|
|
@@ -1711,11 +1724,27 @@ int main(int _argc, const char* _argv[])
|
|
|
}
|
|
|
|
|
|
code += preprocessor.m_preprocessed;
|
|
|
- compiled = compileGLSLShader(cmdLine, essl, code, writer);
|
|
|
+ compiled = compileGLSLShader(cmdLine
|
|
|
+ , essl
|
|
|
+ , code
|
|
|
+ , writer
|
|
|
+ );
|
|
|
+ }
|
|
|
+ else if (0 != metal)
|
|
|
+ {
|
|
|
+ compiled = compileGLSLShader(cmdLine
|
|
|
+ , BX_MAKEFOURCC('M', 'T', 'L', 0)
|
|
|
+ , preprocessor.m_preprocessed
|
|
|
+ , writer
|
|
|
+ );
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- compiled = compileHLSLShader(cmdLine, d3d, preprocessor.m_preprocessed, writer);
|
|
|
+ compiled = compileHLSLShader(cmdLine
|
|
|
+ , d3d
|
|
|
+ , preprocessor.m_preprocessed
|
|
|
+ , writer
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
writer->close();
|