Cycles_path_guiding tests

@Eneen could you share the scenes so that I can have a look at them?

@sherholz sure:

you need this hdri to get hdri lighting, it’s CC0:

1 Like

Playing with some old PS2 game geometry. I had been cleaning it up and adding principle shader to the old textures. It always looked fine in Cycles previously, but with the path guiding build I’m getting what appears to be light leaking through any face that isn’t actually joined at the edges, even when verts are perfectly snapped on top of each other.

path guiding noisy
path guiding denoised
gpu noisy
gpu denoised


Just wanted to point out that we fixed the issues with MNEE and spot lights maybe a week ago.
Would be worth re-doing some of these tests (I know at least this prism scene gets correct now).


The cycles_path_guiding branch unfortunately doesn’t have those changes yet. It needs to be merged with master to bring it back up to date.

Fortunately, the workaround for this is pretty easy, just put a cover over where the two objects meet (ie. kind of emulating thick walls, but it is not true thickness).

This is usually noticeable when a strong light such as the sun is hitting a thin surface, I have not seen any notable anomalies that look wrong elsewhere. I assume that Intel has been testing scenes that do not take a lot of shortcuts in modeling (like not creating exterior walls).

@Eneen thanks. I looked at it, and this scene triggered a situation (looooong paths with a chain of 100 perfect spec bounces) that we did not test before.
The fix for that will be part of the next OpenPGL release.


Thank you!
Have you also looked into directional light issue? There’s one inside scene to test, just turn off env.

EDIT: my bad here, light named “spot_light” was actually direct, so you need to enable “spot_light” to test.

Easy in most cases but not ideal… Hope that issue can get resolved regardless. Guess park guiding is actually too good at hiding paths through miniscule openings lol

I seem to have a scene that crashes inside OpenPGL using the Aug. 1st build:


Stack trace:
blender.exe         :0x00007FF783B26A40  openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4,32>,o
blender.exe         :0x00007FF783B19B30  tbb::internal::function_invoker<<lambda_8f79c36ac1c78eba32095d68b6a570b5> >::execute
tbb.dll             :0x00007FFEDD3EF220  tbb::recursive_mutex::scoped_lock::internal_try_acquire
tbb.dll             :0x00007FFEDD3EF220  tbb::recursive_mutex::scoped_lock::internal_try_acquire
blender.exe         :0x00007FF783B26A40  openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4,32>,o
blender.exe         :0x00007FF783B25BB0  openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4,32>,o
blender.exe         :0x00007FF783B24DC0  openpgl::Field<openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4,
blender.exe         :0x00007FF783B251D0  openpgl::SurfaceVolumeField<openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFis
blender.exe         :0x00007FF783B05AC0  pglFieldUpdate
blender.exe         :0x00007FF780CF2130  ccl::PathTrace::guiding_update_structures

Open the following and enable Viewport rendering:
test-light.blend (905.1 KB)

I’m not sure if I do something wrong but I can’t get caustics from spheres, but no problems with flat surfaces. It’s current 3.4 build from 01.08.2022:

Set the filter glossy value to something like 0.10 or 0.20. Path Guiding helps with caustics, but initial paths need to be found before the magic can start.

I will also note that the default distribution scheme (in the current version of OpenPGL) has trouble with difficult effects if they are not discovered right away, the Directional Quadtree distribution meanwhile does not have this problem.

Correction: These problem are caused by a combination of auto smooth shading and shadow terminator and custom split normals data, not path guiding.


Tests with new Build


I downloaded the latest path guiding branch build. Simple test - a U shaped corridor, with a point light at the end of one arm and Suzanne at the end of the other so the light has to bounce around the bend to reach her.

Render set to equal time (60s).

Path Guiding off

Path Guiding on

Path guiding clearly helps in this scenario - much cleaner image in the same amount of time.


Another test - this time a disco ball lit by a spot light - again equal time render (60s).

Path Guiding Off

Path Guiding On.

In this example - there is a slight tradeoff with noise in the spot light as path guiding renders samples slower, so the overall number of samples with path guiding on is lower - but IMO what you do gain (the reflective caustics) more than compensates.


Very nice! I hope Path Guiding will soon land in Master.


Yep - I believe it’s intended for blender 3.4, so hopefully it will land in master very soon.

1 Like

I hope it “lands in Linux” first! :wink:

1 Like

Another test - this time lighting through coloured glass - a point light inside a glass sphere with voronoi noise driving the colour (a bit like a Tiffany lamp or glass mosaic lamp). Again equal render time (60s).

Guiding off

Guiding on