diff --git a/tools/bin/shaderc.exe b/tools/bin/shaderc.exe index d38c40350..7596cccb5 100644 Binary files a/tools/bin/shaderc.exe and b/tools/bin/shaderc.exe differ diff --git a/tools/shaderc.cpp b/tools/shaderc.cpp index 142f74407..e1921de5c 100644 --- a/tools/shaderc.cpp +++ b/tools/shaderc.cpp @@ -1341,40 +1341,85 @@ const char* baseName(const char* _filePath) // 4.1 410 // 4.2 420 11.0 vhdgf 5.0 +void help(const char* _error = NULL) +{ + if (NULL != _error) + { + fprintf(stderr, "Error:\n%s\n\n", _error); + } + + fprintf(stderr + , "shaderc, bgfx shader compiler tool\n" + "Copyright 2011-2012 Branimir Karadzic. All rights reserved.\n" + "License: http://www.opensource.org/licenses/BSD-2-Clause\n\n" + ); + + fprintf(stderr + , "Usage: shaderc -f -o --type --platform \n\n" + "Options:\n" + "\t-f Input file path.\n" + "\t-o Output file path.\n" + "\t --bin2c Generate C header file.\n" + "\t --depends Generate makefile style depends file.\n" + "\t --platform Target platform.\n" + "\t android\n" + "\t ios\n" + "\t linux\n" + "\t nacl\n" + "\t osx\n" + "\t windows\n" + "\t --type Shader type (vertex, fragment)\n" + "\t --varyingdef Path to varying.def.sc file.\n" + "\n" + "Options (DX9 and DX11 only):\n" + "\n" + "\t --disasm Disassemble compiled shader.\n" + "\t-p, --profile Shader model (f.e. ps_3_0).\n" + "\n" + "For additional information, see https://github.com/bkaradzic/bgfx\n" + ); +} + int main(int _argc, const char* _argv[]) { CommandLine cmdLine(_argc, _argv); + if (cmdLine.hasArg('h', "help") ) + { + help(); + return EXIT_FAILURE; + } + const char* filePath = cmdLine.findOption('f'); if (NULL == filePath) { - fprintf(stderr, "Shader file name must be specified.\n"); + help("Shader file name must be specified."); return EXIT_FAILURE; } const char* outFilePath = cmdLine.findOption('o'); if (NULL == outFilePath) { - fprintf(stderr, "Output file name must be specified.\n"); + help("Output file name must be specified."); return EXIT_FAILURE; } const char* type = cmdLine.findOption('\0', "type"); if (NULL == type) { - fprintf(stderr, "Must specify shader type."); + help("Must specify shader type."); return EXIT_FAILURE; } const char* platform = cmdLine.findOption('\0', "platform"); if (NULL == platform) { - fprintf(stderr, "Must specify platform.\n"); + help("Must specify platform."); return EXIT_FAILURE; } uint32_t hlsl = 2; - const char* profile = cmdLine.findOption('p'); + const char* profile = cmdLine.findOption('p', "profile"); if (NULL != profile) { if (0 == strncmp(&profile[1], "s_3", 3) ) @@ -1509,7 +1554,7 @@ int main(int _argc, const char* _argv[]) { VaryingMap varyingMap; - File attribdef("varying.def.sc"); + File attribdef(cmdLine.findOption("varyingdef", "varying.def.sc") ); const char* parse = attribdef.getData(); while (NULL != parse && *parse != '\0')