rough outline
This commit is contained in:
+22
-10
@@ -6,17 +6,29 @@ Scene::~Scene() {}
|
||||
|
||||
void Scene::render(int width, int height, int numSamples)
|
||||
{
|
||||
image.clear();
|
||||
accumulator.clear();
|
||||
image.resize(width * height * 3);
|
||||
accumulator.resize(width * height * 3);
|
||||
for (int samp = 0; samp < numSamples; ++samp)
|
||||
{
|
||||
for (int w = 0; w < width; ++w)
|
||||
worker = std::thread(
|
||||
[&]()
|
||||
{
|
||||
for (int h = 0; h < height; ++h)
|
||||
image.clear();
|
||||
accumulator.clear();
|
||||
image.resize(width * height * 3);
|
||||
for (int samp = 0; samp < numSamples; ++samp)
|
||||
{
|
||||
std::function<void()> job = [&]()
|
||||
{
|
||||
std::vector<unsigned char> localAccumulator(width * height * 3);
|
||||
for (int w = 0; w < width; ++w)
|
||||
{
|
||||
for (int h = 0; h < height; ++h)
|
||||
{
|
||||
if (cancel)
|
||||
return;
|
||||
bvh.traceRay();
|
||||
}
|
||||
}
|
||||
// lock image
|
||||
// add result to image
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user