March 30, 2021, 13:31 (GMT) |
Cycles: Unify device variable name Just stick to a commonly used `device`. The original idea of making it clear that the device is actual a compute (non-multi) device didn't really work that great. |
March 30, 2021, 13:31 (GMT) |
Cleanup: Extra spaces at the end of comment |
March 30, 2021, 13:30 (GMT) |
Cycles: Enable all passes for OpenImageDenoiser Finishes the OpenImageDenoiser re-implementation to the same feature level as it was before the big refactor. |
March 30, 2021, 12:02 (GMT) |
Cycles: restore writing of light render passes * Write directly into render buffers instead of PathRadiance * Indirect and shadow paths are now marked as needing to be written to either reflection, transmission or volume scatter passes with a flag * For diffuse/glossy distinction in reflection, we store the ratio of diffuse and glossy so we can reconstruct the diffuse and glossy throughput * Get rid of ShadowLight integrator state store in shadow path throughput and flag instead Still missing: * AO and shadow passes * Proper handling of ray visibility on lights * Adaptive sampling passes |
March 26, 2021, 16:23 (GMT) |
Cycles: Automatically calculate resolution divider Calculate resolution divider so that it is the lowest one which allows to have smooth viewport navigation. |
March 26, 2021, 16:23 (GMT) |
Cycles: De-duplicate time averaging helpers |
March 26, 2021, 16:23 (GMT) |
Cycles: Remove start resolution from user interface It is calculated automatically now and the value from the interface is ignored. The TileManager becomes some sort of annoying half-commented-out piece of code. Will be cleaned up once multiple big tiles support will be implementing. |
March 26, 2021, 16:23 (GMT) |
Cycles: Schedule multiple samples to viewport render The idea is to schedule 1 sample at the lower sample ranges, giving a quick update on a noisy image, but schedule more samples and do less often updates at higher number of samples. There is a magic code which decides how often to do updates, which might need some further tweaking. Simple startup file and BMW27 on GPU are about 4% faster in viewport now. It is important to note that navigation is always instant. This means that the longer render times between updates does not have affect on how instant navigation can start. |
March 26, 2021, 14:51 (GMT) |
Fix Cycles crash when changing number of threads at runtime Create a local arena with exact number of threads, so that the `tbb::this_task_arena::current_thread_index` returns proper index. Need to verify that this does not spawn new worker threads and that this actually works under all circumstances. |
March 26, 2021, 14:51 (GMT) |
Cycles: Bring pixel size support back Was missing in the RenderScheduler refactor. |
March 26, 2021, 13:32 (GMT) |
Fix border render in viewport on GPU Mistake in calculation of buffer x and y from the global work index. |
March 26, 2021, 13:04 (GMT) |
Cycles: Move denoising decision from Session to RenderScheduler Makes it possible to have more complete timing overview to make decision how many samples to render and when to denoise. Currently there are no functional changes. |
March 26, 2021, 13:04 (GMT) |
Cycles: Move resolution divider to RenderScheduler Had to move RenderScheduler away from PathTrace into Session. This way it is simpler to perform scene update in a threading-safe manner without making PathTrace API more complicated. So now the flow goes as following: - Session requests work from the RenderScheduler - Session updates scene for the possibly changed resolution - PathTrace renders the given work, which might involve path tracing, denoising, and display update. - PathTrace informs the scheduler how long specific task took, so that the scheduler can adjust its scheduling policy. The user level change is that the start resolution is now ignored. It will be replaced with a more automated code based on the timing. There is still some work to be done to support multiple big tiles. Still not entirely happy, but think we need to let the matter to rest a bit and re-iterate when we will be adding big tiles support. |
March 26, 2021, 13:04 (GMT) |
Cycles: Rename WorkScheduler to WorkTileScheduler Makes it explicit which part of rendering work is being scheduled. |
March 26, 2021, 13:04 (GMT) |
Cycles: Move samples scheduling logic to own class The idea is to consolidate all logic which is related on samples and denoising scheduling to a single class, which has an overview of how expensive each task is. So far should be no functional changes. Still preparation for moving resolution divider and viewport samples number logic away from the TileManager. |
March 26, 2021, 13:04 (GMT) |
Cycles: Log number of samples which PathTraceWork will render Allows to monitor how many samples were scheduler for rendering between updates. |
March 26, 2021, 13:04 (GMT) |
Cycles: Move denoising call inside of PathTrace::render_samples Preparation for the pathTrace being responsible for scheduling samples, denoising, and display updates. Temporarily alters the render_samples() call. Should be no functional changes. |
March 26, 2021, 13:04 (GMT) |
Cycles: Move GPUDisplay to PathTrace The end goal is to have PathTrace to have full control over things like resolution divider, number of samples scheduled for rendering, picking the best moment to perform denoising based on an empirical measurements in order to achieve best responsive interface as well as the best render times. This change moves ownership of the GPUDisplay from Session to PAthTrace so that PathTrace can start using it directly. Should be no functional changes so far, just preparing code and API needed for the end goal. |
March 26, 2021, 13:04 (GMT) |
Cycles: Fix missing denoise start sample update It is being updated separately from parameters, even though is stored in the parameters. Solved by moving an update of denoiser parameters to the initialization of the new render iteration. The modification check is now done in the PathTrace. Good thing is that now it is possible to remove buffer lock, meaning interface will never be frozen on denoiser changes. Additionally, rendering now should never get out of sync between passes and denoiser configuration. |
March 26, 2021, 08:58 (GMT) |
Cycles: Add comment about allocation size of PBO |
|