88{
89 std::stringstream file_buffer;
90 std::string shader_text;
91 std::vector<shader_props> shaders;
92
93 if (ShaderProgram->SingleSourceFileName != "") {
94 SCL_CORE_INFO(
"Shader updation from file \"{}\" started.", ShaderProgram->SingleSourceFileName);
95 shader_text =
LoadFile(ShaderProgram->SingleSourceFileName);
96 assets_manager::shader_preprocessor::ProcessIncludes(ShaderProgram->SingleSourceFileName,
97 std::filesystem::path(ShaderProgram->SingleSourceFileName).parent_path().string(),
98 shader_text);
99
100 assets_manager::shader_preprocessor::SeparateShaders(ShaderProgram->SingleSourceFileName, shader_text, shaders);
101 ShaderProgram->Update(shaders);
102 } else if (ShaderProgram->VertexShadersourceFileName != "" && ShaderProgram->PixelShadersourceFileName != "" &&
103 ShaderProgram->GeometryShadersourceFileName == "") {
104 SCL_CORE_INFO(
"Shader updation from files \"{}\", \"{}\" started.", ShaderProgram->VertexShadersourceFileName, ShaderProgram->PixelShadersourceFileName);
105
106
107 shader_text =
LoadFile(ShaderProgram->VertexShadersourceFileName);
108 assets_manager::shader_preprocessor::ProcessIncludes(ShaderProgram->VertexShadersourceFileName,
109 std::filesystem::path(ShaderProgram->VertexShadersourceFileName).parent_path().string(),
110 shader_text);
111 shaders.push_back({ shader_type::VERTEX, shader_text });
112
113
114 shader_text =
LoadFile(ShaderProgram->PixelShadersourceFileName);
115 assets_manager::shader_preprocessor::ProcessIncludes(ShaderProgram->PixelShadersourceFileName,
116 std::filesystem::path(ShaderProgram->PixelShadersourceFileName).parent_path().string(),
117 shader_text);
118 shaders.push_back({ shader_type::PIXEL, shader_text });
119
120 ShaderProgram->Update(shaders);
121 } else {
122 SCL_CORE_INFO(
"Shader creation from files \"{}\", \"{}\", \"{}\" started.", ShaderProgram->VertexShadersourceFileName, ShaderProgram->GeometryShadersourceFileName, ShaderProgram->PixelShadersourceFileName);
123
124
125 shader_text =
LoadFile(ShaderProgram->VertexShadersourceFileName);
126 assets_manager::shader_preprocessor::ProcessIncludes(ShaderProgram->VertexShadersourceFileName,
127 std::filesystem::path(ShaderProgram->VertexShadersourceFileName).parent_path().string(),
128 shader_text);
129 shaders.push_back({ shader_type::VERTEX, shader_text });
130
131
132 shader_text =
LoadFile(ShaderProgram->GeometryShadersourceFileName);
133 assets_manager::shader_preprocessor::ProcessIncludes(ShaderProgram->GeometryShadersourceFileName,
134 std::filesystem::path(ShaderProgram->GeometryShadersourceFileName).parent_path().string(),
135 shader_text);
136 shaders.push_back({ shader_type::GEOMETRY, shader_text });
137
138
139 shader_text =
LoadFile(ShaderProgram->PixelShadersourceFileName);
140 assets_manager::shader_preprocessor::ProcessIncludes(ShaderProgram->PixelShadersourceFileName,
141 std::filesystem::path(ShaderProgram->PixelShadersourceFileName).parent_path().string(),
142 shader_text);
143 shaders.push_back({ shader_type::PIXEL, shader_text });
144
145 ShaderProgram->Update(shaders);
146 }
147}