
Fixed the energy conservation issue. 8/128 samples per pixel, 4/64 shadow samples, 32 diffuse samples, 8 max bounces, multi bounce GI. Took around an hour with 24 threads

Same parameters as before but with 10 diffuse samples and 2 reflection rays, took 20 min 18 sec with 24 threads

and cosine weighted sample counts. I think the increased render time was due to this render using more samples, not sure why that is the case though

non cosine weighted sample counts for below

Cosine weighted hemisphere sampling with the same parameters as the previous image, took 4 min 33 sec

Normal hemisphere sampling. 5 diffuse samples, 1 on first bounce then 0. 8/128 samples per pixel 95% confidence 0.01 error. Took 2 min 37 sec with 24 threads 64 blocksize

For reference heres the same scene without specular conservation but still diffuse conservation, this looks much better and more accurate

Something is wrong with my implementation of energy conservation. Ive implemented energy conservation according to the textbook chapter for diffuse, specular, and their indirect counterparts. Theres too much energy coming from the specular since alpha is a very large value and Im multiplying the specular component by it. Am I missing something?