@@ -69,6 +69,12 @@ HdEmbreeRenderer::SetEnableSceneColors(bool enableSceneColors)
69
69
_enableSceneColors = enableSceneColors;
70
70
}
71
71
72
+ void
73
+ HdEmbreeRenderer::SetRandomNumberSeed (int randomNumberSeed)
74
+ {
75
+ _randomNumberSeed = randomNumberSeed;
76
+ }
77
+
72
78
void
73
79
HdEmbreeRenderer::SetDataWindow (const GfRect2i &dataWindow)
74
80
{
@@ -432,8 +438,8 @@ HdEmbreeRenderer::Render(HdRenderThread *renderThread)
432
438
// Always pass the renderThread to _RenderTiles to allow the first frame
433
439
// to be interrupted.
434
440
WorkParallelForN (numTilesX*numTilesY,
435
- std::bind (&HdEmbreeRenderer::_RenderTiles, this , renderThread,
436
- std::placeholders::_1, std::placeholders::_2));
441
+ std::bind (&HdEmbreeRenderer::_RenderTiles, this ,
442
+ renderThread, i, std::placeholders::_1, std::placeholders::_2));
437
443
438
444
// After the first pass, mark the single-sampled attachments as
439
445
// converged and unmap them. If there are no multisampled attachments,
@@ -472,7 +478,7 @@ HdEmbreeRenderer::Render(HdRenderThread *renderThread)
472
478
}
473
479
474
480
void
475
- HdEmbreeRenderer::_RenderTiles (HdRenderThread *renderThread,
481
+ HdEmbreeRenderer::_RenderTiles (HdRenderThread *renderThread, int sampleNum,
476
482
size_t tileStart, size_t tileEnd)
477
483
{
478
484
const unsigned int minX = _dataWindow.GetMinX ();
@@ -497,8 +503,14 @@ HdEmbreeRenderer::_RenderTiles(HdRenderThread *renderThread,
497
503
498
504
// Initialize the RNG for this tile (each tile creates one as
499
505
// a lazy way to do thread-local RNGs).
500
- size_t seed = std::chrono::system_clock::now ().time_since_epoch ().count ();
506
+ size_t seed;
507
+ if (_randomNumberSeed == -1 ) {
508
+ seed = std::chrono::system_clock::now ().time_since_epoch ().count ();
509
+ } else {
510
+ seed = static_cast <size_t >(_randomNumberSeed);
511
+ }
501
512
seed = TfHash::Combine (seed, tileStart);
513
+ seed = TfHash::Combine (seed, sampleNum);
502
514
std::default_random_engine random (seed);
503
515
504
516
// Create a uniform distribution for jitter calculations.
0 commit comments