Skip to content

Commit 113b141

Browse files
fix a few bugs and testrun
1 parent dad401f commit 113b141

File tree

1 file changed

+39
-7
lines changed
  • examples_tests/39.DenoiserTonemapper

1 file changed

+39
-7
lines changed

examples_tests/39.DenoiserTonemapper/main.cpp

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -451,9 +451,9 @@ void convolve(in uint item_per_thread_count, in uint ch)
451451
const uvec3 coords = nbl_glsl_ext_FFT_getCoordinates(tid);
452452
vec2 uv = vec2(bitfieldReverse(coords.xy))/vec2(4294967296.f);
453453
454-
uv += pc.params.kernel_half_pixel_size;
454+
uv += pc.data.kernel_half_pixel_size;
455455
//
456-
nbl_glsl_complex convSpectrum = textureLod(NormalizedKernel[ch],uv,0).xy;
456+
nbl_glsl_complex convSpectrum = vec2(1.0,0.0);//textureLod(NormalizedKernel[ch],uv,0).xy;
457457
nbl_glsl_ext_FFT_impl_values[t] = nbl_glsl_complex_mul(sourceSpectrum,convSpectrum);
458458
}
459459
}
@@ -1126,6 +1126,7 @@ nbl_glsl_complex nbl_glsl_ext_FFT_getPaddedData(ivec3 coordinate, in uint channe
11261126
// get the bloom kernel FFT Spectrum
11271127
core::smart_refctd_ptr<IGPUImageView> kernelNormalizedSpectrums[colorChannelsFFT];
11281128
{
1129+
// kernel inputs
11291130
core::smart_refctd_ptr<IGPUImageView> kerImageView;
11301131
{
11311132
auto kerGpuImages = driver->getGPUObjectsFromAssets(&param.kernel, &param.kernel + 1u, &assetConverter);
@@ -1148,8 +1149,39 @@ nbl_glsl_complex nbl_glsl_ext_FFT_getPaddedData(ivec3 coordinate, in uint channe
11481149
kerImageView = driver->createGPUImageView(std::move(kerImgViewInfo));
11491150
}
11501151

1151-
// TODO: the FFTs
1152-
kernelNormalizedSpectrums[] = ;
1152+
// kernel outputs
1153+
const auto kerDim = kerImageView->getCreationParameters().image->getCreationParameters().extent;
1154+
const VkExtent3D paddedKerDim = FFTClass::padDimensions(kerImageView->getCreationParameters().image->getCreationParameters().extent);
1155+
for (uint32_t i=0u; i<colorChannelsFFT; i++)
1156+
{
1157+
video::IGPUImage::SCreationParams imageParams;
1158+
imageParams.flags = static_cast<asset::IImage::E_CREATE_FLAGS>(0u);
1159+
imageParams.type = asset::IImage::ET_2D;
1160+
imageParams.format = EF_R32G32_SFLOAT;
1161+
imageParams.extent = { paddedKerDim.width,paddedKerDim.height,1u};
1162+
imageParams.mipLevels = 1u;
1163+
imageParams.arrayLayers = 1u;
1164+
imageParams.samples = asset::IImage::ESCF_1_BIT;
1165+
1166+
video::IGPUImageView::SCreationParams viewParams;
1167+
viewParams.flags = static_cast<video::IGPUImageView::E_CREATE_FLAGS>(0u);
1168+
viewParams.image = driver->createGPUImageOnDedMem(std::move(imageParams),driver->getDeviceLocalGPUMemoryReqs());
1169+
viewParams.viewType = video::IGPUImageView::ET_2D;
1170+
viewParams.format = EF_R32G32_SFLOAT;
1171+
viewParams.components = {};
1172+
viewParams.subresourceRange = {};
1173+
viewParams.subresourceRange.levelCount = 1u;
1174+
viewParams.subresourceRange.layerCount = 1u;
1175+
kernelNormalizedSpectrums[i] = driver->createGPUImageView(std::move(viewParams));
1176+
}
1177+
1178+
//
1179+
FFTClass::Parameters_t fftPushConstants[2];
1180+
FFTClass::DispatchInfo_t fftDispatchInfo[2];
1181+
const ISampler::E_TEXTURE_CLAMP fftPadding[2] = { ISampler::ETC_CLAMP_TO_BORDER,ISampler::ETC_CLAMP_TO_BORDER };
1182+
const auto passes = FFTClass::buildParameters(false,colorChannelsFFT, kerDim, fftPushConstants, fftDispatchInfo, fftPadding);
1183+
1184+
// the kernel's FFTs
11531185
}
11541186

11551187
uint32_t outImageByteOffset[EII_COUNT];
@@ -1193,11 +1225,11 @@ nbl_glsl_complex nbl_glsl_ext_FFT_getPaddedData(ivec3 coordinate, in uint channe
11931225
}
11941226
attachWholeBuffer(writes[2].info,histogramBuffer.get());
11951227
attachWholeBuffer(writes[3].info,intensityBuffer.getObject());
1196-
for (auto j=0u; j< colorChannelsFFT; j++)
1228+
for (auto j=0u; j<colorChannelsFFT; j++)
11971229
{
1198-
writes[0].info[4].desc = core::smart_refctd_ptr(kernelNormalizedSpectrums[j]);
1230+
writes[4].info[j].desc = core::smart_refctd_ptr(kernelNormalizedSpectrums[j]);
11991231
//writes[0].info[4].image.imageLayout = ;
1200-
writes[0].info[4].image.sampler = nullptr; //immutable
1232+
writes[4].info[j].image.sampler = nullptr; //immutable
12011233
}
12021234
driver->updateDescriptorSets(SharedDescriptorSetDescCount,writes,0u,nullptr);
12031235
}

0 commit comments

Comments
 (0)