1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-10 07:54:38 +01:00
dxvk/src/d3d9/shaders/d3d9_convert_l6v5u5.comp

43 lines
928 B
Plaintext

#version 450
#extension GL_GOOGLE_include_directive : enable
#include "d3d9_convert_common.h"
layout(
local_size_x = 8,
local_size_y = 8,
local_size_z = 1) in;
layout(binding = 0)
writeonly uniform image2D dst;
layout(binding = 1) uniform usamplerBuffer src;
layout(push_constant)
uniform u_info_t {
uvec2 extent;
} u_info;
void main() {
ivec3 thread_id = ivec3(gl_GlobalInvocationID);
if (all(lessThan(thread_id.xy, u_info.extent))) {
uint offset = thread_id.x
+ thread_id.y * u_info.extent.x;
uint value = texelFetch(src, int(offset)).r;
// Sign-extend magic!
int u5 = bitfieldExtract(int (value), 0, 5);
int v5 = bitfieldExtract(int (value), 5, 5);
uint l6 = bitfieldExtract(uint(value), 10, 6);
vec4 color = vec4(
snormalize(u5, 5),
snormalize(v5, 5),
unormalize(l6, 6),
1.0f);
imageStore(dst, thread_id.xy, color);
}
}