29 lines
1.0 KiB
C++
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
|