Add copy dependency for some incompatible texture formats (#4380)
* Add copy dependency for some incompatible texture formats * Simplify compatibility check
This commit is contained in:
parent
1f1e2a7f03
commit
c3a5716a95
9 changed files with 814 additions and 47 deletions
|
@ -0,0 +1,31 @@
|
|||
#version 450 core
|
||||
|
||||
layout (std140, binding = 0) uniform ratio_in
|
||||
{
|
||||
int ratio;
|
||||
};
|
||||
|
||||
layout (set = 2, binding = 0) uniform usampler2D src;
|
||||
layout (set = 3, binding = 0) writeonly uniform uimage2D dst;
|
||||
|
||||
layout (local_size_x = 32, local_size_y = 32, local_size_z = 1) in;
|
||||
|
||||
void main()
|
||||
{
|
||||
uvec2 coords = gl_GlobalInvocationID.xy;
|
||||
ivec2 imageSz = imageSize(dst);
|
||||
|
||||
if (int(coords.x) >= imageSz.x || int(coords.y) >= imageSz.y)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
uvec2 srcCoords = uvec2(coords.x << ratio, coords.y);
|
||||
|
||||
uint r = texelFetchOffset(src, ivec2(srcCoords), 0, ivec2(0, 0)).r;
|
||||
uint g = texelFetchOffset(src, ivec2(srcCoords), 0, ivec2(1, 0)).r;
|
||||
uint b = texelFetchOffset(src, ivec2(srcCoords), 0, ivec2(2, 0)).r;
|
||||
uint a = texelFetchOffset(src, ivec2(srcCoords), 0, ivec2(3, 0)).r;
|
||||
|
||||
imageStore(dst, ivec2(coords), uvec4(r, g, b, a));
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue