diff --git a/examples_tests b/examples_tests index 33dcc0501c..29bbef4973 160000 --- a/examples_tests +++ b/examples_tests @@ -1 +1 @@ -Subproject commit 33dcc0501c5b436d297e571e7347e307ea9a460a +Subproject commit 29bbef4973d4209ef353b396f244c5077054d249 diff --git a/include/nbl/builtin/hlsl/utils/bitfield.hlsl b/include/nbl/builtin/hlsl/utils/bitfield.hlsl new file mode 100644 index 0000000000..39b5cbc064 --- /dev/null +++ b/include/nbl/builtin/hlsl/utils/bitfield.hlsl @@ -0,0 +1,34 @@ +#ifndef _NBL_BUILTIN_HLSL_UTILS_BITFIELD_INCLUDED_ +#define _NBL_BUILTIN_HLSL_UTILS_BITFIELD_INCLUDED_ + +#include +#include + +namespace nbl +{ +namespace hlsl +{ +namespace utils +{ + +template +struct BitField +{ + NBL_CONSTEXPR_STATIC_INLINE uint32_t BitCount = Bits; + + static T get(T rawData) + { + return glsl::bitfieldExtract(rawData, Offset, Bits); + } + + static T set(T rawData, T value) + { + return glsl::bitfieldInsert(rawData, value, Offset, Bits); + } +}; + +} +} +} + +#endif \ No newline at end of file diff --git a/src/nbl/builtin/CMakeLists.txt b/src/nbl/builtin/CMakeLists.txt index 12b4af1bef..df20f6b6b3 100644 --- a/src/nbl/builtin/CMakeLists.txt +++ b/src/nbl/builtin/CMakeLists.txt @@ -405,5 +405,7 @@ LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "hlsl/testing/approx_compare.hlsl") LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "hlsl/testing/orientation_compare.hlsl") LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "hlsl/testing/vector_length_compare.hlsl") LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "hlsl/testing/max_error.hlsl") +#utils +LIST_BUILTIN_RESOURCE(NBL_RESOURCES_TO_EMBED "hlsl/utils/bitfield.hlsl") ADD_CUSTOM_BUILTIN_RESOURCES(nblBuiltinResourceData NBL_RESOURCES_TO_EMBED "${NBL_ROOT_PATH}/include" "nbl/builtin" "nbl::builtin" "${NBL_ROOT_PATH_BINARY}/include" "${NBL_ROOT_PATH_BINARY}/src" "STATIC" "INTERNAL")