Skip to content

Commit a506180

Browse files
committed
added a create method to pack all the required splatting params
1 parent 9a227eb commit a506180

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

include/nbl/builtin/hlsl/rwmc/SplattingParameters.hlsl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,21 @@ struct SPackedSplattingParameters
3737
// pack as Half2x16
3838
int32_t PackedLog2BaseRootAndBrightSampleLumaBias;
3939

40+
static SPackedSplattingParameters create(float32_t base, float32_t start, uint32_t cascadeCount)
41+
{
42+
const float32_t rcpLog2Base = 1.0f / hlsl::log2(base);
43+
const float32_t baseRootOfStart = hlsl::exp2(hlsl::log2(start) * rcpLog2Base);
44+
const float32_t log2BaseRootOfStart = hlsl::log2(baseRootOfStart);
45+
const float32_t brightSampleLumaBias = (log2BaseRootOfStart + float32_t(cascadeCount - 1u)) / rcpLog2Base;
46+
float32_t2 packLogs = float32_t2(baseRootOfStart, rcpLog2Base);
47+
float32_t2 packPrecomputed = float32_t2(log2BaseRootOfStart, brightSampleLumaBias);
48+
49+
SPackedSplattingParameters retval;
50+
retval.PackedBaseRootAndRcpLog2Base = hlsl::packHalf2x16(packLogs);
51+
retval.PackedLog2BaseRootAndBrightSampleLumaBias = hlsl::packHalf2x16(packPrecomputed);
52+
return retval;
53+
}
54+
4055
SSplattingParameters unpack()
4156
{
4257
SSplattingParameters retval;

0 commit comments

Comments
 (0)