X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fshader.h;h=b8aa88bce17f92db0c8f66fccb914bff89cfafb7;hb=65c09a96f41705bb8e75fc5ff4276342be91ed11;hp=a7367eaff46a3895674382501bc8b32aaa16c46c;hpb=6d0ea26c2d62c3774ff384cf1bfc2a3372b49a3b;p=minetest.git diff --git a/src/shader.h b/src/shader.h index a7367eaff..b8aa88bce 100644 --- a/src/shader.h +++ b/src/shader.h @@ -4,16 +4,16 @@ Copyright (C) 2013 celeron55, Perttu Ahola Copyright (C) 2013 Kahrl 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 -the Free Software Foundation; either version 2 of the License, or +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GNU Lesser General Public License for more details. -You should have received a copy of the GNU General Public License along +You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ @@ -46,9 +46,16 @@ std::string getShaderPath(const std::string &name_of_shader, struct ShaderInfo { std::string name; + video::E_MATERIAL_TYPE base_material; video::E_MATERIAL_TYPE material; - - ShaderInfo(): name(""), material(video::EMT_SOLID) {} + u8 drawtype; + u8 material_type; + s32 user_data; + + ShaderInfo(): name(""), base_material(video::EMT_SOLID), + material(video::EMT_SOLID), + drawtype(0), material_type(0) {} + virtual ~ShaderInfo() {} }; /* @@ -76,11 +83,11 @@ class IShaderSource public: IShaderSource(){} virtual ~IShaderSource(){} - virtual u32 getShaderId(const std::string &name){return 0;} - virtual u32 getShaderIdDirect(const std::string &name){return 0;} - virtual std::string getShaderName(u32 id){return "";} - virtual ShaderInfo getShader(u32 id){return ShaderInfo();} - virtual ShaderInfo getShader(const std::string &name){return ShaderInfo();} + 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 @@ -88,11 +95,11 @@ class IWritableShaderSource : public IShaderSource public: IWritableShaderSource(){} virtual ~IWritableShaderSource(){} - virtual u32 getShaderId(const std::string &name){return 0;} - virtual u32 getShaderIdDirect(const std::string &name){return 0;} - virtual std::string getShaderName(u32 id){return "";} - virtual ShaderInfo getShader(u32 id){return ShaderInfo();} - virtual ShaderInfo getShader(const std::string &name){return ShaderInfo();} + 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 insertSourceShader(const std::string &name_of_shader, @@ -103,4 +110,7 @@ class IWritableShaderSource : public IShaderSource IWritableShaderSource* createShaderSource(IrrlichtDevice *device); +void dumpShaderProgram(std::ostream &output_stream, + const std::string &program_type, const std::string &program); + #endif