ShaderProgramParser.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Copyright (C) 2009-2023, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #include <Tests/Framework/Framework.h>
  6. #include <AnKi/ShaderCompiler/ShaderProgramParser.h>
  7. ANKI_TEST(ShaderCompiler, ShaderCompilerParser)
  8. {
  9. class FilesystemInterface : public ShaderProgramFilesystemInterface
  10. {
  11. public:
  12. U32 count = 0;
  13. Error readAllText([[maybe_unused]] CString filename, String& txt) final
  14. {
  15. if(count == 0)
  16. {
  17. txt = R"(
  18. #pragma anki mutator M0 1 2
  19. #pragma anki mutator M1 3 4
  20. #pragma anki start vert
  21. // vert
  22. #pragma anki end
  23. #pragma anki start frag
  24. // frag
  25. #pragma anki end
  26. )";
  27. }
  28. else
  29. {
  30. return Error::kFunctionFailed;
  31. }
  32. ++count;
  33. return Error::kNone;
  34. }
  35. } interface;
  36. ShaderProgramParser parser("filename0", &interface, ShaderCompilerOptions());
  37. ANKI_TEST_EXPECT_NO_ERR(parser.parse());
  38. // Test a variant
  39. Array<MutatorValue, 2> mutation = {{2, 4}};
  40. ShaderProgramParserVariant variant;
  41. ANKI_TEST_EXPECT_NO_ERR(parser.generateVariant(mutation, variant));
  42. // printf("%s\n", variant.getSource(ShaderType::kVertex).cstr());
  43. }