libobs: Fix rendering at end of the filter chain
When the filter chain finally reaches the source and the last filter in the chain is set to not render directly (meaning it has to render to texture), it would not render the source with any effect due to the fact that it expects a filter to be present.
This commit is contained in:
@@ -2058,13 +2058,18 @@ void obs_source_process_filter(obs_source_t *filter, gs_effect_t *effect,
|
||||
GS_ZS_NONE);
|
||||
|
||||
if (gs_texrender_begin(filter->filter_texrender, cx, cy)) {
|
||||
bool custom_draw = (parent_flags & OBS_SOURCE_CUSTOM_DRAW) != 0;
|
||||
bool async = (parent_flags & OBS_SOURCE_ASYNC) != 0;
|
||||
struct vec4 clear_color;
|
||||
|
||||
vec4_zero(&clear_color);
|
||||
gs_clear(GS_CLEAR_COLOR, &clear_color, 0.0f, 0);
|
||||
gs_ortho(0.0f, (float)cx, 0.0f, (float)cy, -100.0f, 100.0f);
|
||||
|
||||
obs_source_video_render(target);
|
||||
if (target == parent && !custom_draw && !async)
|
||||
obs_source_default_render(target, use_matrix);
|
||||
else
|
||||
obs_source_video_render(target);
|
||||
|
||||
gs_texrender_end(filter->filter_texrender);
|
||||
}
|
||||
|
Reference in New Issue
Block a user