mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-01 17:38:41 +00:00
Add API to control shadow intensity from the game/mod (#11944)
* Also Disable shadows when sun/moon is hidden. Fixes #11972.
This commit is contained in:
parent
8d55702d13
commit
0f25fa7af6
24 changed files with 375 additions and 169 deletions
|
@ -82,11 +82,12 @@ public:
|
|||
}
|
||||
|
||||
|
||||
bool is_active() const { return m_shadows_enabled; }
|
||||
bool is_active() const { return m_shadows_enabled && shadowMapTextureFinal != nullptr; }
|
||||
void setTimeOfDay(float isDay) { m_time_day = isDay; };
|
||||
void setShadowIntensity(float shadow_intensity);
|
||||
|
||||
s32 getShadowSamples() const { return m_shadow_samples; }
|
||||
float getShadowStrength() const { return m_shadow_strength; }
|
||||
float getShadowStrength() const { return m_shadows_enabled ? m_shadow_strength : 0.0f; }
|
||||
float getTimeOfDay() const { return m_time_day; }
|
||||
|
||||
private:
|
||||
|
@ -101,6 +102,9 @@ private:
|
|||
void mixShadowsQuad();
|
||||
void updateSMTextures();
|
||||
|
||||
void disable();
|
||||
void enable() { m_shadows_enabled = m_shadows_supported; }
|
||||
|
||||
// a bunch of variables
|
||||
IrrlichtDevice *m_device{nullptr};
|
||||
scene::ISceneManager *m_smgr{nullptr};
|
||||
|
@ -116,12 +120,14 @@ private:
|
|||
std::vector<NodeToApply> m_shadow_node_array;
|
||||
|
||||
float m_shadow_strength;
|
||||
float m_shadow_strength_gamma;
|
||||
float m_shadow_map_max_distance;
|
||||
float m_shadow_map_texture_size;
|
||||
float m_time_day{0.0f};
|
||||
int m_shadow_samples;
|
||||
bool m_shadow_map_texture_32bit;
|
||||
bool m_shadows_enabled;
|
||||
bool m_shadows_supported;
|
||||
bool m_shadow_map_colored;
|
||||
u8 m_map_shadow_update_frames; /* Use this number of frames to update map shaodw */
|
||||
u8 m_current_frame{0}; /* Current frame */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue