May 19, 2021, 19:21 (GMT) |
Dyntopo: code cleanup |
May 19, 2021, 17:44 (GMT) |
Cycles X: remove unused megakernel for GPU rendering This reduces OptiX runtime compilation time to less than a second here. Differential Revision: https://developer.blender.org/D11313 |
May 19, 2021, 17:29 (GMT) |
Apply D9974: Sanitize threaded preview creation with undo With undo/redo after creating assets, previews of the "Current File" asset library would often go missing, e.g. see T83884. The preview generation in a background job will eventually modify ID data, but the undo push was done prior to that. So obviously, an undo then would mean the preview is lost. This patch makes it so undo/redo will regenerate the preview, if the preview rendering was invoked but not finished in the undone/redone state. The preview flag `PRV_UNFINISHED` wasn't entirely what we needed. So I had to change it to a slightly different flag. |
May 19, 2021, 17:16 (GMT) |
Cycles X: Remove usage of mega-kernel The usage of the mega-kernel is commented out with this change. There are few benefits of removing the mega-kernel: - It takes extra time to compile and space to ship. - It is not compatible with features like shadow catcher. The rest of the changes are related on attempt to avoid performance loss in various scenes. Those changes include: - Make work tile smaller in size. This makes the work tile more friendly for greedy scheduling when adaptive sampling is used. Currently this is achieved by keeping pixel same the same and lowering number of samples per work tile. The idea behind this is to avoid dramatic change in order in which pixels are scheduled for sampling. - Keep tile size dimensions a power of two. This lowers the unused path states (which can be watched with ./bin//blender --debug-cycles --verbose 3 2>&1 | grep "Number of unused path states" In own tests it seems that we barely "waste" path states now. - Make it so tiles are scheduled in the order of samples first. As in: keep pixel-space coherency, similar to how it is done in the `get_work_pixel()`. - Only keep extreme case tests for the tile size calculation. Avoids some unnecessary updates, while still ensuring correct behavior in extremes. The timing goes as following: ``` RTX 6000 (Turing) new cycles-x bmw27.blend 10.8964 10.4269 classroom.blend 17.4476 16.6609 pabellon.blend 9.77167 9.14966 monster.blend 10.3662 12.0106 barbershop_interior.blend 11.9445 12.5769 junkshop.blend 16.3556 16.5213 pvt_flat.blend 16.5317 17.4047 RTX A6000 (Ampere) new cycles-x bmw27.blend 7.74059 7.65293 classroom.blend 10.775 10.9143 pabellon.blend 6.00643 5.85334 monster.blend 6.79277 8.0134 barbershop_interior.blend 8.39941 8.47159 junkshop.blend 10.4258 10.9882 pvt_flat.blend 10.2752 10.8821 ``` Not entirely happy with the results: there are some very nice speedups interleaved with some slowdown. Although, slowdown is within 5%, so hopes that we can gain it back with more tricks from the sleeves. Some thing to try: - Try lowering tile size in pixels - Try better alignment of tile size with number of threads on a multiprocessor. This change is a combined brain activity from Brecht and myself. Differential Revision: https://developer.blender.org/D11311 |
May 19, 2021, 17:11 (GMT) |
Merge branch 'asset-browser-poselib' into asset-browser |
Revision 374e32e by Julian Eisel (asset-browser, asset-browser-poselib, temp-pose-flipping-fix-attempt) May 19, 2021, 17:07 (GMT) |
Remove unnecessary `NonCopyable` mixin usages |
Revision 92d3d17 by Julian Eisel (asset-browser, asset-browser-poselib, temp-pose-flipping-fix-attempt) May 19, 2021, 16:47 (GMT) |
Merge branch 'master' into asset-browser-poselib |
May 19, 2021, 16:45 (GMT) |
Merge branch 'master' into asset-system-filelist |
May 19, 2021, 16:32 (GMT) |
Fix compile errors after merge conflicts |
May 19, 2021, 16:19 (GMT) |
Merge branch 'master' into asset-browser |
May 19, 2021, 15:53 (GMT) |
Merge branch 'master' into override-recursive-resync |
May 19, 2021, 14:09 (GMT) |
Cycles X: More flexible tile scheduling support Allow tiles with sample range smaller than the currently rendering number of samples. The previous code was trying to support it already, but it had some mistakes in the math. Currently should be no functional changes. |
May 19, 2021, 14:02 (GMT) |
Cycles X: Increase verbosity level for kernel timings Allows to more easily access overall kernel time execution without too much flood in the terminal which could affect overall timing. |
May 19, 2021, 11:41 (GMT) |
Version bump 2.83.15 stable. 2.83.14 missed cuda/optix kernels in distribution. Better to bump the version. |
May 19, 2021, 10:12 (GMT) |
Cycles X: Run init_from_camera kernel for all tiles Avoids pointer magic which is not necessarily supported by all compute backends and allows to ensure there are no extra latency caused by multiple kernel launches. Currently this does not bring performance improvements, but this change opens doors for more compute backends and makes it possible to test different tile slicing and scheduling strategies. ``` init_all_tiles cycles-x bmw27.blend 10.3444 10.326 classroom.blend 16.476 16.6067 pabellon.blend 9.13914 9.13556 monster.blend 11.9673 11.963 barbershop_interior.blend 12.4566 12.4414 junkshop.blend 16.4764 16.491 pvt_flat.blend 17.288 17.2757 ``` Differential Revision: https://developer.blender.org/D11304 |
May 19, 2021, 08:15 (GMT) |
Cycles X: Move Pass to its own file While doing so found that the pass type enum could have double amount of entries: items are added when initializing pass node and when setting up film's display pass enum. |
May 19, 2021, 08:15 (GMT) |
Cleanup: Use const qualifier in Cycles X scene parameters comparator |
May 19, 2021, 08:15 (GMT) |
Cleanup: Remove unused pass stride accessor in Cycles X Unused function, which usage was actually limited: the stride was only correct after device update. |
May 19, 2021, 08:15 (GMT) |
Cleanup: Remove unused table offset access in Cycles X |
May 19, 2021, 08:15 (GMT) |
Cleanup: Follow naming convention for private members in Cycles X |
|