// DirectLightingIntegrator Method Definitions void DirectLightingIntegrator::Preprocess(const Scene &scene, Sampler &sampler) { if (strategy == LightStrategy::UniformSampleAll) { // Compute number of samples to use for each light for (const auto &light : scene.lights) nLightSamples.push_back(sampler.RoundCount(light->nSamples)); // Request samples for sampling all lights for (int i = 0; i < maxDepth; ++i) { for (size_t j = 0; j < scene.lights.size(); ++j) { sampler.Request2DArray(nLightSamples[j]); sampler.Request2DArray(nLightSamples[j]); } } } }