Skip to content

Commit c5d6951

Browse files
committed
glsl-anal, remove unsigned suffixes and correct shaders
1 parent c79f13c commit c5d6951

File tree

3 files changed

+46
-35
lines changed

3 files changed

+46
-35
lines changed

examples_tests/39.DenoiserTonemapper/ShaderCommon.glsl

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// This file is part of the "Nabla Engine".
33
// For conditions of distribution and use, see copyright notice in nabla.h
44

5-
#define COMPUTE_WG_SIZE 256u
5+
#define COMPUTE_WG_SIZE 256
66
layout(local_size_x=COMPUTE_WG_SIZE) in;
77

88
layout(constant_id = 1) const uint EII_COLOR = 0u;
@@ -17,9 +17,9 @@ layout(push_constant, row_major) uniform PushConstants{
1717
#define _NBL_GLSL_EXT_LUMA_METER_PUSH_CONSTANTS_DEFINED_
1818

1919

20-
#define SHARED_CHANNELS 3u
20+
#define SHARED_CHANNELS 3
2121
// the amount of memory needed for luma metering is bigger than interleaving
22-
#define _NBL_GLSL_SCRATCH_SHARED_SIZE_DEFINED_ ((COMPUTE_WG_SIZE+1u)*8u)
22+
#define _NBL_GLSL_SCRATCH_SHARED_SIZE_DEFINED_ ((COMPUTE_WG_SIZE+1)*8)
2323
shared uint repackBuffer[_NBL_GLSL_SCRATCH_SHARED_SIZE_DEFINED_];
2424
#define _NBL_GLSL_SCRATCH_SHARED_DEFINED_ repackBuffer
2525

@@ -29,8 +29,11 @@ shared uint repackBuffer[_NBL_GLSL_SCRATCH_SHARED_SIZE_DEFINED_];
2929
#define _NBL_GLSL_EXT_LUMA_METER_DISPATCH_SIZE_X_DEFINED_ 256
3030
#define _NBL_GLSL_EXT_LUMA_METER_DISPATCH_SIZE_Y_DEFINED_ 1
3131

32-
#define _NBL_GLSL_EXT_LUMA_METER_MIN_LUMA_DEFINED_ floatBitsToInt(1.0/4096.0)
33-
#define _NBL_GLSL_EXT_LUMA_METER_MAX_LUMA_DEFINED_ floatBitsToInt(32768.0)
32+
#define _NBL_GLSL_EXT_LUMA_METER_MIN_LUMA_DEFINED_ 0x39800000
33+
// floatBitsToInt(1.0/4096.0) glslc got a lot more anal since last version
34+
#define _NBL_GLSL_EXT_LUMA_METER_MAX_LUMA_DEFINED_ 0x47000000
35+
// floatBitsToInt(32768.0) glslc got a lot more anal since last version
36+
3437
// its the mean mode
3538
#define _NBL_GLSL_EXT_LUMA_METER_MODE_DEFINED_ 1
3639

@@ -50,6 +53,7 @@ shared uint repackBuffer[_NBL_GLSL_SCRATCH_SHARED_SIZE_DEFINED_];
5053

5154
#define _NBL_GLSL_EXT_LUMA_METER_INVOCATION_COUNT (_NBL_GLSL_EXT_LUMA_METER_DISPATCH_SIZE_X_DEFINED_*_NBL_GLSL_EXT_LUMA_METER_DISPATCH_SIZE_Y_DEFINED_)
5255
#define _NBL_GLSL_EXT_LUMA_METER_BIN_COUNT _NBL_GLSL_EXT_LUMA_METER_INVOCATION_COUNT
56+
#define _NBL_GLSL_WORKGROUP_SIZE_ _NBL_GLSL_EXT_LUMA_METER_BIN_COUNT
5357
#define _NBL_GLSL_EXT_LUMA_METER_BIN_GLOBAL_REPLICATION 4
5458
#ifdef _NBL_GLSL_EXT_LUMA_METER_FIRST_PASS_DEFINED_
5559
#include "nbl/builtin/glsl/ext/LumaMeter/impl.glsl"

examples_tests/39.DenoiserTonemapper/main.cpp

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -114,26 +114,26 @@ int main(int argc, char* argv[])
114114
return error_code;
115115

116116
constexpr auto forcedOptiXFormat = OPTIX_PIXEL_FORMAT_HALF3; // TODO: make more denoisers with formats
117-
E_FORMAT irrFmtRequired = EF_UNKNOWN;
117+
E_FORMAT nblFmtRequired = EF_UNKNOWN;
118118
switch (forcedOptiXFormat)
119119
{
120120
case OPTIX_PIXEL_FORMAT_UCHAR3:
121-
irrFmtRequired = EF_R8G8B8_SRGB;
121+
nblFmtRequired = EF_R8G8B8_SRGB;
122122
break;
123123
case OPTIX_PIXEL_FORMAT_UCHAR4:
124-
irrFmtRequired = EF_R8G8B8A8_SRGB;
124+
nblFmtRequired = EF_R8G8B8A8_SRGB;
125125
break;
126126
case OPTIX_PIXEL_FORMAT_HALF3:
127-
irrFmtRequired = EF_R16G16B16_SFLOAT;
127+
nblFmtRequired = EF_R16G16B16_SFLOAT;
128128
break;
129129
case OPTIX_PIXEL_FORMAT_HALF4:
130-
irrFmtRequired = EF_R16G16B16A16_SFLOAT;
130+
nblFmtRequired = EF_R16G16B16A16_SFLOAT;
131131
break;
132132
case OPTIX_PIXEL_FORMAT_FLOAT3:
133-
irrFmtRequired = EF_R32G32B32_SFLOAT;
133+
nblFmtRequired = EF_R32G32B32_SFLOAT;
134134
break;
135135
case OPTIX_PIXEL_FORMAT_FLOAT4:
136-
irrFmtRequired = EF_R32G32B32A32_SFLOAT;
136+
nblFmtRequired = EF_R32G32B32A32_SFLOAT;
137137
break;
138138
}
139139
constexpr auto forcedOptiXFormatPixelStride = 6u;
@@ -177,7 +177,7 @@ int main(int argc, char* argv[])
177177
auto deinterleaveShader = driver->createGPUShader(core::make_smart_refctd_ptr<ICPUShader>(R"===(
178178
#version 450 core
179179
#extension GL_EXT_shader_16bit_storage : require
180-
#define _IRR_GLSL_EXT_LUMA_METER_FIRST_PASS_DEFINED_
180+
#define _NBL_GLSL_EXT_LUMA_METER_FIRST_PASS_DEFINED_
181181
#include "../ShaderCommon.glsl"
182182
layout(binding = 0, std430) restrict readonly buffer ImageInputBuffer
183183
{
@@ -205,7 +205,7 @@ void main()
205205
bool colorLayer = gl_GlobalInvocationID.z==EII_COLOR;
206206
if (colorLayer)
207207
{
208-
irr_glsl_ext_LumaMeter(colorLayer && gl_GlobalInvocationID.x<pc.data.imageWidth);
208+
nbl_glsl_ext_LumaMeter(colorLayer && gl_GlobalInvocationID.x<pc.data.imageWidth);
209209
barrier(); // no barrier because we were just reading from shared not writing since the last memory barrier
210210
}
211211
repackBuffer[gl_LocalInvocationIndex*SHARED_CHANNELS+0u] = floatBitsToUint(globalPixelData[0u]);
@@ -230,25 +230,25 @@ void main()
230230
#version 450 core
231231
#extension GL_EXT_shader_16bit_storage : require
232232
#include "../ShaderCommon.glsl"
233-
layout(set=_IRR_GLSL_EXT_LUMA_METER_OUTPUT_SET_DEFINED_, binding=_IRR_GLSL_EXT_LUMA_METER_OUTPUT_BINDING_DEFINED_) restrict readonly buffer LumaMeterOutputBuffer
233+
layout(set=_NBL_GLSL_EXT_LUMA_METER_OUTPUT_SET_DEFINED_, binding=_NBL_GLSL_EXT_LUMA_METER_OUTPUT_BINDING_DEFINED_) restrict readonly buffer LumaMeterOutputBuffer
234234
{
235-
irr_glsl_ext_LumaMeter_output_t lumaParams[];
235+
nbl_glsl_ext_LumaMeter_output_t lumaParams[];
236236
};
237237
layout(binding = 3, std430) restrict writeonly buffer IntensityBuffer
238238
{
239239
float intensity[];
240240
};
241241
242-
int irr_glsl_ext_LumaMeter_getCurrentLumaOutputOffset()
242+
int nbl_glsl_ext_LumaMeter_getCurrentLumaOutputOffset()
243243
{
244244
return pc.data.beforeDenoise!=0u ? 0:1;
245245
}
246-
irr_glsl_ext_LumaMeter_output_SPIRV_CROSS_is_dumb_t irr_glsl_ext_ToneMapper_getLumaMeterOutput()
246+
nbl_glsl_ext_LumaMeter_output_SPIRV_CROSS_is_dumb_t nbl_glsl_ext_ToneMapper_getLumaMeterOutput()
247247
{
248-
irr_glsl_ext_LumaMeter_output_SPIRV_CROSS_is_dumb_t retval;
249-
retval = lumaParams[irr_glsl_ext_LumaMeter_getCurrentLumaOutputOffset()].packedHistogram[gl_LocalInvocationIndex];
250-
for (int i=1; i<_IRR_GLSL_EXT_LUMA_METER_BIN_GLOBAL_REPLICATION; i++)
251-
retval += lumaParams[irr_glsl_ext_LumaMeter_getCurrentLumaOutputOffset()].packedHistogram[gl_LocalInvocationIndex+i*_IRR_GLSL_EXT_LUMA_METER_BIN_COUNT];
248+
nbl_glsl_ext_LumaMeter_output_SPIRV_CROSS_is_dumb_t retval;
249+
retval = lumaParams[nbl_glsl_ext_LumaMeter_getCurrentLumaOutputOffset()].packedHistogram[gl_LocalInvocationIndex];
250+
for (int i=1; i<_NBL_GLSL_EXT_LUMA_METER_BIN_GLOBAL_REPLICATION; i++)
251+
retval += lumaParams[nbl_glsl_ext_LumaMeter_getCurrentLumaOutputOffset()].packedHistogram[gl_LocalInvocationIndex+i*_NBL_GLSL_EXT_LUMA_METER_BIN_COUNT];
252252
return retval;
253253
}
254254
void main()
@@ -260,14 +260,14 @@ void main()
260260
float optixIntensity = 1.0;
261261
if (beforeDenoise||autoexposureOn)
262262
{
263-
irr_glsl_ext_LumaMeter_PassInfo_t lumaPassInfo;
263+
nbl_glsl_ext_LumaMeter_PassInfo_t lumaPassInfo;
264264
lumaPassInfo.percentileRange[0] = pc.data.percentileRange[0];
265265
lumaPassInfo.percentileRange[1] = pc.data.percentileRange[1];
266-
float measuredLumaLog2 = irr_glsl_ext_LumaMeter_getMeasuredLumaLog2(irr_glsl_ext_ToneMapper_getLumaMeterOutput(),lumaPassInfo);
266+
float measuredLumaLog2 = nbl_glsl_ext_LumaMeter_getMeasuredLumaLog2(nbl_glsl_ext_ToneMapper_getLumaMeterOutput(),lumaPassInfo);
267267
if (firstInvocation)
268268
{
269269
measuredLumaLog2 += beforeDenoise ? pc.data.denoiserExposureBias:0.0;
270-
optixIntensity = irr_glsl_ext_LumaMeter_getOptiXIntensity(measuredLumaLog2);
270+
optixIntensity = nbl_glsl_ext_LumaMeter_getOptiXIntensity(measuredLumaLog2);
271271
}
272272
}
273273
@@ -278,7 +278,7 @@ void main()
278278
auto secondLumaMeterAndDFFTXShader = driver->createGPUShader(core::make_smart_refctd_ptr<ICPUShader>(R"===(
279279
#version 450 core
280280
#extension GL_EXT_shader_16bit_storage : require
281-
#define _IRR_GLSL_EXT_LUMA_METER_FIRST_PASS_DEFINED_
281+
#define _NBL_GLSL_EXT_LUMA_METER_FIRST_PASS_DEFINED_
282282
#include "../ShaderCommon.glsl"
283283
layout(binding = 0, std430) restrict readonly buffer ImageInputBuffer
284284
{
@@ -291,7 +291,7 @@ void main()
291291
// TODO: Optimize this fetch
292292
globalPixelData = vec3(inBuffer[dataOffset+0u],inBuffer[dataOffset+1u],inBuffer[dataOffset+2u]);
293293
294-
irr_glsl_ext_LumaMeter(gl_GlobalInvocationID.x<pc.data.imageWidth);
294+
nbl_glsl_ext_LumaMeter(gl_GlobalInvocationID.x<pc.data.imageWidth);
295295
barrier();
296296
}
297297
)==="));
@@ -326,24 +326,24 @@ void main()
326326
bool alive = gl_GlobalInvocationID.x<pc.data.imageWidth;
327327
vec3 color = uintBitsToFloat(uvec3(repackBuffer[gl_LocalInvocationIndex*SHARED_CHANNELS+0u],repackBuffer[gl_LocalInvocationIndex*SHARED_CHANNELS+1u],repackBuffer[gl_LocalInvocationIndex*SHARED_CHANNELS+2u]));
328328
329-
color = _IRR_GLSL_EXT_LUMA_METER_XYZ_CONVERSION_MATRIX_DEFINED_*color;
329+
color = _NBL_GLSL_EXT_LUMA_METER_XYZ_CONVERSION_MATRIX_DEFINED_*color;
330330
color *= intensity[pc.data.intensityBufferDWORDOffset]; // *= 0.18/AvgLuma
331331
switch (pc.data.tonemappingOperator)
332332
{
333-
case _IRR_GLSL_EXT_TONE_MAPPER_REINHARD_OPERATOR:
333+
case _NBL_GLSL_EXT_TONE_MAPPER_REINHARD_OPERATOR:
334334
{
335-
irr_glsl_ext_ToneMapper_ReinhardParams_t tonemapParams;
335+
nbl_glsl_ext_ToneMapper_ReinhardParams_t tonemapParams;
336336
tonemapParams.keyAndManualLinearExposure = pc.data.tonemapperParams[0];
337337
tonemapParams.rcpWhite2 = pc.data.tonemapperParams[1];
338-
color = irr_glsl_ext_ToneMapper_Reinhard(tonemapParams,color);
338+
color = nbl_glsl_ext_ToneMapper_Reinhard(tonemapParams,color);
339339
break;
340340
}
341-
case _IRR_GLSL_EXT_TONE_MAPPER_ACES_OPERATOR:
341+
case _NBL_GLSL_EXT_TONE_MAPPER_ACES_OPERATOR:
342342
{
343-
irr_glsl_ext_ToneMapper_ACESParams_t tonemapParams;
343+
nbl_glsl_ext_ToneMapper_ACESParams_t tonemapParams;
344344
tonemapParams.gamma = pc.data.tonemapperParams[0];
345345
tonemapParams.exposure = pc.data.tonemapperParams[1];
346-
color = irr_glsl_ext_ToneMapper_ACES(tonemapParams,color);
346+
color = nbl_glsl_ext_ToneMapper_ACES(tonemapParams,color);
347347
break;
348348
}
349349
default:
@@ -352,7 +352,7 @@ void main()
352352
break;
353353
}
354354
}
355-
color = irr_glsl_XYZtosRGB*color;
355+
color = nbl_glsl_XYZtosRGB*color;
356356
// TODO: compute DFFT of the image in the X-axis
357357
uint dataOffset = pc.data.inImageTexelOffset[EII_COLOR]+gl_GlobalInvocationID.y*pc.data.inImageTexelPitch[EII_COLOR]+gl_GlobalInvocationID.x;
358358
if (alive)

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,13 @@ struct nbl_glsl_ext_LumaMeter_Uniforms_t
5252
#define _NBL_GLSL_EXT_LUMA_METER_SHARED_SIZE_NEEDED_ _NBL_GLSL_WORKGROUP_ARITHMETIC_SHARED_SIZE_NEEDED_
5353
#endif
5454

55+
#if _NBL_GLSL_EXT_LUMA_METER_MAX_LUMA_DEFINED_<0xffffffff
56+
#error "1"
57+
#endif
58+
#if _NBL_GLSL_EXT_LUMA_METER_MIN_LUMA_DEFINED_<0xffffffff
59+
#error "1"
60+
#endif
61+
5562
#if NBL_GLSL_NOT_EQUAL(NBL_GLSL_AND(NBL_GLSL_SUB(_NBL_GLSL_EXT_LUMA_METER_MAX_LUMA_DEFINED_,_NBL_GLSL_EXT_LUMA_METER_MIN_LUMA_DEFINED_),_NBL_GLSL_EXT_LUMA_METER_BIN_COUNT-1),0)
5663
#error "The number of bins must evenly divide the histogram range!"
5764
#endif

0 commit comments

Comments
 (0)