filament icon indicating copy to clipboard operation
filament copied to clipboard

Feature Request: Set random seed for deterministic rendering

Open nimrod-gileadi opened this issue 1 year ago • 3 comments

Is your feature request related to a problem? Please describe.

I'm using Filament for off-screen batch rendering. It would be useful for me to have deterministic results, where rendering the same view twice results in the same pixel. For the scene I'm using, I'm able to achieve this by disabling dithering, but it would be nice to have dithering, and just be able to set the seed before I call Renderer::render.

Describe the solution you'd like This could be achieved by making FEngine::getRandomEngine a public method of Engine (so I could call engine->getRandomEngine().seed(1234)), or you could have a narrower interface with one function for setting the seed between render calls.

Describe alternatives you've considered

Disabling dithering (my current solution), or casting Engine* to FEngine* to get access to getRandomEngine().

nimrod-gileadi avatar May 07 '24 11:05 nimrod-gileadi

Dithering doesn't use a random seed but it's based on elapsed time.

romainguy avatar May 07 '24 18:05 romainguy

Thanks for the correction. Is there a way for a client to explicitly set the time used for dithering?

nimrod-gileadi avatar May 08 '24 10:05 nimrod-gileadi

You cannot set the time but you can use Renderer::resetUserTime() to control the start time. Probably won't be enough for what you want.

romainguy avatar Jun 04 '24 17:06 romainguy