Skip to content

RWMC fix#989

Open
Przemog1 wants to merge 9 commits intohlsl_path_tracer_examplefrom
rwmc_fix2
Open

RWMC fix#989
Przemog1 wants to merge 9 commits intohlsl_path_tracer_examplefrom
rwmc_fix2

Conversation

@Przemog1
Copy link
Contributor

@Przemog1 Przemog1 commented Jan 13, 2026

old PR:
#964

@devshgraphicsprogramming
Copy link
Member

devshgraphicsprogramming commented Feb 15, 2026

Also @Przemog1 you have those to do

In CascadeAccumulator.hlsl

In resolve.hlsl

In ResolveParameters

Comment on lines 74 to 91
const SplattingParameters::scalar_t baseRootOfStart = splattingParameters.baseRootOfStart();
const SplattingParameters::scalar_t rcpLog2Base = splattingParameters.rcpLog2Base();
const SplattingParameters::scalar_t luma = splattingParameters.calcLuma<input_sample_type>(_sample);
const SplattingParameters::scalar_t log2Luma = log2<SplattingParameters::scalar_t>(luma);
const SplattingParameters::scalar_t log2BaseRootOfStart = log2<SplattingParameters::scalar_t>(baseRootOfStart);
const SplattingParameters::scalar_t cascade = log2Luma * rcpLog2Base - log2BaseRootOfStart;
const SplattingParameters::scalar_t lastCascade = cascade_count - 1u;
const SplattingParameters::scalar_t clampedCascade = clamp(cascade, 0, lastCascade);
// c<=0 -> 0, c>=Count-1 -> Count-1
uint32_t lowerCascadeIndex = floor<cascade_layer_scalar_type>(cascade);
uint16_t lowerCascadeIndex = uint16_t(floor<SplattingParameters::scalar_t>(clampedCascade));
// 0 whenever clamped or `cascade` is integer (when `clampedCascade` is integer)
cascade_layer_scalar_type higherCascadeWeight = clampedCascade - floor<cascade_layer_scalar_type>(clampedCascade);
SplattingParameters::scalar_t higherCascadeWeight = clampedCascade - floor<SplattingParameters::scalar_t>(clampedCascade);
// never 0 thanks to magic of `1-fract(x)`
cascade_layer_scalar_type lowerCascadeWeight = cascade_layer_scalar_type(1) - higherCascadeWeight;
SplattingParameters::scalar_t lowerCascadeWeight = SplattingParameters::scalar_t(1) - higherCascadeWeight;

// handle super bright sample case
if (cascade > CascadeCount - 1)
lowerCascadeWeight = exp2(log2Start + log2Base * (CascadeCount - 1) - log2Luma);
if (cascade > lastCascade)
lowerCascadeWeight = exp2((log2BaseRootOfStart + lastCascade) / rcpLog2Base - log2Luma);
Copy link
Member

@devshgraphicsprogramming devshgraphicsprogramming Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need this optimized and better splattingParameters members, like this (log2BaseRootOfStart + lastCascade) / rcpLog2Base is essentially a constant

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

resolved

Comment on lines 51 to 52
retval.Log2BaseRootOfStart = log2<scalar_t>(unpacked[0]);
retval.BrightSampleLumaBias = (retval.Log2BaseRootOfStart + LastCascade) / retval.RcpLog2Base;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, this is what I want STORED by the CPU, doing any part of this on GPU doesn't help

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

basically two more float16 are needed

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

resolved

Comment on lines 33 to 38
int32_t PackedLog2;

scalar_t rcpLog2Base()
{
return unpackedLog2Parameters()[1];
}
// float16_t log2BaseRootOfStart; 2
// float16_t brightSampleLumaBias; 3
// pack as Half2x16
int32_t PackedPrecomputed;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

better names

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

resolved

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments