Advertisement
Zgragselus

Untitled

Oct 25th, 2024
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 KB | None | 0 0
  1. void Shader::ProcessPragmas(const std::string& filename, std::vector<ShaderEntryPoint>& entryPoints)
  2. {
  3.     std::ifstream file(filename);
  4.     if (file.is_open())
  5.     {
  6.         std::string line;
  7.         while (std::getline(file, line))
  8.         {
  9.             if (line.find("#pragma") != std::string::npos)
  10.             {
  11.                 std::vector<std::string> tokens = String::Split(line, ' ');
  12.  
  13.                 if (tokens.size() >= 3)
  14.                 {
  15.                     if (tokens[1] == SHADER_ENTRY_SYMBOL_VERTEX_SHADER)
  16.                     {
  17.                         entryPoints.push_back(ShaderEntryPoint(ShaderType::VERTEX_SHADER, String::ToWideChar(tokens[2])));
  18.                     }
  19.                     else if (tokens[1] == SHADER_ENTRY_SYMBOL_PIXEL_SHADER)
  20.                     {
  21.                         entryPoints.push_back(ShaderEntryPoint(ShaderType::PIXEL_SHADER, String::ToWideChar(tokens[2])));
  22.                     }
  23.                     else if (tokens[1] == SHADER_ENTRY_SYMBOL_GEOMETRY_SHADER)
  24.                     {
  25.                         entryPoints.push_back(ShaderEntryPoint(ShaderType::GEOMETRY_SHADER, String::ToWideChar(tokens[2])));
  26.                     }
  27.                     else if (tokens[1] == SHADER_ENTRY_SYMBOL_HULL_SHADER)
  28.                     {
  29.                         entryPoints.push_back(ShaderEntryPoint(ShaderType::HULL_SHADER, String::ToWideChar(tokens[2])));
  30.                     }
  31.                     else if (tokens[1] == SHADER_ENTRY_SYMBOL_DOMAIN_SHADER)
  32.                     {
  33.                         entryPoints.push_back(ShaderEntryPoint(ShaderType::DOMAIN_SHADER, String::ToWideChar(tokens[2])));
  34.                     }
  35.                     else if (tokens[1] == SHADER_ENTRY_SYMBOL_AMPLIFICATION_SHADER)
  36.                     {
  37.                         entryPoints.push_back(ShaderEntryPoint(ShaderType::AMPLIFICATION_SHADER, String::ToWideChar(tokens[2])));
  38.                     }
  39.                     else if (tokens[1] == SHADER_ENTRY_SYMBOL_MESH_SHADER)
  40.                     {
  41.                         entryPoints.push_back(ShaderEntryPoint(ShaderType::MESH_SHADER, String::ToWideChar(tokens[2])));
  42.                     }
  43.                     else if (tokens[1] == SHADER_ENTRY_SYMBOL_COMPUTE_SHADER)
  44.                     {
  45.                         entryPoints.push_back(ShaderEntryPoint(ShaderType::COMPUTE_SHADER, String::ToWideChar(tokens[2])));
  46.                     }
  47.                 }
  48.             }
  49.         }
  50.  
  51.         file.close();
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement