diff options
Diffstat (limited to 'src/client/shader.h')
-rw-r--r-- | src/client/shader.h | 107 |
1 files changed, 66 insertions, 41 deletions
diff --git a/src/client/shader.h b/src/client/shader.h index 109d39336..4d1578df0 100644 --- a/src/client/shader.h +++ b/src/client/shader.h @@ -39,10 +39,10 @@ class IGameDef; Utilizes a thread-safe cache. */ -std::string getShaderPath(const std::string &name_of_shader, - const std::string &filename); +std::string getShaderPath(const std::string &name_of_shader, const std::string &filename); -struct ShaderInfo { +struct ShaderInfo +{ std::string name = ""; video::E_MATERIAL_TYPE base_material = video::EMT_SOLID; video::E_MATERIAL_TYPE material = video::EMT_SOLID; @@ -57,38 +57,43 @@ struct ShaderInfo { Setter of constants for shaders */ -namespace irr { namespace video { - class IMaterialRendererServices; -} } +namespace irr +{ +namespace video +{ +class IMaterialRendererServices; +} +} - -class IShaderConstantSetter { +class IShaderConstantSetter +{ public: virtual ~IShaderConstantSetter() = default; virtual void onSetConstants(video::IMaterialRendererServices *services, bool is_highlevel) = 0; - virtual void onSetMaterial(const video::SMaterial& material) - { } + virtual void onSetMaterial(const video::SMaterial &material) {} }; - -class IShaderConstantSetterFactory { +class IShaderConstantSetterFactory +{ public: virtual ~IShaderConstantSetterFactory() = default; - virtual IShaderConstantSetter* create() = 0; + virtual IShaderConstantSetter *create() = 0; }; - -template <typename T, std::size_t count=1> -class CachedShaderSetting { +template <typename T, std::size_t count = 1> class CachedShaderSetting +{ const char *m_name; T m_sent[count]; bool has_been_set = false; bool is_pixel; + protected: CachedShaderSetting(const char *name, bool is_pixel) : - m_name(name), is_pixel(is_pixel) - {} + m_name(name), is_pixel(is_pixel) + { + } + public: void set(const T value[count], video::IMaterialRendererServices *services) { @@ -104,55 +109,75 @@ public: }; template <typename T, std::size_t count = 1> -class CachedPixelShaderSetting : public CachedShaderSetting<T, count> { +class CachedPixelShaderSetting : public CachedShaderSetting<T, count> +{ public: CachedPixelShaderSetting(const char *name) : - CachedShaderSetting<T, count>(name, true){} + CachedShaderSetting<T, count>(name, true) + { + } }; template <typename T, std::size_t count = 1> -class CachedVertexShaderSetting : public CachedShaderSetting<T, count> { +class CachedVertexShaderSetting : public CachedShaderSetting<T, count> +{ public: CachedVertexShaderSetting(const char *name) : - CachedShaderSetting<T, count>(name, false){} + CachedShaderSetting<T, count>(name, false) + { + } }; - /* ShaderSource creates and caches shaders. */ -class IShaderSource { +class IShaderSource +{ public: IShaderSource() = default; virtual ~IShaderSource() = default; - virtual u32 getShaderIdDirect(const std::string &name, - const u8 material_type, const u8 drawtype){return 0;} - virtual ShaderInfo getShaderInfo(u32 id){return ShaderInfo();} - virtual u32 getShader(const std::string &name, - const u8 material_type, const u8 drawtype){return 0;} + virtual u32 getShaderIdDirect(const std::string &name, const u8 material_type, + const u8 drawtype) + { + return 0; + } + virtual ShaderInfo getShaderInfo(u32 id) { return ShaderInfo(); } + virtual u32 getShader(const std::string &name, const u8 material_type, + const u8 drawtype) + { + return 0; + } }; -class IWritableShaderSource : public IShaderSource { +class IWritableShaderSource : public IShaderSource +{ public: IWritableShaderSource() = default; virtual ~IWritableShaderSource() = default; - virtual u32 getShaderIdDirect(const std::string &name, - const u8 material_type, const u8 drawtype){return 0;} - virtual ShaderInfo getShaderInfo(u32 id){return ShaderInfo();} - virtual u32 getShader(const std::string &name, - const u8 material_type, const u8 drawtype){return 0;} + virtual u32 getShaderIdDirect(const std::string &name, const u8 material_type, + const u8 drawtype) + { + return 0; + } + virtual ShaderInfo getShaderInfo(u32 id) { return ShaderInfo(); } + virtual u32 getShader(const std::string &name, const u8 material_type, + const u8 drawtype) + { + return 0; + } - virtual void processQueue()=0; + virtual void processQueue() = 0; virtual void insertSourceShader(const std::string &name_of_shader, - const std::string &filename, const std::string &program)=0; - virtual void rebuildShaders()=0; - virtual void addShaderConstantSetterFactory(IShaderConstantSetterFactory *setter) = 0; + const std::string &filename, const std::string &program) = 0; + virtual void rebuildShaders() = 0; + virtual void addShaderConstantSetterFactory( + IShaderConstantSetterFactory *setter) = 0; }; IWritableShaderSource *createShaderSource(); -void dumpShaderProgram(std::ostream &output_stream, - const std::string &program_type, const std::string &program); +void dumpShaderProgram(std::ostream &output_stream, const std::string &program_type, + const std::string &program); |