Skip to content

Commit

Permalink
[hdEmbree] fix for random number generation
Browse files Browse the repository at this point in the history
use of std::bind was copying the underlying random number generator before
use, resulting in the exact same sequence getting reused for, ie, every
AO calculation within a given tile-group
  • Loading branch information
pmolodo committed Aug 7, 2024
1 parent 30392d9 commit 67fc43f
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions pxr/imaging/plugin/hdEmbree/renderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ HdEmbreeRenderer::_RenderTiles(HdRenderThread *renderThread,

// Create a uniform distribution for jitter calculations.
std::uniform_real_distribution<float> uniform_dist(0.0f, 1.0f);
std::function<float()> uniform_float = std::bind(uniform_dist, random);
auto uniform_float = [&random, &uniform_dist]() { return uniform_dist(random); };

// _RenderTiles gets a range of tiles; iterate through them.
for (unsigned int tile = tileStart; tile < tileEnd; ++tile) {
Expand Down Expand Up @@ -923,7 +923,7 @@ HdEmbreeRenderer::_ComputeAmbientOcclusion(GfVec3f const& position,
{
// Create a uniform random distribution for AO calculations.
std::uniform_real_distribution<float> uniform_dist(0.0f, 1.0f);
std::function<float()> uniform_float = std::bind(uniform_dist, random);
auto uniform_float = [&random, &uniform_dist]() { return uniform_dist(random); };

// 0 ambient occlusion samples means disable the ambient occlusion term.
if (_ambientOcclusionSamples < 1) {
Expand Down

0 comments on commit 67fc43f

Please sign in to comment.