Merge pull request #2057 from jpark37/area-downscale-rgb

libobs: Fix Area shaders missing for RGB output
This commit is contained in:
Jim 2019-08-31 21:16:58 -07:00 committed by GitHub
commit 9a5cb0ae36
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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);
}
}