libobs: Add color spaces to deinterlace shaders
parent
6fc5566f38
commit
c455aaedba
|
@ -16,8 +16,11 @@
|
||||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "color.effect"
|
||||||
|
|
||||||
uniform float4x4 ViewProj;
|
uniform float4x4 ViewProj;
|
||||||
uniform texture2d image;
|
uniform texture2d image;
|
||||||
|
uniform float multiplier;
|
||||||
|
|
||||||
uniform texture2d previous_image;
|
uniform texture2d previous_image;
|
||||||
uniform float2 dimensions;
|
uniform float2 dimensions;
|
||||||
|
@ -264,7 +267,30 @@ VertData VSDefault(VertData v_in)
|
||||||
return vert_out;
|
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 \
|
technique Draw \
|
||||||
{ \
|
{ \
|
||||||
pass \
|
pass \
|
||||||
|
@ -272,4 +298,28 @@ technique Draw \
|
||||||
vertex_shader = VSDefault(v_in); \
|
vertex_shader = VSDefault(v_in); \
|
||||||
pixel_shader = rgba_ps(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); \
|
||||||
|
} \
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,4 +18,4 @@
|
||||||
|
|
||||||
#include "deinterlace_base.effect"
|
#include "deinterlace_base.effect"
|
||||||
|
|
||||||
TECHNIQUE(PSBlendRGBA);
|
TECHNIQUE(PSBlendRGBA, PSBlendRGBA_multiply, PSBlendRGBA_tonemap, PSBlendRGBA_multiply_tonemap);
|
||||||
|
|
|
@ -18,4 +18,4 @@
|
||||||
|
|
||||||
#include "deinterlace_base.effect"
|
#include "deinterlace_base.effect"
|
||||||
|
|
||||||
TECHNIQUE(PSBlendRGBA_2x);
|
TECHNIQUE(PSBlendRGBA_2x, PSBlendRGBA_2x_multiply, PSBlendRGBA_2x_tonemap, PSBlendRGBA_2x_multiply_tonemap);
|
||||||
|
|
|
@ -18,4 +18,4 @@
|
||||||
|
|
||||||
#include "deinterlace_base.effect"
|
#include "deinterlace_base.effect"
|
||||||
|
|
||||||
TECHNIQUE(PSDiscardRGBA);
|
TECHNIQUE(PSDiscardRGBA, PSDiscardRGBA_multiply, PSDiscardRGBA_tonemap, PSDiscardRGBA_multiply_tonemap);
|
||||||
|
|
|
@ -18,4 +18,4 @@
|
||||||
|
|
||||||
#include "deinterlace_base.effect"
|
#include "deinterlace_base.effect"
|
||||||
|
|
||||||
TECHNIQUE(PSDiscardRGBA_2x);
|
TECHNIQUE(PSDiscardRGBA_2x, PSDiscardRGBA_2x_multiply, PSDiscardRGBA_2x_tonemap, PSDiscardRGBA_2x_multiply_tonemap);
|
||||||
|
|
|
@ -18,4 +18,4 @@
|
||||||
|
|
||||||
#include "deinterlace_base.effect"
|
#include "deinterlace_base.effect"
|
||||||
|
|
||||||
TECHNIQUE(PSLinearRGBA);
|
TECHNIQUE(PSLinearRGBA, PSLinearRGBA_multiply, PSLinearRGBA_tonemap, PSLinearRGBA_multiply_tonemap);
|
||||||
|
|
|
@ -18,4 +18,4 @@
|
||||||
|
|
||||||
#include "deinterlace_base.effect"
|
#include "deinterlace_base.effect"
|
||||||
|
|
||||||
TECHNIQUE(PSLinearRGBA_2x);
|
TECHNIQUE(PSLinearRGBA_2x, PSLinearRGBA_2x_multiply, PSLinearRGBA_2x_tonemap, PSLinearRGBA_2x_multiply_tonemap);
|
||||||
|
|
|
@ -18,4 +18,4 @@
|
||||||
|
|
||||||
#include "deinterlace_base.effect"
|
#include "deinterlace_base.effect"
|
||||||
|
|
||||||
TECHNIQUE(PSYadifMode0RGBA);
|
TECHNIQUE(PSYadifMode0RGBA, PSYadifMode0RGBA_multiply, PSYadifMode0RGBA_tonemap, PSYadifMode0RGBA_multiply_tonemap);
|
||||||
|
|
|
@ -18,4 +18,4 @@
|
||||||
|
|
||||||
#include "deinterlace_base.effect"
|
#include "deinterlace_base.effect"
|
||||||
|
|
||||||
TECHNIQUE(PSYadifMode0RGBA_2x);
|
TECHNIQUE(PSYadifMode0RGBA_2x, PSYadifMode0RGBA_2x_multiply, PSYadifMode0RGBA_2x_tonemap, PSYadifMode0RGBA_2x_multiply_tonemap);
|
||||||
|
|
Loading…
Reference in New Issue