Cycles: improve equiangular sampling in volume #119438

Merged
Weizhen Huang merged 27 commits from weizhen/blender:equiangular-valid-range into main 2024-03-25 13:02:13 +01:00

27 Commits

Author SHA1 Message Date
Weizhen Huang 35eb97037a Add test file 2024-03-25 13:00:05 +01:00
Weizhen Huang 01620ce3fc Merge remote-tracking branch 'origin' into equiangular-valid-range 2024-03-25 12:45:50 +01:00
Weizhen Huang 59907df95d Merge remote-tracking branch 'origin' into equiangular-valid-range 2024-03-21 19:41:19 +01:00
Weizhen Huang 0b839dfc8f Fix compilation error on Windows and Linux
buildbot/vexp-code-patch-lint Build done. Details
buildbot/vexp-code-patch-darwin-x86_64 Build done. Details
buildbot/vexp-code-patch-linux-x86_64 Build done. Details
buildbot/vexp-code-patch-windows-amd64 Build done. Details
buildbot/vexp-code-patch-coordinator Build done. Details
2024-03-21 18:41:47 +01:00
Weizhen Huang f326ebd116 Disable ray segment computation for light tree
buildbot/vexp-code-patch-lint Build done. Details
buildbot/vexp-code-patch-linux-x86_64 Build done. Details
buildbot/vexp-code-patch-windows-amd64 Build done. Details
buildbot/vexp-code-patch-darwin-x86_64 Build done. Details
buildbot/vexp-code-patch-coordinator Build done. Details
2024-03-21 18:32:52 +01:00
Weizhen Huang 10e0cd6674 Cleanup: make equiangular coefficiensts struct 2024-03-20 18:06:58 +01:00
Weizhen Huang 17bf75aa18 Cleanup: improve readability, remove unused variable 2024-03-20 18:06:58 +01:00
Weizhen Huang 6d755747e4 Cleanup: remove todo, shuffle functions around 2024-03-20 18:06:58 +01:00
Weizhen Huang cee850ee8f Cleanup: remove unnecessary triangle light normal computation 2024-03-20 18:06:58 +01:00
Weizhen Huang 2ffdcdca32 Fix numerical precision problem in ray cylinder intersection 2024-03-20 18:06:58 +01:00
Weizhen Huang ba1491b126 Write `ray_plane_intersect()` utility function 2024-03-20 18:06:58 +01:00
Weizhen Huang 3f999f4d15 Support spot light with radius 2024-03-20 18:06:58 +01:00
Weizhen Huang d9f1ed956b Fix typo 2024-03-20 18:06:58 +01:00
Weizhen Huang ce380a341d Support rectangle area light with zero spread 2024-03-20 18:06:57 +01:00
Weizhen Huang 64e477b9c7 Also use the new `solve_quadratic` function for ray-cone intersection 2024-03-20 18:06:57 +01:00
Weizhen Huang da4721063b Support ellipse area light with zero spread 2024-03-20 18:06:57 +01:00
Weizhen Huang 6bd5fcfe96 Support mesh light 2024-03-20 18:06:57 +01:00
Weizhen Huang 5b4dd0770c Support spot light with non-uniform scaling 2024-03-20 18:06:57 +01:00
Weizhen Huang 6b48259033 Fix failed intersection when spread is close to pi 2024-03-20 18:06:57 +01:00
Weizhen Huang 9689fae7d8 Limit the range to the positive side of the area light 2024-03-20 18:06:57 +01:00
Weizhen Huang c62aedc7eb WIP: add area light support 2024-03-20 18:06:57 +01:00
Weizhen Huang b33131a237 Fix bug in multiple scattering
Should use distance sampling when equiangular fails
2024-03-20 18:06:56 +01:00
Weizhen Huang 54f87f5501 Cleanup: simplified branches 2024-03-20 18:06:56 +01:00
Weizhen Huang 02295bc857 Cleanup: remove unused function 2024-03-20 18:06:56 +01:00
Weizhen Huang ad801dc317 Alternative method to compute ray-cone intersection
the previous one might be useful with light tree, where many of the
quantities are already computed
2024-03-20 18:06:56 +01:00
Weizhen Huang 6cf171dcc7 WIP: Cycles: improve light with spread in volume
by restricting the sample bounds along the ray for equiangular sampling
2024-03-20 18:06:56 +01:00
Weizhen Huang f17c46fd7f Declare `LightSample ls` outside of `..direct_light()` 2024-03-20 18:06:56 +01:00