3 #include <Engine/RaEngine.hpp>
5 #include <Core/Asset/MaterialData.hpp>
6 #include <Engine/Data/Material.hpp>
12 class RawShaderMaterialConverter;
36 const std::string& instanceName,
37 const std::vector<std::pair<Ra::Engine::Data::ShaderType, std::string>>& shaders,
38 std::shared_ptr<Ra::Engine::Data::ShaderParameterProvider> paramProvider ) :
39 MaterialData( instanceName,
"Ra::Engine::Data::RawShaderMaterial" ),
40 m_shaders { shaders },
41 m_paramProvider { std::move( paramProvider ) } {}
47 std::vector<std::pair<Ra::Engine::Data::ShaderType, std::string>> m_shaders;
48 std::shared_ptr<Ra::Engine::Data::ShaderParameterProvider> m_paramProvider;
84 const std::string& instanceName,
85 const std::vector<std::pair<Data::ShaderType, std::string>>& shaders,
86 std::shared_ptr<Data::ShaderParameterProvider> paramProvider );
113 void registerDefaultTechnique();
124 void updateShaders(
const std::vector<std::pair<Data::ShaderType, std::string>>& shaders,
125 std::shared_ptr<Data::ShaderParameterProvider> paramProvider =
nullptr );
131 void updateGL() override final;
138 static
void registerMaterial();
144 static
void unregisterMaterial();
151 std::
string computeKey();
153 std::vector<std::pair<Data::ShaderType, std::
string>> m_shaders;
155 std::
string m_materialKey {};
161 return new RawShaderMaterial( mat->getName(), mat->m_shaders, mat->m_paramProvider );
165 return m_paramProvider->getParameters();
169 return m_paramProvider->getParameters();
represent material data loaded by a file loader. Material data must be identified by a unique name....
RawShaderMaterialData(const std::string &instanceName, const std::vector< std::pair< Ra::Engine::Data::ShaderType, std::string >> &shaders, std::shared_ptr< Ra::Engine::Data::ShaderParameterProvider > paramProvider)
Data::RenderParameters & getParameters() override
RawShaderMaterial(const RawShaderMaterial &)=delete