24 #include <IMaterialRendererServices.h>
45 const std::string &filename);
50 video::E_MATERIAL_TYPE
material = video::EMT_SOLID;
62 namespace irr {
namespace video {
63 class IMaterialRendererServices;
83 template <
typename T, std::
size_t count=1>
94 void set(
const T value[count], video::IMaterialRendererServices *services)
99 services->setPixelShaderConstant(
m_name, value, count);
101 services->setVertexShaderConstant(
m_name, value, count);
102 std::copy(value, value + count,
m_sent);
107 template <
typename T, std::
size_t count = 1>
114 template <
typename T, std::
size_t count = 1>
145 const std::string &filename,
const std::string &program)=0;
155 const std::string &program_type,
const std::string &program);
CachedPixelShaderSetting(const char *name)
Definition: shader.h:110
bool has_been_set
Definition: shader.h:87
T m_sent[count]
Definition: shader.h:86
bool is_pixel
Definition: shader.h:88
void set(const T value[count], video::IMaterialRendererServices *services)
Definition: shader.h:94
CachedShaderSetting(const char *name, bool is_pixel)
Definition: shader.h:90
const char * m_name
Definition: shader.h:85
CachedVertexShaderSetting(const char *name)
Definition: shader.h:117
virtual ~IShaderConstantSetterFactory()=default
virtual IShaderConstantSetter * create()=0
virtual void onSetConstants(video::IMaterialRendererServices *services)=0
virtual void onSetMaterial(const video::SMaterial &material)
Definition: shader.h:71
virtual ~IShaderConstantSetter()=default
virtual ShaderInfo getShaderInfo(u32 id)
Definition: shader.h:133
virtual ~IShaderSource()=default
virtual u32 getShader(const std::string &name, MaterialType material_type, NodeDrawType drawtype=NDT_NORMAL)
Definition: shader.h:134
virtual u32 getShaderIdDirect(const std::string &name, MaterialType material_type, NodeDrawType drawtype=NDT_NORMAL)
Definition: shader.h:131
virtual void rebuildShaders()=0
virtual ~IWritableShaderSource()=default
IWritableShaderSource()=default
virtual void insertSourceShader(const std::string &name_of_shader, const std::string &filename, const std::string &program)=0
virtual void processQueue()=0
virtual void addShaderConstantSetterFactory(IShaderConstantSetterFactory *setter)=0
NodeDrawType
Definition: nodedef.h:170
@ NDT_NORMAL
Definition: nodedef.h:172
std::string getShaderPath(const std::string &name_of_shader, const std::string &filename)
Definition: shader.cpp:72
IWritableShaderSource * createShaderSource()
Definition: shader.cpp:372
void dumpShaderProgram(std::ostream &output_stream, const std::string &program_type, const std::string &program)
Definition: shader.cpp:713
std::string name
Definition: shader.h:48
virtual ~ShaderInfo()=default
video::E_MATERIAL_TYPE base_material
Definition: shader.h:49
MaterialType material_type
Definition: shader.h:52
NodeDrawType drawtype
Definition: shader.h:51
video::E_MATERIAL_TYPE material
Definition: shader.h:50
MaterialType
Definition: tile.h:141
@ TILE_MATERIAL_BASIC
Definition: tile.h:142