libobs: Add color spaces to deinterlace shaders

master
jpark37 2022-03-22 22:46:54 -07:00
parent 6fc5566f38
commit c455aaedba
9 changed files with 59 additions and 9 deletions

View File

@ -16,8 +16,11 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "color.effect"
uniform float4x4 ViewProj;
uniform texture2d image;
uniform float multiplier;
uniform texture2d previous_image;
uniform float2 dimensions;
@ -264,7 +267,30 @@ VertData VSDefault(VertData v_in)
return vert_out;
}
#define TECHNIQUE(rgba_ps) \
#define TECHNIQUE(rgba_ps, rgba_ps_multiply, rgba_ps_tonemap, rgba_ps_multiply_tonemap) \
float4 rgba_ps_multiply(VertData v_in) : TARGET \
{ \
float4 rgba = rgba_ps(v_in); \
rgba.rgb *= multiplier; \
return rgba; \
} \
float4 rgba_ps_tonemap(VertData v_in) : TARGET \
{ \
float4 rgba = rgba_ps(v_in); \
rgba.rgb = rec709_to_rec2020(rgba.rgb); \
rgba.rgb = reinhard(rgba.rgb); \
rgba.rgb = rec2020_to_rec709(rgba.rgb); \
return rgba; \
} \
float4 rgba_ps_multiply_tonemap(VertData v_in) : TARGET \
{ \
float4 rgba = rgba_ps(v_in); \
rgba.rgb *= multiplier; \
rgba.rgb = rec709_to_rec2020(rgba.rgb); \
rgba.rgb = reinhard(rgba.rgb); \
rgba.rgb = rec2020_to_rec709(rgba.rgb); \
return rgba; \
} \
technique Draw \
{ \
pass \
@ -272,4 +298,28 @@ technique Draw \
vertex_shader = VSDefault(v_in); \
pixel_shader = rgba_ps(v_in); \
} \
} \
technique DrawMultiply \
{ \
pass \
{ \
vertex_shader = VSDefault(v_in); \
pixel_shader = rgba_ps_multiply(v_in); \
} \
} \
technique DrawTonemap \
{ \
pass \
{ \
vertex_shader = VSDefault(v_in); \
pixel_shader = rgba_ps_tonemap(v_in); \
} \
} \
technique DrawMultiplyTonemap \
{ \
pass \
{ \
vertex_shader = VSDefault(v_in); \
pixel_shader = rgba_ps_multiply_tonemap(v_in); \
} \
}

View File

@ -18,4 +18,4 @@
#include "deinterlace_base.effect"
TECHNIQUE(PSBlendRGBA);
TECHNIQUE(PSBlendRGBA, PSBlendRGBA_multiply, PSBlendRGBA_tonemap, PSBlendRGBA_multiply_tonemap);

View File

@ -18,4 +18,4 @@
#include "deinterlace_base.effect"
TECHNIQUE(PSBlendRGBA_2x);
TECHNIQUE(PSBlendRGBA_2x, PSBlendRGBA_2x_multiply, PSBlendRGBA_2x_tonemap, PSBlendRGBA_2x_multiply_tonemap);

View File

@ -18,4 +18,4 @@
#include "deinterlace_base.effect"
TECHNIQUE(PSDiscardRGBA);
TECHNIQUE(PSDiscardRGBA, PSDiscardRGBA_multiply, PSDiscardRGBA_tonemap, PSDiscardRGBA_multiply_tonemap);

View File

@ -18,4 +18,4 @@
#include "deinterlace_base.effect"
TECHNIQUE(PSDiscardRGBA_2x);
TECHNIQUE(PSDiscardRGBA_2x, PSDiscardRGBA_2x_multiply, PSDiscardRGBA_2x_tonemap, PSDiscardRGBA_2x_multiply_tonemap);

View File

@ -18,4 +18,4 @@
#include "deinterlace_base.effect"
TECHNIQUE(PSLinearRGBA);
TECHNIQUE(PSLinearRGBA, PSLinearRGBA_multiply, PSLinearRGBA_tonemap, PSLinearRGBA_multiply_tonemap);

View File

@ -18,4 +18,4 @@
#include "deinterlace_base.effect"
TECHNIQUE(PSLinearRGBA_2x);
TECHNIQUE(PSLinearRGBA_2x, PSLinearRGBA_2x_multiply, PSLinearRGBA_2x_tonemap, PSLinearRGBA_2x_multiply_tonemap);

View File

@ -18,4 +18,4 @@
#include "deinterlace_base.effect"
TECHNIQUE(PSYadifMode0RGBA);
TECHNIQUE(PSYadifMode0RGBA, PSYadifMode0RGBA_multiply, PSYadifMode0RGBA_tonemap, PSYadifMode0RGBA_multiply_tonemap);

View File

@ -18,4 +18,4 @@
#include "deinterlace_base.effect"
TECHNIQUE(PSYadifMode0RGBA_2x);
TECHNIQUE(PSYadifMode0RGBA_2x, PSYadifMode0RGBA_2x_multiply, PSYadifMode0RGBA_2x_tonemap, PSYadifMode0RGBA_2x_multiply_tonemap);