]> git.lizzy.rs Git - minetest.git/blobdiff - src/shader.h
Merge remote branch 'origin/master'
[minetest.git] / src / shader.h
index d6a425311e283fb1b60cba6ebe2226c171b600d0..a7367eaff46a3895674382501bc8b32aaa16c46c 100644 (file)
@@ -1,7 +1,7 @@
 /*
-Minetest-c55
-Copyright (C) 2012 celeron55, Perttu Ahola <celeron55@gmail.com>
-Copyright (C) 2012 Kahrl <kahrl@gmx.net>
+Minetest
+Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
+Copyright (C) 2013 Kahrl <kahrl@gmx.net>
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -51,6 +51,22 @@ struct ShaderInfo
        ShaderInfo(): name(""), material(video::EMT_SOLID) {}
 };
 
+/*
+       Setter of constants for shaders
+*/
+
+namespace irr { namespace video {
+       class IMaterialRendererServices;
+} }
+
+class IShaderConstantSetter
+{
+public:
+       virtual ~IShaderConstantSetter(){};
+       virtual void onSetConstants(video::IMaterialRendererServices *services,
+                       bool is_highlevel) = 0;
+};
+
 /*
        ShaderSource creates and caches shaders.
 */
@@ -82,6 +98,7 @@ class IWritableShaderSource : public IShaderSource
        virtual void insertSourceShader(const std::string &name_of_shader,
                const std::string &filename, const std::string &program)=0;
        virtual void rebuildShaders()=0;
+       virtual void addGlobalConstantSetter(IShaderConstantSetter *setter)=0;
 };
 
 IWritableShaderSource* createShaderSource(IrrlichtDevice *device);