Skip to content

Commit 6f74af2

Browse files
committed
box_sampler: simplify ETC_MIRROR
Signed-off-by: Ali Cheraghi <alichraghi@proton.me>
1 parent b65dc7f commit 6f74af2

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

include/nbl/builtin/hlsl/prefix_sum_blur/box_sampler.hlsl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ struct BoxSampler
3333
const int32_t leftFlIdx = (int32_t)floor(leftIdx);
3434
const int32_t leftClIdx = (int32_t)ceil(leftIdx);
3535

36-
assert(linearSize > 1 && radius >= 0);
36+
assert(linearSize > 1 && radius >= bit_cast<float32_t>(numeric_limits<float32_t>::min));
3737
assert(borderColor >= 0 && borderColor <= 1);
3838

3939
T result = 0;
@@ -146,26 +146,26 @@ struct BoxSampler
146146
const T last = prefixSumAccessor.template get<T, uint32_t>(lastIdx);
147147
T floored, ceiled;
148148

149-
if (abs(leftFlIdx) % (2 * linearSize) == 0)
150-
floored = -(abs(leftFlIdx) / linearSize) * last;
149+
if (leftFlIdx % (2 * linearSize) == 0)
150+
floored = (T(leftFlIdx) / linearSize) * last;
151151
else
152152
{
153-
const uint32_t period = uint32_t(ceil(float32_t(abs(leftFlIdx)) / linearSize));
153+
const uint32_t period = uint32_t(ceil(float32_t(-leftFlIdx) / linearSize));
154154
if ((period & 0x1u) == 1)
155-
floored = -(period - 1) * last - prefixSumAccessor.template get<T, uint32_t>((abs(leftFlIdx) - 1) % linearSize);
155+
floored = -(period - 1) * last - prefixSumAccessor.template get<T, uint32_t>(-(leftFlIdx + 1) % linearSize);
156156
else
157157
floored = -(period - 1) * last - (last - prefixSumAccessor.template get<T, uint32_t>(leftFlIdx % linearSize - 1));
158158
}
159159

160160
if (leftClIdx == 0) // Special case, wouldn't be possible for `floored` above
161161
ceiled = 0;
162-
else if (abs(leftClIdx) % (2 * linearSize) == 0)
163-
ceiled = -(abs(leftClIdx) / linearSize) * last;
162+
else if (leftClIdx % (2 * linearSize) == 0)
163+
ceiled = (T(leftClIdx) / linearSize) * last;
164164
else
165165
{
166-
const uint32_t period = uint32_t(ceil(float32_t(abs(leftClIdx)) / linearSize));
166+
const uint32_t period = uint32_t(ceil(float32_t(-leftClIdx) / linearSize));
167167
if ((period & 0x1u) == 1)
168-
ceiled = -(period - 1) * last - prefixSumAccessor.template get<T, uint32_t>((abs(leftClIdx) - 1) % linearSize);
168+
ceiled = -(period - 1) * last - prefixSumAccessor.template get<T, uint32_t>(-(leftClIdx + 1) % linearSize);
169169
else
170170
ceiled = -(period - 1) * last - (last - prefixSumAccessor.template get<T, uint32_t>(leftClIdx % linearSize - 1));
171171
}
@@ -183,7 +183,7 @@ struct BoxSampler
183183
}
184184
}
185185

186-
return result / (2 * radius + 1);
186+
return result / (2.f * radius + 1.f);
187187
}
188188
};
189189

0 commit comments

Comments
 (0)