Browse Source

Shaderc console out (#2758)

* Add support to output compiled shader to stdout

* Whitespace formating fixes

* Updated shaderc cli stdout output option to "--stdout"
Catalin Moldovan 3 years ago
parent
commit
11ba8de2d1
1 changed files with 26 additions and 18 deletions
  1. 26 18
      tools/shaderc/shaderc.cpp

+ 26 - 18
tools/shaderc/shaderc.cpp

@@ -1007,6 +1007,7 @@ namespace bgfx
 			  "  -f <file path>                Input file path.\n"
 			  "  -i <include path>             Include path (for multiple paths use -i multiple times).\n"
 			  "  -o <file path>                Output file path.\n"
+			  "      --stdout                  Output to console.\n"
 			  "      --bin2c [array name]      Generate C header file. If array name is not specified base file name will be used as name.\n"
 			  "      --depends                 Generate makefile style depends file.\n"
 			  "      --platform <platform>     Target platform.\n"
@@ -1068,7 +1069,7 @@ namespace bgfx
 		return word;
 	}
 
-	bool compileShader(const char* _varying, const char* _comment, char* _shader, uint32_t _shaderLen, Options& _options, bx::FileWriter* _writer)
+	bool compileShader(const char* _varying, const char* _comment, char* _shader, uint32_t _shaderLen, Options& _options, bx::WriterI* _writer)
 	{
 		uint32_t profile_id = 0;
 
@@ -2633,10 +2634,11 @@ namespace bgfx
 			return bx::kExitFailure;
 		}
 
+		bool consoleOut = cmdLine.hasArg("stdout");
 		const char* outFilePath = cmdLine.findOption('o');
-		if (NULL == outFilePath)
+		if (NULL == outFilePath && !consoleOut)
 		{
-			help("Output file name must be specified.");
+			help("Output file name must be specified or use \"--stdout\" to output to stdout.");
 			return bx::kExitFailure;
 		}
 
@@ -2649,7 +2651,7 @@ namespace bgfx
 
 		Options options;
 		options.inputFilePath = filePath;
-		options.outputFilePath = outFilePath;
+		options.outputFilePath = consoleOut ? "" : outFilePath;
 		options.shaderType = bx::toLower(type[0]);
 
 		options.disasm = cmdLine.hasArg('\0', "disasm");
@@ -2815,25 +2817,31 @@ namespace bgfx
 
 			bx::FileWriter* writer = NULL;
 
-			if (!bin2c.isEmpty() )
+			if (!consoleOut)
 			{
-				writer = new Bin2cWriter(bin2c);
-			}
-			else
-			{
-				writer = new bx::FileWriter;
-			}
+				if (!bin2c.isEmpty())
+				{
+					writer = new Bin2cWriter(bin2c);
+				}
+				else
+				{
+					writer = new bx::FileWriter;
+				}
 
-			if (!bx::open(writer, outFilePath) )
-			{
-				bx::printf("Unable to open output file '%s'.\n", outFilePath);
-				return bx::kExitFailure;
+				if (!bx::open(writer, outFilePath))
+				{
+					bx::printf("Unable to open output file '%s'.\n", outFilePath);
+					return bx::kExitFailure;
+				}
 			}
 
-			compiled = compileShader(varying, commandLineComment.c_str(), data, size, options, writer);
+			compiled = compileShader(varying, commandLineComment.c_str(), data, size, options, consoleOut ? bx::getStdOut() : writer);
 
-			bx::close(writer);
-			delete writer;
+			if (!consoleOut)
+			{
+				bx::close(writer);
+				delete writer;
+			}
 		}
 
 		if (compiled)