ShaderProgramParser.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright (C) 2009-present, 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/ShaderParser.h>
  7. ANKI_TEST(ShaderCompiler, ShaderCompilerParser)
  8. {
  9. class FilesystemInterface : public ShaderCompilerFilesystemInterface
  10. {
  11. public:
  12. U32 count = 0;
  13. Error readAllText([[maybe_unused]] CString filename, ShaderCompilerString& 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. ShaderParser parser("filename0", &interface, {});
  37. ANKI_TEST_EXPECT_NO_ERR(parser.parse());
  38. #if 0
  39. // Test a variant
  40. U32 mutationIdx = 0;
  41. Array<MutatorValue, 2> mutation = {{2, 4}};
  42. ShaderCompilerString variant;
  43. ANKI_TEST_EXPECT_NO_ERR(parser.generateVariant(mutation, "vert", variant));
  44. // printf("%s\n", variant.getSource(ShaderType::kVertex).cstr());
  45. #endif
  46. }