Files
XCEngine/engine/include/XCEngine/Resources/Shader/ShaderLoader.h

29 lines
1.0 KiB
C++

#pragma once
#include <XCEngine/Core/IO/IResourceLoader.h>
#include "Shader.h"
namespace XCEngine {
namespace Resources {
class ShaderLoader : public IResourceLoader {
public:
ShaderLoader();
virtual ~ShaderLoader() override;
ResourceType GetResourceType() const override { return ResourceType::Shader; }
Containers::Array<Containers::String> GetSupportedExtensions() const override;
bool CanLoad(const Containers::String& path) const override;
LoadResult Load(const Containers::String& path, const ImportSettings* settings = nullptr) override;
ImportSettings* GetDefaultSettings() const override;
bool CollectSourceDependencies(const Containers::String& path,
Containers::Array<Containers::String>& outDependencies) const;
private:
ShaderType DetectShaderType(const Containers::String& path, const Containers::String& source);
bool ParseShaderSource(const Containers::String& source, Shader* shader);
};
} // namespace Resources
} // namespace XCEngine