Преглед изворни кода

libobs: Fix color space auto-convert blending

Need premultiplied alpha for this, not straight alpha.
jpark37 пре 3 година
родитељ
комит
74daf5cbaf
1 измењених фајлова са 5 додато и 0 уклоњено
  1. 5 0
      libobs/obs-source.c

+ 5 - 0
libobs/obs-source.c

@@ -2615,6 +2615,9 @@ static void source_render(obs_source_t *source, gs_effect_t *effect)
 							    "multiplier"),
 							    "multiplier"),
 				multiplier);
 				multiplier);
 
 
+			gs_blend_state_push();
+			gs_blend_function(GS_BLEND_ONE, GS_BLEND_INVSRCALPHA);
+
 			const size_t passes = gs_technique_begin(tech);
 			const size_t passes = gs_technique_begin(tech);
 			for (size_t i = 0; i < passes; i++) {
 			for (size_t i = 0; i < passes; i++) {
 				gs_technique_begin_pass(tech, i);
 				gs_technique_begin_pass(tech, i);
@@ -2623,6 +2626,8 @@ static void source_render(obs_source_t *source, gs_effect_t *effect)
 			}
 			}
 			gs_technique_end(tech);
 			gs_technique_end(tech);
 
 
+			gs_blend_state_pop();
+
 			gs_enable_framebuffer_srgb(previous);
 			gs_enable_framebuffer_srgb(previous);
 		}
 		}
 	} else {
 	} else {