CmGpuProgramImporter.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "CmGpuProgramImporter.h"
  2. #include "CmPath.h"
  3. #include "CmDataStream.h"
  4. #include "CmFileSystem.h"
  5. #include "CmGpuProgramImportOptions.h"
  6. #include "CmHighLevelGpuProgram.h"
  7. namespace CamelotEngine
  8. {
  9. bool GpuProgramImporter::isExtensionSupported(const String& ext) const
  10. {
  11. if(ext == "gpuprog")
  12. return true;
  13. return false;
  14. }
  15. bool GpuProgramImporter::isMagicNumberSupported(const UINT8* magicNumPtr, UINT32 numBytes) const
  16. {
  17. // Gpu program files are plain-text so no magic number
  18. return true;
  19. }
  20. BaseResourceHandle GpuProgramImporter::import(const String& filePath, ConstImportOptionsPtr importOptions)
  21. {
  22. String ext = Path::getExtension(filePath);
  23. ext = ext.substr(1, ext.size() - 1); // Remove the .
  24. DataStreamPtr stream = FileSystem::open(filePath);
  25. String shaderSource = stream->getAsString();
  26. const GpuProgramImportOptions* gpuProgImportOptions = static_cast<const GpuProgramImportOptions*>(importOptions.get());
  27. String entryPoint = gpuProgImportOptions->getEntryPoint();
  28. GpuProgramProfile profile = gpuProgImportOptions->getProfile();
  29. String language = gpuProgImportOptions->getLanguage();
  30. GpuProgramType gptype = gpuProgImportOptions->getType();
  31. HighLevelGpuProgramHandle gpuProgram = HighLevelGpuProgram::create(shaderSource, entryPoint, language, gptype, profile, nullptr);
  32. gpuProgram.waitUntilLoaded();
  33. return gpuProgram;
  34. }
  35. ImportOptionsPtr GpuProgramImporter::createImportOptions() const
  36. {
  37. return ImportOptionsPtr(new GpuProgramImportOptions());
  38. }
  39. }