mac-syphon: Add "Allow Transparency" property
Transparency is now disabled by default, so that alpha values from injected back buffers don't propagate to OBS (e.g. Minecraft doesn't render properly in OBS unless "Allow Transparency" is disabled)
This commit is contained in:
parent
d6b3230dbc
commit
26964634d1
@ -8,3 +8,4 @@ Crop.origin.x="Crop left"
|
||||
Crop.origin.y="Crop top"
|
||||
Crop.size.width="Crop right"
|
||||
Crop.size.height="Crop bottom"
|
||||
AllowTransparency="Allow Transparency"
|
||||
|
@ -17,6 +17,7 @@ struct syphon {
|
||||
uint32_t width, height;
|
||||
bool crop;
|
||||
CGRect crop_rect;
|
||||
bool allow_transparency;
|
||||
|
||||
obs_source_t *source;
|
||||
|
||||
@ -465,6 +466,9 @@ static void *syphon_create_internal(obs_data_t *settings, obs_source_t *source)
|
||||
|
||||
load_crop(s, settings);
|
||||
|
||||
s->allow_transparency = obs_data_get_bool(settings,
|
||||
"allow_transparency");
|
||||
|
||||
return s;
|
||||
|
||||
fail:
|
||||
@ -836,6 +840,9 @@ static inline obs_properties_t *syphon_properties_internal(syphon_t s)
|
||||
OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_STRING);
|
||||
obs_property_set_modified_callback(list, servers_changed);
|
||||
|
||||
obs_properties_add_bool(props, "allow_transparency",
|
||||
obs_module_text("AllowTransparency"));
|
||||
|
||||
obs_property_t *launch = obs_properties_add_button(props,
|
||||
"launch inject", obs_module_text("LaunchSyphonInject"),
|
||||
launch_syphon_inject);
|
||||
@ -954,6 +961,12 @@ static void syphon_video_render(void *data, gs_effect_t *effect)
|
||||
if (!s->tex)
|
||||
return;
|
||||
|
||||
bool disable_blending = !s->allow_transparency;
|
||||
if (disable_blending) {
|
||||
gs_enable_blending(false);
|
||||
gs_enable_color(true, true, true, false);
|
||||
}
|
||||
|
||||
gs_vertexbuffer_flush(s->vertbuffer);
|
||||
gs_load_vertexbuffer(s->vertbuffer);
|
||||
gs_load_indexbuffer(NULL);
|
||||
@ -968,6 +981,11 @@ static void syphon_video_render(void *data, gs_effect_t *effect)
|
||||
|
||||
gs_technique_end_pass(tech);
|
||||
gs_technique_end(tech);
|
||||
|
||||
if (disable_blending) {
|
||||
gs_enable_color(true, true, true, true);
|
||||
gs_enable_blending(true);
|
||||
}
|
||||
}
|
||||
|
||||
static uint32_t syphon_get_width(void *data)
|
||||
@ -1094,6 +1112,9 @@ static inline bool update_syphon(syphon_t s, obs_data_t *settings)
|
||||
|
||||
static void syphon_update_internal(syphon_t s, obs_data_t *settings)
|
||||
{
|
||||
s->allow_transparency = obs_data_get_bool(settings,
|
||||
"allow_transparency");
|
||||
|
||||
load_crop(s, settings);
|
||||
update_inject(s, settings);
|
||||
if (update_syphon(s, settings))
|
||||
|
Loading…
x
Reference in New Issue
Block a user