From 4dc5b6772f3adae23a1bdd43d5b2adca172f63fd Mon Sep 17 00:00:00 2001 From: Przemog1 Date: Sat, 23 May 2026 17:28:55 +0200 Subject: [PATCH] Implemented bitfield --- examples_tests | 2 +- include/nbl/builtin/hlsl/utils/bitfield.hlsl | 34 ++++++++++++++++++++ src/nbl/builtin/CMakeLists.txt | 2 ++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 include/nbl/builtin/hlsl/utils/bitfield.hlsl diff --git a/examples_tests b/examples_tests index 33dcc0501c..b30f0909a4 160000 --- a/examples_tests +++ b/examples_tests @@ -1 +1 @@ -Subproject commit 33dcc0501c5b436d297e571e7347e307ea9a460a +Subproject commit b30f0909a4a4ffabb807c7629f80062b6de640f1 diff --git a/include/nbl/builtin/hlsl/utils/bitfield.hlsl b/include/nbl/builtin/hlsl/utils/bitfield.hlsl new file mode 100644 index 0000000000..c5390e7339 --- /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 +#include +#include + +namespace nbl +{ +namespace hlsl +{ +namespace utils +{ + +template +struct BitField +{ + 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")