mirror of
https://github.com/Xaymar/obs-StreamFX
synced 2024-11-14 07:45:06 +00:00
filter-custom-shader: Update to use new gfx::effect_source::effect_source
This commit is contained in:
parent
bde4e278bf
commit
ff4a556f3f
2 changed files with 24 additions and 4 deletions
|
@ -146,7 +146,12 @@ filter::shader::shader_factory::~shader_factory() {}
|
||||||
|
|
||||||
filter::shader::shader_instance::shader_instance(obs_data_t* data, obs_source_t* self)
|
filter::shader::shader_instance::shader_instance(obs_data_t* data, obs_source_t* self)
|
||||||
: _self(self), _active(true), _width(0), _height(0)
|
: _self(self), _active(true), _width(0), _height(0)
|
||||||
{}
|
{
|
||||||
|
_fx = std::make_shared<gfx::effect_source::effect_source>();
|
||||||
|
_rt = std::make_shared<gs::rendertarget>(GS_RGBA, GS_ZS_NONE);
|
||||||
|
|
||||||
|
update(data);
|
||||||
|
}
|
||||||
|
|
||||||
filter::shader::shader_instance::~shader_instance() {}
|
filter::shader::shader_instance::~shader_instance() {}
|
||||||
|
|
||||||
|
@ -160,9 +165,13 @@ uint32_t filter::shader::shader_instance::height()
|
||||||
return _height;
|
return _height;
|
||||||
}
|
}
|
||||||
|
|
||||||
void filter::shader::shader_instance::properties(obs_properties_t* props) {}
|
void filter::shader::shader_instance::properties(obs_properties_t* props) {
|
||||||
|
_fx->properties(props);
|
||||||
|
}
|
||||||
|
|
||||||
void filter::shader::shader_instance::update(obs_data_t* data) {}
|
void filter::shader::shader_instance::update(obs_data_t* data) {
|
||||||
|
_fx->update(data);
|
||||||
|
}
|
||||||
|
|
||||||
void filter::shader::shader_instance::activate()
|
void filter::shader::shader_instance::activate()
|
||||||
{
|
{
|
||||||
|
@ -182,6 +191,8 @@ void filter::shader::shader_instance::video_tick(float_t sec_since_last)
|
||||||
_width = obs_source_get_base_width(target);
|
_width = obs_source_get_base_width(target);
|
||||||
_height = obs_source_get_base_height(target);
|
_height = obs_source_get_base_height(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_fx->tick(sec_since_last);
|
||||||
}
|
}
|
||||||
|
|
||||||
void filter::shader::shader_instance::video_render(gs_effect_t* effect)
|
void filter::shader::shader_instance::video_render(gs_effect_t* effect)
|
||||||
|
@ -199,5 +210,9 @@ void filter::shader::shader_instance::video_render(gs_effect_t* effect)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
obs_source_skip_video_filter(_self);
|
try {
|
||||||
|
_fx->render();
|
||||||
|
} catch (...) {
|
||||||
|
obs_source_skip_video_filter(_self);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "plugin.hpp"
|
#include "plugin.hpp"
|
||||||
|
#include "gfx/gfx-effect-source.hpp"
|
||||||
|
#include "obs/gs/gs-rendertarget.hpp"
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include <obs.h>
|
#include <obs.h>
|
||||||
|
@ -46,6 +48,9 @@ namespace filter {
|
||||||
|
|
||||||
uint32_t _width, _height;
|
uint32_t _width, _height;
|
||||||
|
|
||||||
|
std::shared_ptr<gs::rendertarget> _rt;
|
||||||
|
std::shared_ptr<gfx::effect_source::effect_source> _fx;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
shader_instance(obs_data_t* data, obs_source_t* self);
|
shader_instance(obs_data_t* data, obs_source_t* self);
|
||||||
~shader_instance();
|
~shader_instance();
|
||||||
|
|
Loading…
Reference in a new issue