diff options
Diffstat (limited to '3rdparty/bgfx/src/bgfx_compute.sh')
-rw-r--r-- | 3rdparty/bgfx/src/bgfx_compute.sh | 43 |
1 files changed, 31 insertions, 12 deletions
diff --git a/3rdparty/bgfx/src/bgfx_compute.sh b/3rdparty/bgfx/src/bgfx_compute.sh index 5ad2959b50d..4bb11dcdcd3 100644 --- a/3rdparty/bgfx/src/bgfx_compute.sh +++ b/3rdparty/bgfx/src/bgfx_compute.sh @@ -16,14 +16,31 @@ float uintBitsToFloat(uint _x) { return asfloat(_x); } vec2 uintBitsToFloat(uint2 _x) { return asfloat(_x); } vec3 uintBitsToFloat(uint3 _x) { return asfloat(_x); } vec4 uintBitsToFloat(uint4 _x) { return asfloat(_x); } -uint floatBitsToUint(float _x) { return asuint(_x); } -uvec2 floatBitsToUint(vec2 _x) { return asuint(_x); } -uvec3 floatBitsToUint(vec3 _x) { return asuint(_x); } -uvec4 floatBitsToUint(vec4 _x) { return asuint(_x); } -int floatBitsToInt(float _x) { return asint(_x); } -ivec2 floatBitsToInt(vec2 _x) { return asint(_x); } -ivec3 floatBitsToInt(vec3 _x) { return asint(_x); } -ivec4 floatBitsToInt(vec4 _x) { return asint(_x); } + +uint floatBitsToUint(float _x) { return asuint(_x); } +uvec2 floatBitsToUint(vec2 _x) { return asuint(_x); } +uvec3 floatBitsToUint(vec3 _x) { return asuint(_x); } +uvec4 floatBitsToUint(vec4 _x) { return asuint(_x); } + +int floatBitsToInt(float _x) { return asint(_x); } +ivec2 floatBitsToInt(vec2 _x) { return asint(_x); } +ivec3 floatBitsToInt(vec3 _x) { return asint(_x); } +ivec4 floatBitsToInt(vec4 _x) { return asint(_x); } + +uint bitfieldReverse(uint _x) { return reversebits(_x); } +uint2 bitfieldReverse(uint2 _x) { return reversebits(_x); } +uint3 bitfieldReverse(uint3 _x) { return reversebits(_x); } +uint4 bitfieldReverse(uint4 _x) { return reversebits(_x); } + +uint packHalf2x16(vec2 _x) +{ + return (f32tof16(_x.x)<<16) | f32tof16(_x.y); +} + +vec2 unpackHalf2x16(uint _x) +{ + return vec2(f16tof32(_x >> 16), f16tof32(_x) ); +} #define SHARED groupshared @@ -42,14 +59,16 @@ vec4 imageLoad(Texture2D _image, ivec2 _uv) return _image.Load(uint3(_uv.xy, 0) ); } -uint imageLoad(Texture2D<uint> _image, ivec2 _uv) +uint4 imageLoad(Texture2D<uint> _image, ivec2 _uv) { - return _image.Load(uint3(_uv.xy, 0) ); + uint rr = _image.Load(uint3(_uv.xy, 0) ); + return uint4(rr, rr, rr, rr); } -uint imageLoad(RWTexture2D<uint> _image, ivec2 _uv) +uint4 imageLoad(RWTexture2D<uint> _image, ivec2 _uv) { - return _image[_uv.xy]; + uint rr = _image[_uv.xy]; + return uint4(rr, rr, rr, rr); } ivec2 imageSize(Texture2D _image) |