libobs: Fix Area shaders missing for RGB output
Area downscale setting currently only works with YUV outputs. This adds the missing DrawAlphaDivide technique.
This commit is contained in:
parent
05888fc3aa
commit
9bdb16aa78
@ -31,9 +31,8 @@ VertInOut VSDefault(VertData vert_in)
|
||||
return vert_out;
|
||||
}
|
||||
|
||||
float4 PSDrawAreaRGBA(FragData frag_in) : TARGET
|
||||
float4 DrawArea(float2 uv)
|
||||
{
|
||||
float2 uv = frag_in.uv;
|
||||
float2 uv_delta = float2(ddx(uv.x), ddy(uv.y));
|
||||
|
||||
// Handle potential OpenGL flip.
|
||||
@ -83,7 +82,20 @@ float4 PSDrawAreaRGBA(FragData frag_in) : TARGET
|
||||
return total_color;
|
||||
}
|
||||
|
||||
float4 PSDrawAreaUpscaleRGBA(FragData frag_in) : TARGET
|
||||
float4 PSDrawAreaRGBA(FragData frag_in) : TARGET
|
||||
{
|
||||
return DrawArea(frag_in.uv);
|
||||
}
|
||||
|
||||
float4 PSDrawAreaRGBADivide(FragData frag_in) : TARGET
|
||||
{
|
||||
float4 rgba = DrawArea(frag_in.uv);
|
||||
float alpha = rgba.a;
|
||||
float multiplier = (alpha > 0.0) ? (1.0 / alpha) : 0.0;
|
||||
return float4(rgba.rgb * multiplier, alpha);
|
||||
}
|
||||
|
||||
float4 PSDrawAreaRGBAUpscale(FragData frag_in) : TARGET
|
||||
{
|
||||
float2 uv = frag_in.uv;
|
||||
float2 uv_delta = float2(ddx(uv.x), ddy(uv.y));
|
||||
@ -121,11 +133,20 @@ technique Draw
|
||||
}
|
||||
}
|
||||
|
||||
technique DrawAlphaDivide
|
||||
{
|
||||
pass
|
||||
{
|
||||
vertex_shader = VSDefault(vert_in);
|
||||
pixel_shader = PSDrawAreaRGBADivide(frag_in);
|
||||
}
|
||||
}
|
||||
|
||||
technique DrawUpscale
|
||||
{
|
||||
pass
|
||||
{
|
||||
vertex_shader = VSDefault(vert_in);
|
||||
pixel_shader = PSDrawAreaUpscaleRGBA(frag_in);
|
||||
pixel_shader = PSDrawAreaRGBAUpscale(frag_in);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user