obs-studio/libobs/data
James Park aa22b61e3e libobs: Full-screen triangle format conversions
The cache coherency of rasterization for full-screen passes is better
using an oversized triangle that is clipped rather than two triangles.
Traversal order of rasterization is GPU-specific, but will almost
certainly be better using an undivided primitive.

A smaller benefit is that quads along the diagonal are not evaluated
multiple times, but that's minor in comparison.

Redo format shaders to bypass vertex buffer, and input layout. Add
global shader bool "obs_glsl_compile" to make API-specific decisions,
i.e. handle upside-down UVs. gl_ortho is not needed for format
conversion because the vertex shader does not use ViewProj anymore.

This can be applied to more situations, but start small first.

Testbed full screen passes, Intel HD Graphics 530:
RGBA -> UYVX: 467 -> 439 us, ~6% savings
UYVX -> uv: 295 -> 239 us, ~19% savings
2019-06-18 22:29:07 -07:00
..
area.effect libobs: Area-resampling shader optimizations 2019-06-03 23:11:23 -07:00
bicubic_scale.effect libobs: Fix various alpha issues 2019-05-08 20:26:52 -07:00
bilinear_lowres_scale.effect libobs: Improve low-resolution bilinear sampling 2019-05-13 23:54:14 -07:00
default.effect libobs: Remove saturate from RGB -> YUV conversion 2019-05-18 22:10:42 -07:00
default_rect.effect libobs: Remove need for DrawMatrix technique in effects 2016-03-21 21:22:26 -07:00
deinterlace_base.effect libobs: Simplify YUV conversion 2019-04-11 23:00:03 -07:00
deinterlace_blend.effect libobs: Simplify YUV conversion 2019-04-11 23:00:03 -07:00
deinterlace_blend_2x.effect libobs: Simplify YUV conversion 2019-04-11 23:00:03 -07:00
deinterlace_discard.effect libobs: Simplify YUV conversion 2019-04-11 23:00:03 -07:00
deinterlace_discard_2x.effect libobs: Simplify YUV conversion 2019-04-11 23:00:03 -07:00
deinterlace_linear.effect libobs: Simplify YUV conversion 2019-04-11 23:00:03 -07:00
deinterlace_linear_2x.effect libobs: Simplify YUV conversion 2019-04-11 23:00:03 -07:00
deinterlace_yadif.effect libobs: Simplify YUV conversion 2019-04-11 23:00:03 -07:00
deinterlace_yadif_2x.effect libobs: Simplify YUV conversion 2019-04-11 23:00:03 -07:00
format_conversion.effect libobs: Full-screen triangle format conversions 2019-06-18 22:29:07 -07:00
lanczos_scale.effect libobs: Fix various alpha issues 2019-05-08 20:26:52 -07:00
opaque.effect libobs: Add obs_get_opaque_effect function 2015-03-22 19:18:04 -07:00
premultiplied_alpha.effect libobs: Add premultiplied alpha base effect 2016-03-26 21:41:49 -07:00
repeat.effect libobs: Simplify YUV conversion 2019-04-11 23:00:03 -07:00
solid.effect libobs: Add random shader 2017-05-06 11:29:24 -07:00