Page MenuHome

E-Cycles speed-up for Cycles X - PMJ extension
AbandonedPublic

Authored by Mathieu Menuet (E-Cycles) on Sep 16 2021, 8:31 AM.

Details

Summary

As the title says, it adds the E-Cycles speed-up for sobol to PMJ .
Currently, it uses the original code while newer Cycles X got a new PMJ code. So this patch reverts the latest changes in the mean time and is provided here as a base line for noise levels and performance to be able to compare performance.
To see the full potential, the GPU occupancy is set to optimal values with fewer updates and higer number of max paths. The overall performance boost offered by this patch is of about 1.45x faster rendering on the dark interior scene compared to current PMJ.

Depends on https://developer.blender.org/D12318

Diff Detail

Repository
rB Blender

Event Timeline

William Leeson (leesonw) requested changes to this revision.Sep 16 2021, 2:27 PM

Thanks for this diff. Unfortunately, this version of the PMJ sampler has correlation issues between dimensions and also sample clumping due to the xor scrambling. Also the use of uint2 to generate the pixel hash to xor with samples causes correlation as this hash is also xor'ed in other places effectively undoing the xor operation. I don't know if it is a good one to base your changes off for profiling due to these issues. Looking at the code it should be easy enough to put your change onto the new PMJ sampler. I left a few tips if you want I can submit a diff later today?

intern/cycles/kernel/kernel_jitter.h
138

Again using the code on the left instead of this you could use this to generate the rv value.

150–151

It should be possible to put this into the CPR code on lines 102-111 to the left as they are very similar. If fact we just need to multiple dx*(1.0f/NUM_PMJ_SAMPLES) by (kernel_data.integrator.scrambling_distance/(float)0xFFFFFFFF) should do the trick.

158–171

For the code on the left just multiple 1.0f/NUM_PMJ_DIVISIONS by (kernel_data.integrator.scrambling_distance/(float)0xFFFFFFFF).

intern/cycles/render/integrator.cpp
191

This effectively gets undone along the edge pixels causing correlation.

This revision now requires changes to proceed.Sep 16 2021, 2:27 PM

I left a few tips if you want I can submit a diff later today?

Thanks for the tips. I tried to follow them quickly without success. I'm happy to try out your diff!

  • reverting wrong diff meant for sobol version.
Alaska (Alaska) abandoned this revision.Nov 26 2021, 8:08 AM

I'm "abandoning" this revision as D12854 was used instead.