* Add s2h example
* Add s2h Hello Screen example
* Add gather feature example
* Add Arrow, Coordinate System and Table S2H examples
* Add generate user font s2h example
* Add 2D s2h example
* Add 3D s2h example
* Add clear s2h example
* Add Quad Post s2h example
* Add Use User Font s2h example
* Add Debug Zoom s2h example
* Add Quad VS/PS s2h example
* Add Scatter s2h example
* Update s2h_scatter.hlsl (more readable)
* Add Zoom 2D s2h example
* Update s2h samples order to corespong to GiGi one
Enhance Gather sample to looks more like the original one
* Handle bottom-left fragment origins in S2H shaders
* Fix S2H rendering across OpenGL, Vulkan, and DX12
* Removed the redundant u_s2hScreen uniform
- S2H now derives the top-left pixel coordinate from bgfx’s u_viewRect and OpenGL’s built-in bgfx_ndc.z
- Removed its creation, per-view uploads, and destruction from s2h.cpp
* Update 54-s2h shaders to match bgfx shader style
`float2/3/4` → `vec2/3/4`
`float4x4` → `mat4`
`int2 / uint2` → `ivec2 / uvec2`
VK_FORMAT_BC1_RGB_UNORM_BLOCK has no alpha component, so sampling a BC1
texture on Vulkan always returns a = 1.0 and the 1-bit punch-through
alpha of the source data is silently discarded.
This contradicts bgfx's own definition of the format - bgfx.h documents
TextureFormat::BC1 as "5-bit R, 6-bit G, 5-bit B, 1-bit A" - and it
disagrees with every other backend:
D3D11/D3D12 DXGI_FORMAT_BC1_UNORM
OpenGL GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
all of which decode the punch-through alpha. There is no separate BC1A
format in bgfx, so the RGB variant is not an intentional distinction.
Switching to the RGBA variants costs nothing in terms of support: if
textureCompressionBC is available, the specification requires all of
BC1-BC7 with the same feature set, so VK_FORMAT_BC1_RGBA_UNORM_BLOCK is
available wherever VK_FORMAT_BC1_RGB_UNORM_BLOCK is. Fully opaque BC1
blocks decode identically under both.