// Luanti // SPDX-License-Identifier: LGPL-2.1-or-later // Copyright (C) 2021 Liso #pragma once #include #include #include "client/shader.h" // Used by main game rendering class ShadowConstantSetter : public IShaderConstantSetter { CachedPixelShaderSetting m_shadow_view_proj{"m_ShadowViewProj"}; CachedPixelShaderSetting m_light_direction{"v_LightDirection"}; CachedPixelShaderSetting m_texture_res{"f_textureresolution"}; CachedPixelShaderSetting m_shadow_strength{"f_shadow_strength"}; CachedPixelShaderSetting m_shadow_tint{ "shadow_tint" }; CachedPixelShaderSetting m_time_of_day{"f_timeofday"}; CachedPixelShaderSetting m_shadowfar{"f_shadowfar"}; CachedPixelShaderSetting m_camera_pos{"CameraPos"}; CachedPixelShaderSetting m_shadow_texture{"ShadowMapSampler"}; CachedVertexShaderSetting m_perspective_bias0_vertex{"xyPerspectiveBias0"}; CachedPixelShaderSetting m_perspective_bias0_pixel{"xyPerspectiveBias0"}; CachedVertexShaderSetting m_perspective_bias1_vertex{"xyPerspectiveBias1"}; CachedPixelShaderSetting m_perspective_bias1_pixel{"xyPerspectiveBias1"}; CachedVertexShaderSetting m_perspective_zbias_vertex{"zPerspectiveBias"}; CachedPixelShaderSetting m_perspective_zbias_pixel{"zPerspectiveBias"}; public: ShadowConstantSetter() = default; ~ShadowConstantSetter() = default; virtual void onSetConstants(video::IMaterialRendererServices *services) override; }; class ShadowConstantSetterFactory : public IShaderConstantSetterFactory { public: virtual IShaderConstantSetter *create() { return new ShadowConstantSetter(); } }; // Used by depth shader class ShadowDepthShaderCB : public video::IShaderConstantSetCallBack { public: void OnSetMaterial(const video::SMaterial &material) override {} void OnSetConstants(video::IMaterialRendererServices *services, s32 userData) override; f32 MaxFar{2048.0f}, MapRes{1024.0f}; f32 PerspectiveBiasXY {0.9f}, PerspectiveBiasZ {0.5f}; v3f CameraPos; private: CachedVertexShaderSetting m_light_mvp_setting{"LightMVP"}; CachedVertexShaderSetting m_map_resolution_setting{"MapResolution"}; CachedVertexShaderSetting m_max_far_setting{"MaxFar"}; CachedPixelShaderSetting m_color_map_sampler_setting{"ColorMapSampler"}; CachedVertexShaderSetting m_perspective_bias0{"xyPerspectiveBias0"}; CachedVertexShaderSetting m_perspective_bias1{"xyPerspectiveBias1"}; CachedVertexShaderSetting m_perspective_zbias{"zPerspectiveBias"}; CachedVertexShaderSetting m_cam_pos_setting{"CameraPos"}; };