From 3ac7e4662831ff1e4d07ba769c6851983bbc0c77 Mon Sep 17 00:00:00 2001 From: Michael Fabian 'Xaymar' Dirks Date: Fri, 25 Jan 2019 00:55:40 +0100 Subject: [PATCH] filter-shadow-sdf: Remove shadow_sdf namespace, rename shadow_sdf_instance to shadow_sdf --- source/filter-shadow-sdf.cpp | 98 ++++++++++++------------- source/filter-shadow-sdf.hpp | 138 +++++++++++++++++------------------ 2 files changed, 116 insertions(+), 120 deletions(-) diff --git a/source/filter-shadow-sdf.cpp b/source/filter-shadow-sdf.cpp index fe80d886..801a7842 100644 --- a/source/filter-shadow-sdf.cpp +++ b/source/filter-shadow-sdf.cpp @@ -41,11 +41,11 @@ // Initializer & Finalizer INITIALIZER(filterShadowFactoryInitializer) { - initializerFunctions.push_back([] { filter::shadow_sdf::shadow_sdf_factory::initialize(); }); - finalizerFunctions.push_back([] { filter::shadow_sdf::shadow_sdf_factory::finalize(); }); + initializerFunctions.push_back([] { filter::shadow_sdf_factory::initialize(); }); + finalizerFunctions.push_back([] { filter::shadow_sdf_factory::finalize(); }); } -bool filter::shadow_sdf::shadow_sdf_instance::cb_modified_inside(void*, obs_properties_t* props, obs_property*, +bool filter::shadow_sdf::cb_modified_inside(void*, obs_properties_t* props, obs_property*, obs_data_t* settings) { bool v = obs_data_get_bool(settings, P_INNER); @@ -58,7 +58,7 @@ bool filter::shadow_sdf::shadow_sdf_instance::cb_modified_inside(void*, obs_prop return true; } -bool filter::shadow_sdf::shadow_sdf_instance::cb_modified_outside(void*, obs_properties_t* props, obs_property*, +bool filter::shadow_sdf::cb_modified_outside(void*, obs_properties_t* props, obs_property*, obs_data_t* settings) { bool v = obs_data_get_bool(settings, P_OUTER); @@ -71,7 +71,7 @@ bool filter::shadow_sdf::shadow_sdf_instance::cb_modified_outside(void*, obs_pro return true; } -filter::shadow_sdf::shadow_sdf_instance::shadow_sdf_instance(obs_data_t* settings, obs_source_t* self) +filter::shadow_sdf::shadow_sdf(obs_data_t* settings, obs_source_t* self) : m_self(self), m_source_rendered(false) { this->m_source_rt = std::make_shared(GS_RGBA, GS_ZS_NONE); @@ -86,9 +86,9 @@ filter::shadow_sdf::shadow_sdf_instance::shadow_sdf_instance(obs_data_t* setting this->update(settings); } -filter::shadow_sdf::shadow_sdf_instance::~shadow_sdf_instance() {} +filter::shadow_sdf::~shadow_sdf() {} -obs_properties_t* filter::shadow_sdf::shadow_sdf_instance::get_properties() +obs_properties_t* filter::shadow_sdf::get_properties() { obs_properties_t* props = obs_properties_create(); obs_property_t* p = nullptr; @@ -144,7 +144,7 @@ obs_properties_t* filter::shadow_sdf::shadow_sdf_instance::get_properties() return props; } -void filter::shadow_sdf::shadow_sdf_instance::update(obs_data_t* data) +void filter::shadow_sdf::update(obs_data_t* data) { this->m_inner_shadow = obs_data_get_bool(data, P_INNER); this->m_inner_range_min = float_t(obs_data_get_double(data, P_INNER_RANGE_MINIMUM)); @@ -169,27 +169,27 @@ void filter::shadow_sdf::shadow_sdf_instance::update(obs_data_t* data) | (int32_t(obs_data_get_double(data, P_OUTER_ALPHA) * 2.55) << 24); } -uint32_t filter::shadow_sdf::shadow_sdf_instance::get_width() +uint32_t filter::shadow_sdf::get_width() { return uint32_t(0); } -uint32_t filter::shadow_sdf::shadow_sdf_instance::get_height() +uint32_t filter::shadow_sdf::get_height() { return uint32_t(0); } -void filter::shadow_sdf::shadow_sdf_instance::activate() {} +void filter::shadow_sdf::activate() {} -void filter::shadow_sdf::shadow_sdf_instance::deactivate() {} +void filter::shadow_sdf::deactivate() {} -void filter::shadow_sdf::shadow_sdf_instance::video_tick(float time) +void filter::shadow_sdf::video_tick(float time) { this->m_tick += time; m_source_rendered = false; } -void filter::shadow_sdf::shadow_sdf_instance::video_render(gs_effect_t*) +void filter::shadow_sdf::video_render(gs_effect_t*) { obs_source_t* parent = obs_filter_get_parent(this->m_self); obs_source_t* target = obs_filter_get_target(this->m_self); @@ -239,7 +239,7 @@ void filter::shadow_sdf::shadow_sdf_instance::video_render(gs_effect_t*) } std::shared_ptr sdf_effect = - filter::shadow_sdf::shadow_sdf_factory::get()->get_sdf_generator_effect(); + filter::shadow_sdf_factory::get()->get_sdf_generator_effect(); if (!sdf_effect) { throw std::runtime_error("SDF Effect no loaded"); } @@ -275,7 +275,7 @@ void filter::shadow_sdf::shadow_sdf_instance::video_render(gs_effect_t*) { std::shared_ptr shadow_effect = - filter::shadow_sdf::shadow_sdf_factory::get()->get_sdf_shadow_effect(); + filter::shadow_sdf_factory::get()->get_sdf_shadow_effect(); if (!shadow_effect) { throw std::runtime_error("Shadow Effect no loaded"); } @@ -339,7 +339,7 @@ void filter::shadow_sdf::shadow_sdf_instance::video_render(gs_effect_t*) gs_enable_depth_test(false); } -filter::shadow_sdf::shadow_sdf_factory::shadow_sdf_factory() +filter::shadow_sdf_factory::shadow_sdf_factory() { memset(&source_info, 0, sizeof(obs_source_info)); source_info.id = "obs-stream-effects-filter-shadow-sdf"; @@ -360,9 +360,9 @@ filter::shadow_sdf::shadow_sdf_factory::shadow_sdf_factory() obs_register_source(&source_info); } -filter::shadow_sdf::shadow_sdf_factory::~shadow_sdf_factory() {} +filter::shadow_sdf_factory::~shadow_sdf_factory() {} -void filter::shadow_sdf::shadow_sdf_factory::on_list_fill() +void filter::shadow_sdf_factory::on_list_fill() { { char* file = obs_module_file("effects/sdf-generator.effect"); @@ -384,25 +384,25 @@ void filter::shadow_sdf::shadow_sdf_factory::on_list_fill() } } -void filter::shadow_sdf::shadow_sdf_factory::on_list_empty() +void filter::shadow_sdf_factory::on_list_empty() { sdf_generator_effect.reset(); sdf_shadow_effect.reset(); } -void* filter::shadow_sdf::shadow_sdf_factory::create(obs_data_t* data, obs_source_t* parent) +void* filter::shadow_sdf_factory::create(obs_data_t* data, obs_source_t* parent) { if (get()->sources.empty()) { get()->on_list_fill(); } - filter::shadow_sdf::shadow_sdf_instance* ptr = new filter::shadow_sdf::shadow_sdf_instance(data, parent); + filter::shadow_sdf* ptr = new filter::shadow_sdf(data, parent); get()->sources.push_back(ptr); return ptr; } -void filter::shadow_sdf::shadow_sdf_factory::destroy(void* inptr) +void filter::shadow_sdf_factory::destroy(void* inptr) { - filter::shadow_sdf::shadow_sdf_instance* ptr = reinterpret_cast(inptr); + filter::shadow_sdf* ptr = reinterpret_cast(inptr); get()->sources.remove(ptr); if (get()->sources.empty()) { get()->on_list_empty(); @@ -410,7 +410,7 @@ void filter::shadow_sdf::shadow_sdf_factory::destroy(void* inptr) delete ptr; } -void filter::shadow_sdf::shadow_sdf_factory::get_defaults(obs_data_t* data) +void filter::shadow_sdf_factory::get_defaults(obs_data_t* data) { obs_data_set_bool(data, P_INNER, false); obs_data_set_double(data, P_INNER_RANGE_MINIMUM, 0.0); @@ -429,74 +429,74 @@ void filter::shadow_sdf::shadow_sdf_factory::get_defaults(obs_data_t* data) obs_data_set_double(data, P_OUTER_ALPHA, 100.0); } -obs_properties_t* filter::shadow_sdf::shadow_sdf_factory::get_properties(void* inptr) +obs_properties_t* filter::shadow_sdf_factory::get_properties(void* inptr) { - return reinterpret_cast(inptr)->get_properties(); + return reinterpret_cast(inptr)->get_properties(); } -void filter::shadow_sdf::shadow_sdf_factory::update(void* inptr, obs_data_t* settings) +void filter::shadow_sdf_factory::update(void* inptr, obs_data_t* settings) { - reinterpret_cast(inptr)->update(settings); + reinterpret_cast(inptr)->update(settings); } -const char* filter::shadow_sdf::shadow_sdf_factory::get_name(void*) +const char* filter::shadow_sdf_factory::get_name(void*) { return P_TRANSLATE(SOURCE_NAME); } -uint32_t filter::shadow_sdf::shadow_sdf_factory::get_width(void* inptr) +uint32_t filter::shadow_sdf_factory::get_width(void* inptr) { - return reinterpret_cast(inptr)->get_width(); + return reinterpret_cast(inptr)->get_width(); } -uint32_t filter::shadow_sdf::shadow_sdf_factory::get_height(void* inptr) +uint32_t filter::shadow_sdf_factory::get_height(void* inptr) { - return reinterpret_cast(inptr)->get_height(); + return reinterpret_cast(inptr)->get_height(); } -void filter::shadow_sdf::shadow_sdf_factory::activate(void* inptr) +void filter::shadow_sdf_factory::activate(void* inptr) { - reinterpret_cast(inptr)->activate(); + reinterpret_cast(inptr)->activate(); } -void filter::shadow_sdf::shadow_sdf_factory::deactivate(void* inptr) +void filter::shadow_sdf_factory::deactivate(void* inptr) { - reinterpret_cast(inptr)->deactivate(); + reinterpret_cast(inptr)->deactivate(); } -void filter::shadow_sdf::shadow_sdf_factory::video_tick(void* inptr, float delta) +void filter::shadow_sdf_factory::video_tick(void* inptr, float delta) { - reinterpret_cast(inptr)->video_tick(delta); + reinterpret_cast(inptr)->video_tick(delta); } -void filter::shadow_sdf::shadow_sdf_factory::video_render(void* inptr, gs_effect_t* effect) +void filter::shadow_sdf_factory::video_render(void* inptr, gs_effect_t* effect) { - reinterpret_cast(inptr)->video_render(effect); + reinterpret_cast(inptr)->video_render(effect); } -std::shared_ptr filter::shadow_sdf::shadow_sdf_factory::get_sdf_generator_effect() +std::shared_ptr filter::shadow_sdf_factory::get_sdf_generator_effect() { return sdf_generator_effect; } -std::shared_ptr filter::shadow_sdf::shadow_sdf_factory::get_sdf_shadow_effect() +std::shared_ptr filter::shadow_sdf_factory::get_sdf_shadow_effect() { return sdf_shadow_effect; } -static filter::shadow_sdf::shadow_sdf_factory* factory_instance = nullptr; +static filter::shadow_sdf_factory* factory_instance = nullptr; -void filter::shadow_sdf::shadow_sdf_factory::initialize() +void filter::shadow_sdf_factory::initialize() { - factory_instance = new filter::shadow_sdf::shadow_sdf_factory(); + factory_instance = new filter::shadow_sdf_factory(); } -void filter::shadow_sdf::shadow_sdf_factory::finalize() +void filter::shadow_sdf_factory::finalize() { delete factory_instance; } -filter::shadow_sdf::shadow_sdf_factory* filter::shadow_sdf::shadow_sdf_factory::get() +filter::shadow_sdf_factory* filter::shadow_sdf_factory::get() { return factory_instance; } diff --git a/source/filter-shadow-sdf.hpp b/source/filter-shadow-sdf.hpp index 2ae61967..403ba584 100644 --- a/source/filter-shadow-sdf.hpp +++ b/source/filter-shadow-sdf.hpp @@ -40,99 +40,95 @@ #endif namespace filter { - namespace shadow_sdf { - class shadow_sdf_instance { - obs_source_t* m_self; + class shadow_sdf { + obs_source_t* m_self; - // Input - std::shared_ptr m_source_rt; - std::shared_ptr m_source_texture; - bool m_source_rendered; + // Input + std::shared_ptr m_source_rt; + std::shared_ptr m_source_texture; + bool m_source_rendered; - // Distance Field - std::shared_ptr m_sdf_write, m_sdf_read; - std::shared_ptr m_sdf_texture; + // Distance Field + std::shared_ptr m_sdf_write, m_sdf_read; + std::shared_ptr m_sdf_texture; - float_t m_tick = 0.; + float_t m_tick = 0.; - bool m_inner_shadow; - float_t m_inner_range_min; - float_t m_inner_range_max; - float_t m_inner_offset_x; - float_t m_inner_offset_y; - uint32_t m_inner_color; - bool m_outer_shadow; - float_t m_outer_range_min; - float_t m_outer_range_max; - float_t m_outer_offset_x; - float_t m_outer_offset_y; - uint32_t m_outer_color; + bool m_inner_shadow; + float_t m_inner_range_min; + float_t m_inner_range_max; + float_t m_inner_offset_x; + float_t m_inner_offset_y; + uint32_t m_inner_color; + bool m_outer_shadow; + float_t m_outer_range_min; + float_t m_outer_range_max; + float_t m_outer_offset_x; + float_t m_outer_offset_y; + uint32_t m_outer_color; - static bool cb_modified_inside(void* ptr, obs_properties_t* props, obs_property* prop, - obs_data_t* settings); + static bool cb_modified_inside(void* ptr, obs_properties_t* props, obs_property* prop, obs_data_t* settings); - static bool cb_modified_outside(void* ptr, obs_properties_t* props, obs_property* prop, - obs_data_t* settings); + static bool cb_modified_outside(void* ptr, obs_properties_t* props, obs_property* prop, obs_data_t* settings); - public: - shadow_sdf_instance(obs_data_t* settings, obs_source_t* self); - ~shadow_sdf_instance(); + public: + shadow_sdf(obs_data_t* settings, obs_source_t* self); + ~shadow_sdf(); - obs_properties_t* get_properties(); - void update(obs_data_t*); + obs_properties_t* get_properties(); + void update(obs_data_t*); - uint32_t get_width(); - uint32_t get_height(); + uint32_t get_width(); + uint32_t get_height(); - void activate(); - void deactivate(); + void activate(); + void deactivate(); - void video_tick(float); - void video_render(gs_effect_t*); - }; + void video_tick(float); + void video_render(gs_effect_t*); + }; - class shadow_sdf_factory { - obs_source_info source_info; - std::list sources; + class shadow_sdf_factory { + obs_source_info source_info; + std::list sources; - std::shared_ptr sdf_generator_effect; - std::shared_ptr sdf_shadow_effect; + std::shared_ptr sdf_generator_effect; + std::shared_ptr sdf_shadow_effect; - private: - shadow_sdf_factory(); - ~shadow_sdf_factory(); + private: + shadow_sdf_factory(); + ~shadow_sdf_factory(); - void on_list_fill(); - void on_list_empty(); + void on_list_fill(); + void on_list_empty(); - protected: - static void* create(obs_data_t* settings, obs_source_t* self); - static void destroy(void* source); + protected: + static void* create(obs_data_t* settings, obs_source_t* self); + static void destroy(void* source); - static void get_defaults(obs_data_t* settings); - static obs_properties_t* get_properties(void* source); - static void update(void* source, obs_data_t* settings); + static void get_defaults(obs_data_t* settings); + static obs_properties_t* get_properties(void* source); + static void update(void* source, obs_data_t* settings); - static const char* get_name(void* source); - static uint32_t get_width(void* source); - static uint32_t get_height(void* source); + static const char* get_name(void* source); + static uint32_t get_width(void* source); + static uint32_t get_height(void* source); - static void activate(void* source); - static void deactivate(void* source); + static void activate(void* source); + static void deactivate(void* source); - static void video_tick(void* source, float delta); - static void video_render(void* source, gs_effect_t* effect); + static void video_tick(void* source, float delta); + static void video_render(void* source, gs_effect_t* effect); - public: - std::shared_ptr get_sdf_generator_effect(); - std::shared_ptr get_sdf_shadow_effect(); + public: + std::shared_ptr get_sdf_generator_effect(); + std::shared_ptr get_sdf_shadow_effect(); - public: // Singleton - static void initialize(); - static void finalize(); - static shadow_sdf_factory* get(); - }; - } // namespace shadow_sdf + public: // Singleton + static void initialize(); + static void finalize(); + static shadow_sdf_factory* get(); + }; } // namespace filter #endif