mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Rename IShaderConstantSetter
This commit is contained in:
parent
4c4e296274
commit
b2c2a6ff47
9 changed files with 55 additions and 55 deletions
|
@ -126,7 +126,7 @@ bool ClientLauncher::run(GameStartData &start_data, const Settings &cmd_args)
|
|||
// This is only global so it can be used by RenderingEngine::draw_load_screen().
|
||||
assert(!g_menucloudsmgr && !g_menuclouds);
|
||||
std::unique_ptr<IWritableShaderSource> ssrc(createShaderSource());
|
||||
ssrc->addShaderConstantSetterFactory(new FogShaderConstantSetterFactory());
|
||||
ssrc->addShaderUniformSetterFactory(new FogShaderUniformSetterFactory());
|
||||
g_menucloudsmgr = m_rendering_engine->get_scene_manager()->createNewSceneManager();
|
||||
g_menuclouds = new Clouds(g_menucloudsmgr, ssrc.get(), -1, rand());
|
||||
g_menuclouds->setHeight(100.0f);
|
||||
|
|
|
@ -188,7 +188,7 @@ public:
|
|||
typedef s32 SamplerLayer_t;
|
||||
|
||||
|
||||
class GameGlobalShaderConstantSetter : public IShaderConstantSetter
|
||||
class GameGlobalShaderUniformSetter : public IShaderUniformSetter
|
||||
{
|
||||
Sky *m_sky;
|
||||
Client *m_client;
|
||||
|
@ -247,12 +247,12 @@ public:
|
|||
|
||||
static void settingsCallback(const std::string &name, void *userdata)
|
||||
{
|
||||
reinterpret_cast<GameGlobalShaderConstantSetter*>(userdata)->onSettingsChange(name);
|
||||
reinterpret_cast<GameGlobalShaderUniformSetter*>(userdata)->onSettingsChange(name);
|
||||
}
|
||||
|
||||
void setSky(Sky *sky) { m_sky = sky; }
|
||||
|
||||
GameGlobalShaderConstantSetter(Sky *sky, Client *client) :
|
||||
GameGlobalShaderUniformSetter(Sky *sky, Client *client) :
|
||||
m_sky(sky),
|
||||
m_client(client)
|
||||
{
|
||||
|
@ -264,12 +264,12 @@ public:
|
|||
m_volumetric_light_enabled = g_settings->getBool("enable_volumetric_lighting") && m_bloom_enabled;
|
||||
}
|
||||
|
||||
~GameGlobalShaderConstantSetter()
|
||||
~GameGlobalShaderUniformSetter()
|
||||
{
|
||||
g_settings->deregisterAllChangedCallbacks(this);
|
||||
}
|
||||
|
||||
void onSetConstants(video::IMaterialRendererServices *services) override
|
||||
void onSetUniforms(video::IMaterialRendererServices *services) override
|
||||
{
|
||||
u32 daynight_ratio = (float)m_client->getEnv().getDayNightRatio();
|
||||
video::SColorf sunlight;
|
||||
|
@ -395,28 +395,28 @@ public:
|
|||
};
|
||||
|
||||
|
||||
class GameGlobalShaderConstantSetterFactory : public IShaderConstantSetterFactory
|
||||
class GameGlobalShaderUniformSetterFactory : public IShaderUniformSetterFactory
|
||||
{
|
||||
Sky *m_sky = nullptr;
|
||||
Client *m_client;
|
||||
std::vector<GameGlobalShaderConstantSetter *> created_nosky;
|
||||
std::vector<GameGlobalShaderUniformSetter *> created_nosky;
|
||||
public:
|
||||
GameGlobalShaderConstantSetterFactory(Client *client) :
|
||||
GameGlobalShaderUniformSetterFactory(Client *client) :
|
||||
m_client(client)
|
||||
{}
|
||||
|
||||
void setSky(Sky *sky)
|
||||
{
|
||||
m_sky = sky;
|
||||
for (GameGlobalShaderConstantSetter *ggscs : created_nosky) {
|
||||
for (GameGlobalShaderUniformSetter *ggscs : created_nosky) {
|
||||
ggscs->setSky(m_sky);
|
||||
}
|
||||
created_nosky.clear();
|
||||
}
|
||||
|
||||
virtual IShaderConstantSetter* create()
|
||||
virtual IShaderUniformSetter* create()
|
||||
{
|
||||
auto *scs = new GameGlobalShaderConstantSetter(m_sky, m_client);
|
||||
auto *scs = new GameGlobalShaderUniformSetter(m_sky, m_client);
|
||||
if (!m_sky)
|
||||
created_nosky.push_back(scs);
|
||||
return scs;
|
||||
|
@ -1289,11 +1289,11 @@ bool Game::createClient(const GameStartData &start_data)
|
|||
return false;
|
||||
}
|
||||
|
||||
auto *scsf = new GameGlobalShaderConstantSetterFactory(client);
|
||||
shader_src->addShaderConstantSetterFactory(scsf);
|
||||
auto *scsf = new GameGlobalShaderUniformSetterFactory(client);
|
||||
shader_src->addShaderUniformSetterFactory(scsf);
|
||||
|
||||
shader_src->addShaderConstantSetterFactory(
|
||||
new FogShaderConstantSetterFactory());
|
||||
shader_src->addShaderUniformSetterFactory(
|
||||
new FogShaderUniformSetterFactory());
|
||||
|
||||
ShadowRenderer::preInit(shader_src);
|
||||
|
||||
|
|
|
@ -67,14 +67,14 @@ void FpsControl::limit(IrrlichtDevice *device, f32 *dtime)
|
|||
last_time = time;
|
||||
}
|
||||
|
||||
class FogShaderConstantSetter : public IShaderConstantSetter
|
||||
class FogShaderUniformSetter : public IShaderUniformSetter
|
||||
{
|
||||
CachedPixelShaderSetting<float, 4> m_fog_color{"fogColor"};
|
||||
CachedPixelShaderSetting<float> m_fog_distance{"fogDistance"};
|
||||
CachedPixelShaderSetting<float> m_fog_shading_parameter{"fogShadingParameter"};
|
||||
|
||||
public:
|
||||
void onSetConstants(video::IMaterialRendererServices *services) override
|
||||
void onSetUniforms(video::IMaterialRendererServices *services) override
|
||||
{
|
||||
auto *driver = services->getVideoDriver();
|
||||
assert(driver);
|
||||
|
@ -101,9 +101,9 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
IShaderConstantSetter *FogShaderConstantSetterFactory::create()
|
||||
IShaderUniformSetter *FogShaderUniformSetterFactory::create()
|
||||
{
|
||||
return new FogShaderConstantSetter();
|
||||
return new FogShaderUniformSetter();
|
||||
}
|
||||
|
||||
/* Other helpers */
|
||||
|
|
|
@ -54,11 +54,11 @@ struct FpsControl {
|
|||
};
|
||||
|
||||
// Populates fogColor, fogDistance, fogShadingParameter with values from Irrlicht
|
||||
class FogShaderConstantSetterFactory : public IShaderConstantSetterFactory
|
||||
class FogShaderUniformSetterFactory : public IShaderUniformSetterFactory
|
||||
{
|
||||
public:
|
||||
FogShaderConstantSetterFactory() {};
|
||||
virtual IShaderConstantSetter *create();
|
||||
FogShaderUniformSetterFactory() {};
|
||||
virtual IShaderUniformSetter *create();
|
||||
};
|
||||
|
||||
/* Rendering engine class */
|
||||
|
|
|
@ -159,7 +159,7 @@ private:
|
|||
|
||||
class ShaderCallback : public video::IShaderConstantSetCallBack
|
||||
{
|
||||
std::vector<std::unique_ptr<IShaderConstantSetter>> m_setters;
|
||||
std::vector<std::unique_ptr<IShaderUniformSetter>> m_setters;
|
||||
|
||||
public:
|
||||
template <typename Factories>
|
||||
|
@ -175,7 +175,7 @@ public:
|
|||
virtual void OnSetConstants(video::IMaterialRendererServices *services, s32 userData) override
|
||||
{
|
||||
for (auto &&setter : m_setters)
|
||||
setter->onSetConstants(services);
|
||||
setter->onSetUniforms(services);
|
||||
}
|
||||
|
||||
virtual void OnSetMaterial(const video::SMaterial& material) override
|
||||
|
@ -187,10 +187,10 @@ public:
|
|||
|
||||
|
||||
/*
|
||||
MainShaderConstantSetter: Set basic constants required for almost everything
|
||||
MainShaderUniformSetter: Set basic uniforms required for almost everything
|
||||
*/
|
||||
|
||||
class MainShaderConstantSetter : public IShaderConstantSetter
|
||||
class MainShaderUniformSetter : public IShaderUniformSetter
|
||||
{
|
||||
CachedVertexShaderSetting<f32, 16> m_world_view_proj{"mWorldViewProj"};
|
||||
CachedVertexShaderSetting<f32, 16> m_world{"mWorld"};
|
||||
|
@ -205,14 +205,14 @@ class MainShaderConstantSetter : public IShaderConstantSetter
|
|||
CachedPixelShaderSetting<float, 4> m_material_color_setting{"materialColor"};
|
||||
|
||||
public:
|
||||
~MainShaderConstantSetter() = default;
|
||||
~MainShaderUniformSetter() = default;
|
||||
|
||||
virtual void onSetMaterial(const video::SMaterial& material) override
|
||||
{
|
||||
m_material_color = material.ColorParam;
|
||||
}
|
||||
|
||||
virtual void onSetConstants(video::IMaterialRendererServices *services) override
|
||||
virtual void onSetUniforms(video::IMaterialRendererServices *services) override
|
||||
{
|
||||
video::IVideoDriver *driver = services->getVideoDriver();
|
||||
assert(driver);
|
||||
|
@ -243,11 +243,11 @@ public:
|
|||
};
|
||||
|
||||
|
||||
class MainShaderConstantSetterFactory : public IShaderConstantSetterFactory
|
||||
class MainShaderUniformSetterFactory : public IShaderUniformSetterFactory
|
||||
{
|
||||
public:
|
||||
virtual IShaderConstantSetter* create()
|
||||
{ return new MainShaderConstantSetter(); }
|
||||
virtual IShaderUniformSetter* create()
|
||||
{ return new MainShaderUniformSetter(); }
|
||||
};
|
||||
|
||||
|
||||
|
@ -306,9 +306,9 @@ public:
|
|||
// Shall be called from the main thread.
|
||||
void rebuildShaders() override;
|
||||
|
||||
void addShaderConstantSetterFactory(IShaderConstantSetterFactory *setter) override
|
||||
void addShaderUniformSetterFactory(IShaderUniformSetterFactory *setter) override
|
||||
{
|
||||
m_setter_factories.emplace_back(setter);
|
||||
m_uniform_factories.emplace_back(setter);
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -331,8 +331,8 @@ private:
|
|||
RequestQueue<std::string, u32, u8, u8> m_get_shader_queue;
|
||||
#endif
|
||||
|
||||
// Global constant setter factories
|
||||
std::vector<std::unique_ptr<IShaderConstantSetterFactory>> m_setter_factories;
|
||||
// Global uniform setter factories
|
||||
std::vector<std::unique_ptr<IShaderUniformSetterFactory>> m_uniform_factories;
|
||||
|
||||
// Generate shader given the shader name.
|
||||
ShaderInfo generateShader(const std::string &name,
|
||||
|
@ -352,7 +352,7 @@ ShaderSource::ShaderSource()
|
|||
m_shaderinfo_cache.emplace_back();
|
||||
|
||||
// Add main global constant setter
|
||||
addShaderConstantSetterFactory(new MainShaderConstantSetterFactory());
|
||||
addShaderUniformSetterFactory(new MainShaderUniformSetterFactory());
|
||||
}
|
||||
|
||||
ShaderSource::~ShaderSource()
|
||||
|
@ -773,7 +773,7 @@ ShaderInfo ShaderSource::generateShader(const std::string &name,
|
|||
geometry_shader_ptr = geometry_shader.c_str();
|
||||
}
|
||||
|
||||
auto cb = make_irr<ShaderCallback>(m_setter_factories);
|
||||
auto cb = make_irr<ShaderCallback>(m_uniform_factories);
|
||||
infostream << "Compiling high level shaders for " << log_name << std::endl;
|
||||
s32 shadermat = gpu->addHighLevelShaderMaterial(
|
||||
vertex_shader.c_str(), fragment_shader.c_str(), geometry_shader_ptr,
|
||||
|
|
|
@ -40,7 +40,7 @@ struct ShaderInfo {
|
|||
};
|
||||
|
||||
/*
|
||||
Setter of constants for shaders
|
||||
Abstraction for updating uniforms used by shaders
|
||||
*/
|
||||
|
||||
namespace irr::video {
|
||||
|
@ -48,19 +48,19 @@ namespace irr::video {
|
|||
}
|
||||
|
||||
|
||||
class IShaderConstantSetter {
|
||||
class IShaderUniformSetter {
|
||||
public:
|
||||
virtual ~IShaderConstantSetter() = default;
|
||||
virtual void onSetConstants(video::IMaterialRendererServices *services) = 0;
|
||||
virtual ~IShaderUniformSetter() = default;
|
||||
virtual void onSetUniforms(video::IMaterialRendererServices *services) = 0;
|
||||
virtual void onSetMaterial(const video::SMaterial& material)
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
class IShaderConstantSetterFactory {
|
||||
class IShaderUniformSetterFactory {
|
||||
public:
|
||||
virtual ~IShaderConstantSetterFactory() = default;
|
||||
virtual IShaderConstantSetter* create() = 0;
|
||||
virtual ~IShaderUniformSetterFactory() = default;
|
||||
virtual IShaderUniformSetter* create() = 0;
|
||||
};
|
||||
|
||||
|
||||
|
@ -236,7 +236,7 @@ public:
|
|||
virtual void rebuildShaders()=0;
|
||||
|
||||
/// @note Takes ownership of @p setter.
|
||||
virtual void addShaderConstantSetterFactory(IShaderConstantSetterFactory *setter) = 0;
|
||||
virtual void addShaderUniformSetterFactory(IShaderUniformSetterFactory *setter) = 0;
|
||||
};
|
||||
|
||||
IWritableShaderSource *createShaderSource();
|
||||
|
|
|
@ -107,7 +107,7 @@ void ShadowRenderer::disable()
|
|||
void ShadowRenderer::preInit(IWritableShaderSource *shsrc)
|
||||
{
|
||||
if (g_settings->getBool("enable_dynamic_shadows")) {
|
||||
shsrc->addShaderConstantSetterFactory(new ShadowConstantSetterFactory());
|
||||
shsrc->addShaderUniformSetterFactory(new ShadowUniformSetterFactory());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#include "client/shadows/shadowsshadercallbacks.h"
|
||||
#include "client/renderingengine.h"
|
||||
|
||||
void ShadowConstantSetter::onSetConstants(video::IMaterialRendererServices *services)
|
||||
void ShadowUniformSetter::onSetUniforms(video::IMaterialRendererServices *services)
|
||||
{
|
||||
auto *shadow = RenderingEngine::get_shadow_renderer();
|
||||
if (!shadow)
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
// Used by main game rendering
|
||||
|
||||
class ShadowConstantSetter : public IShaderConstantSetter
|
||||
class ShadowUniformSetter : public IShaderUniformSetter
|
||||
{
|
||||
CachedPixelShaderSetting<f32, 16> m_shadow_view_proj{"m_ShadowViewProj"};
|
||||
CachedPixelShaderSetting<f32, 3> m_light_direction{"v_LightDirection"};
|
||||
|
@ -33,17 +33,17 @@ class ShadowConstantSetter : public IShaderConstantSetter
|
|||
CachedPixelShaderSetting<f32> m_perspective_zbias_pixel{"zPerspectiveBias"};
|
||||
|
||||
public:
|
||||
ShadowConstantSetter() = default;
|
||||
~ShadowConstantSetter() = default;
|
||||
ShadowUniformSetter() = default;
|
||||
~ShadowUniformSetter() = default;
|
||||
|
||||
virtual void onSetConstants(video::IMaterialRendererServices *services) override;
|
||||
virtual void onSetUniforms(video::IMaterialRendererServices *services) override;
|
||||
};
|
||||
|
||||
class ShadowConstantSetterFactory : public IShaderConstantSetterFactory
|
||||
class ShadowUniformSetterFactory : public IShaderUniformSetterFactory
|
||||
{
|
||||
public:
|
||||
virtual IShaderConstantSetter *create() {
|
||||
return new ShadowConstantSetter();
|
||||
virtual IShaderUniformSetter *create() {
|
||||
return new ShadowUniformSetter();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue