@@ -451,9 +451,9 @@ void convolve(in uint item_per_thread_count, in uint ch)
451
451
const uvec3 coords = nbl_glsl_ext_FFT_getCoordinates(tid);
452
452
vec2 uv = vec2(bitfieldReverse(coords.xy))/vec2(4294967296.f);
453
453
454
- uv += pc.params .kernel_half_pixel_size;
454
+ uv += pc.data .kernel_half_pixel_size;
455
455
//
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;
457
457
nbl_glsl_ext_FFT_impl_values[t] = nbl_glsl_complex_mul(sourceSpectrum,convSpectrum);
458
458
}
459
459
}
@@ -1126,6 +1126,7 @@ nbl_glsl_complex nbl_glsl_ext_FFT_getPaddedData(ivec3 coordinate, in uint channe
1126
1126
// get the bloom kernel FFT Spectrum
1127
1127
core::smart_refctd_ptr<IGPUImageView> kernelNormalizedSpectrums[colorChannelsFFT];
1128
1128
{
1129
+ // kernel inputs
1129
1130
core::smart_refctd_ptr<IGPUImageView> kerImageView;
1130
1131
{
1131
1132
auto kerGpuImages = driver->getGPUObjectsFromAssets (¶m.kernel , ¶m.kernel + 1u , &assetConverter);
@@ -1148,8 +1149,39 @@ nbl_glsl_complex nbl_glsl_ext_FFT_getPaddedData(ivec3 coordinate, in uint channe
1148
1149
kerImageView = driver->createGPUImageView (std::move (kerImgViewInfo));
1149
1150
}
1150
1151
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
1153
1185
}
1154
1186
1155
1187
uint32_t outImageByteOffset[EII_COUNT];
@@ -1193,11 +1225,11 @@ nbl_glsl_complex nbl_glsl_ext_FFT_getPaddedData(ivec3 coordinate, in uint channe
1193
1225
}
1194
1226
attachWholeBuffer (writes[2 ].info ,histogramBuffer.get ());
1195
1227
attachWholeBuffer (writes[3 ].info ,intensityBuffer.getObject ());
1196
- for (auto j=0u ; j< colorChannelsFFT; j++)
1228
+ for (auto j=0u ; j<colorChannelsFFT; j++)
1197
1229
{
1198
- writes[0 ].info [4 ].desc = core::smart_refctd_ptr (kernelNormalizedSpectrums[j]);
1230
+ writes[4 ].info [j ].desc = core::smart_refctd_ptr (kernelNormalizedSpectrums[j]);
1199
1231
// writes[0].info[4].image.imageLayout = ;
1200
- writes[0 ].info [4 ].image .sampler = nullptr ; // immutable
1232
+ writes[4 ].info [j ].image .sampler = nullptr ; // immutable
1201
1233
}
1202
1234
driver->updateDescriptorSets (SharedDescriptorSetDescCount,writes,0u ,nullptr );
1203
1235
}
0 commit comments