diff --git a/plugins/text-freetype2/obs-convenience.c b/plugins/text-freetype2/obs-convenience.c index 2670e6907..3607a9a81 100644 --- a/plugins/text-freetype2/obs-convenience.c +++ b/plugins/text-freetype2/obs-convenience.c @@ -67,6 +67,11 @@ void draw_uv_vbuffer(gs_vertbuffer_t *vbuf, gs_texture_t *tex, if (vbuf == NULL || tex == NULL) return; + const bool linear_srgb = gs_get_linear_srgb(); + + const bool previous = gs_framebuffer_srgb_enabled(); + gs_enable_framebuffer_srgb(linear_srgb); + gs_vertexbuffer_flush(vbuf); gs_load_vertexbuffer(vbuf); gs_load_indexbuffer(NULL); @@ -75,7 +80,10 @@ void draw_uv_vbuffer(gs_vertbuffer_t *vbuf, gs_texture_t *tex, for (size_t i = 0; i < passes; i++) { if (gs_technique_begin_pass(tech, i)) { - gs_effect_set_texture(image, texture); + if (linear_srgb) + gs_effect_set_texture_srgb(image, texture); + else + gs_effect_set_texture(image, texture); gs_draw(GS_TRIS, 0, num_verts); @@ -84,4 +92,6 @@ void draw_uv_vbuffer(gs_vertbuffer_t *vbuf, gs_texture_t *tex, } gs_technique_end(tech); + + gs_enable_framebuffer_srgb(previous); } diff --git a/plugins/text-freetype2/text-freetype2.c b/plugins/text-freetype2/text-freetype2.c index fec89b94a..573d20291 100644 --- a/plugins/text-freetype2/text-freetype2.c +++ b/plugins/text-freetype2/text-freetype2.c @@ -247,6 +247,8 @@ static void ft2_source_render(void *data, gs_effect_t *effect) if (srcdata->text == NULL || *srcdata->text == 0) return; + const bool previous = gs_set_linear_srgb(true); + gs_reset_blend_state(); if (srcdata->outline_text) draw_outlines(srcdata); @@ -256,6 +258,8 @@ static void ft2_source_render(void *data, gs_effect_t *effect) draw_uv_vbuffer(srcdata->vbuf, srcdata->tex, srcdata->draw_effect, (uint32_t)wcslen(srcdata->text) * 6); + gs_set_linear_srgb(previous); + UNUSED_PARAMETER(effect); }