Blender Git Loki

Blender Git "cycles-x" branch commits.

Page: 30 / 44

April 8, 2021, 13:06 (GMT)
Cycles: Improvements for the resolution divider calculation

* Do not report render and denoising time if render has been cancelled.

It is not possible to estimate full rendering time from a cancelled
state, and reporting wrong time gives the scheduler the wrong idea
about how fast render is.

* Use timing of the first sample to calculate start resolution divider.

This timing is more accurate, because in viewport is known to include
a single sample, and it resembles performance better because later on
multiple samples might be scheduled, making it seen that render is
faster.

* Add some tolerance to the desired timing, so that if the higher
resolution gives close enough timing we use higher resolution. This
solves resolution divider bouncing between two values on a boundary
values of render time (however, it does not eliminate requirement of
hysteresis to really ensure this).

Some utilities became public, so that they can be covered with the
tests. This is mainly to verify own mental math, but also to allow to
play with analytical formulas without breaking things.
April 8, 2021, 13:06 (GMT)
Cycles: Stop rendering as quickly as possible

The goal is to make it so stopping viewport render will happen as quick
as possible. For example, when existing render mode or when opening a
file browser. There is no need to wait for the viewport to be uniformly
sampled in those cases.
April 7, 2021, 16:43 (GMT)
Cleanup: allocate active path arrays once in advance

In practice the size of this matches the max path states anyway, avoiding
reallocation in the middle of queueing kernels will simplify some things
later.
April 7, 2021, 16:43 (GMT)
Cleanup: rename IntegratorPathQueue for clarity

It's only counting the queue sizes, it's not the actual queue.
April 7, 2021, 16:43 (GMT)
Cycles: add shader sorting for shade_surface kernel

* intersect_closest and intersect_subsurface compute a sorting key and with
atomics count how many paths are queued for each key.
* Then we compute the prefix sum of the sorting keys, and use that for sorting
paths according to the key in a single pass with atomics.
April 7, 2021, 16:43 (GMT)
Cycles: disable megakernel for now, see code comments
April 7, 2021, 16:43 (GMT)
Cycles: add debug logging for CUDA device queue
April 7, 2021, 16:43 (GMT)
Cycles: allocate Scene in Session, pass DeviceScene to path trace work

Needed for shader sorting.
April 7, 2021, 16:18 (GMT)
Cycles: Bring OptiX denoiser back

Basically putting old code to be used by the new denoiser
implementation in the integrator.

The main denoising function in the OptiXDevice was split,
to make it easier to follow and understand what's going on.

The current limitation is that currently it only works when
rendering on the OptiX device. Attempts to render on CPU and
denoise on OptiX will currently error out (error is printed
to the console, denoising is not run). This will be worked
on next.
April 7, 2021, 12:16 (GMT)
Cycles: Move multi-device workaround to the PathTrace

This change makes it so the actual device is actually created with all
denoising devices in it. Noticed when started working on OptiX denoiser
and had CPU render device (the OptiX device was never created).
April 7, 2021, 12:16 (GMT)
Cycles: Simplify TileManager

Prepare it for being used for big tile scheduling and not worry about
samples and sample ranges.

Rather straightforward removal of unused code. The only part which
still does not feel fully ideal is that the Session now needs to hold
buffer parameters. Not sure whether there is a better place for them.

The pixel progress is now fully disabled. It was not updated anyway,
so within the current state of the project this is not a regression.
The status report needs to be worked on and this is part of the TODO.
April 7, 2021, 12:16 (GMT)
Cycles: Pass DeviceInfo by const reference
April 7, 2021, 12:16 (GMT)
Cycles: Some basements for the OptiX denoiser

The actual logic is not implemented, but some initial APIs are in
place.

The main purpose of this change is to make sure the device for OptiX
denoiser is actually created and available.

Still some work is needed to create denoiser on an appropriate device
but this better to happen as a followup development, because it will
require some deeper logic change somewhere.
April 7, 2021, 12:16 (GMT)
Cycles: Remove unused task pool from CUDA device
April 7, 2021, 12:16 (GMT)
Cycles: Remove task API from denoising parameters
April 7, 2021, 12:16 (GMT)
Cycles: Mark path trace TODO as solved

The scheduling block is what the PathTraceWorkGPU is doing with the
maximum number of path states.
April 7, 2021, 12:16 (GMT)
Cycles: Rename device_task to device_denoise

The file only contained denoiser settings and parameters, so renaming
to better match content from the file name.

The task is nowhere used anymore.
April 7, 2021, 12:16 (GMT)
Cycles: Remove adaptive stopping per sample capability

It is supposed to be always supported. Without it is not really
possible to do an efficient adaptive stopping on a big tile scale.
April 7, 2021, 12:16 (GMT)
Cycles: Remove unused forward declarations in the device

Arguably, they are bad level calls as well.
April 7, 2021, 12:16 (GMT)
Cycles: Don't link device against render

Seems that device does not use render types anymore, and from
architecture point of view it should not use it.
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021