Skip to content

Commit 00dfb4c

Browse files
another sanity refactor
1 parent 58f97aa commit 00dfb4c

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed

examples_tests/23.Autoexposure/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ int main()
8181
const auto inputColorSpace = std::make_tuple(inFormat,ECP_SRGB,EOTF_IDENTITY);
8282

8383
using LumaMeterClass = ext::LumaMeter::CLumaMeter;
84-
constexpr auto MeterMode = LumaMeterClass::EMM_GEOM_MEAN;
84+
constexpr auto MeterMode = LumaMeterClass::EMM_MEDIAN;
8585
const float minLuma = 1.f/2048.f;
8686
const float maxLuma = 65536.f;
8787

include/nbl/builtin/glsl/ext/LumaMeter/common.glsl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,9 @@ layout(set=_NBL_GLSL_EXT_LUMA_METER_INPUT_IMAGE_SET_DEFINED_, binding=_NBL_GLSL_
255255
int layerIndex = nbl_glsl_ext_LumaMeter_getCurrentLumaOutputOffset();
256256
#if NBL_GLSL_EQUAL(_NBL_GLSL_EXT_LUMA_METER_MODE_DEFINED_,_NBL_GLSL_EXT_LUMA_METER_MODE_MEDIAN)
257257
uint globalIndex = gl_LocalInvocationIndex;
258-
globalIndex += (gl_WorkGroupID.x&uint(_NBL_GLSL_EXT_LUMA_METER_BIN_GLOBAL_REPLICATION-1))*_NBL_GLSL_EXT_LUMA_METER_BIN_COUNT;
258+
// assert(_NBL_GLSL_EXT_LUMA_METER_BIN_COUNT==_NBL_GLSL_WORKGROUP_SIZE_)
259+
const uint workgroupHash = gl_WorkGroupID.x+gl_WorkGroupID.y*gl_NumWorkGroups.x;
260+
globalIndex += (workgroupHash&uint(_NBL_GLSL_EXT_LUMA_METER_BIN_GLOBAL_REPLICATION-1))*_NBL_GLSL_WORKGROUP_SIZE_;
259261
atomicAdd(outParams[layerIndex].packedHistogram[globalIndex],writeOutVal);
260262
#else
261263
if (gl_LocalInvocationIndex==0u)

include/nbl/builtin/glsl/ext/LumaMeter/impl.glsl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ void nbl_glsl_ext_LumaMeter(in bool wgExecutionMask);
3838

3939
float nbl_glsl_ext_LumaMeter_local_process(in bool wgExecutionMask, in vec3 color)
4040
{
41-
float scaledLogLuma;
41+
float scaledLogLuma = 0.f; // this default kind-of makes sense
4242
// linearize
4343
if (wgExecutionMask)
4444
{
@@ -58,7 +58,7 @@ float nbl_glsl_ext_LumaMeter_local_process(in bool wgExecutionMask, in vec3 colo
5858
int histogramIndex;
5959
if (wgExecutionMask)
6060
{
61-
histogramIndex = int(scaledLogLuma *float(_NBL_GLSL_EXT_LUMA_METER_BIN_COUNT-1u)+0.5);
61+
histogramIndex = int(scaledLogLuma*float(_NBL_GLSL_EXT_LUMA_METER_BIN_COUNT-1u)+0.5);
6262
histogramIndex += int(gl_LocalInvocationIndex&uint(_NBL_GLSL_EXT_LUMA_METER_LOCAL_REPLICATION-1))*_NBL_GLSL_EXT_LUMA_METER_PADDED_BIN_COUNT;
6363
}
6464
// barrier so we "see" the cleared histogram
@@ -76,7 +76,7 @@ float nbl_glsl_ext_LumaMeter_local_process(in bool wgExecutionMask, in vec3 colo
7676
#include "nbl/builtin/glsl/workgroup/arithmetic.glsl"
7777
#endif
7878

79-
nbl_glsl_ext_LumaMeter_WriteOutValue_t nbl_glsl_ext_LumaMeter_workgroup_process(in bool wgExecutionMask, in float scaledLogLuma)
79+
nbl_glsl_ext_LumaMeter_WriteOutValue_t nbl_glsl_ext_LumaMeter_workgroup_process(in float scaledLogLuma)
8080
{
8181
#if _NBL_GLSL_EXT_LUMA_METER_MODE_DEFINED_==_NBL_GLSL_EXT_LUMA_METER_MODE_MEDIAN
8282
// join the histograms across workgroups
@@ -85,7 +85,7 @@ nbl_glsl_ext_LumaMeter_WriteOutValue_t nbl_glsl_ext_LumaMeter_workgroup_process(
8585
writeOutVal += _NBL_GLSL_SCRATCH_SHARED_DEFINED_[gl_LocalInvocationIndex+i*_NBL_GLSL_EXT_LUMA_METER_PADDED_BIN_COUNT];
8686
return writeOutVal;
8787
#elif _NBL_GLSL_EXT_LUMA_METER_MODE_DEFINED_==_NBL_GLSL_EXT_LUMA_METER_MODE_GEOM_MEAN
88-
return nbl_glsl_workgroupAdd(wgExecutionMask ? scaledLogLuma:0.f);
88+
return nbl_glsl_workgroupAdd(scaledLogLuma);
8989
#endif
9090
}
9191

@@ -100,7 +100,7 @@ void nbl_glsl_ext_LumaMeter(in bool wgExecutionMask)
100100
nbl_glsl_ext_LumaMeter_clearFirstPassOutput();
101101

102102
const float scaledLogLuma = nbl_glsl_ext_LumaMeter_local_process(wgExecutionMask,color);
103-
const nbl_glsl_ext_LumaMeter_WriteOutValue_t writeOutVal = nbl_glsl_ext_LumaMeter_workgroup_process(wgExecutionMask,scaledLogLuma);
103+
const nbl_glsl_ext_LumaMeter_WriteOutValue_t writeOutVal = nbl_glsl_ext_LumaMeter_workgroup_process(scaledLogLuma);
104104

105105
nbl_glsl_ext_LumaMeter_setFirstPassOutput(writeOutVal);
106106
}

0 commit comments

Comments
 (0)