Blender Git Loki

Blender Git "cycles-x" branch commits.

Page: 27 / 44

April 15, 2021, 07:26 (GMT)
Cycles: Remove pause notification from denoising sample change

The pause wait does not check on the denoiser sample, so it was
a bit weird to wake up pause loop. Possibly was a copy-paste of
the samples update which does need to wake pause loop.
April 15, 2021, 07:26 (GMT)
Cycles: Remove background info from Device

There shouldn't be a logic on the device level which will make it
to change behavior based on whether it is an interactive or offline
rendering.

The only current use is in the OpenCL device which initialized
requested features differently for viewport. This code will either
fully fade away or will be redone.
April 15, 2021, 07:26 (GMT)
Cycles: Refactor denoiser passes configuration

Store them as an individual boolean flags.

Should be no functional changes so far, but allows to simplify the
following:

- Conditional enabling of denoising passes (so that unused passes
are not written by the kernel).

- Move configuration to the Graph.
April 15, 2021, 07:26 (GMT)
Cycles: Conditionally enable denoising passes

Allows to avoid memory usage by passes which are not used by the
denoising algorithm.
April 14, 2021, 13:28 (GMT)
Cycles: Remove unused fields from RenderBuffers

The neighours map is not used anymore as everything is happening on
a level of big tiles.

The render time will need to be redone somehow, because measuring it
on a big tile level is not very useful for artists.
April 14, 2021, 13:28 (GMT)
Cycles: Remove trivial wrapper functions

They do not add any semantic meaning, is easier to simply call the
C++ RNA API directly, as it is exactly the same argument list to
be passed.
April 14, 2021, 13:28 (GMT)
Cycles: Hide Session::tile_manager from public access
April 14, 2021, 13:28 (GMT)
Cycles: Use more clear name for tile pixels accessors
April 14, 2021, 13:28 (GMT)
Cycles: Make session buffer params non-public
April 14, 2021, 07:51 (GMT)
Cycles: Rework passess data access

The idea is to move pass access away from RenderBuffers to a place
where list of passes is known. Most obvious choice is the Session.
A bit of trickery comes from the fact that in theory PathTrace might
have multiple RenderBuffers (in the case of multi-device render).
So the pass access happens via session into the PathTrace.

There is a helper class which pre-calculates various offsets which
can be re-used by updates form multiple devices.
April 13, 2021, 16:00 (GMT)
Cycles: Fix divide pass types stuck forever in viewport render

Once the viewport display was set to a pass which requires a divide
type the divide type pass would have been never removed from passes.
This was causing some issue in the light pass handling. resulting in
wrong render result when viewport was toggled back to combined pass.
April 13, 2021, 16:00 (GMT)
Cycles: Fix and improve behavior of SessionParams::modified

The check around denoising.use seemed to be wrong: seems to be a
mistake of trying to inline check for an effective value of the
new parameters denoiser usage (with device support taken into
account).

Additionally, don't compare denoising parameters if the denoising
is not used. This way it is possible to modify denoiser settings
before enabling it, which is handy in the complex files.
April 13, 2021, 16:00 (GMT)
Cycles: Make it possible to handle unaligned float3 passes

Currently unused, preparing code to generalize denoising passes.
April 13, 2021, 16:00 (GMT)
Cycles: Move denoising passes to generic passes routines

The change makes it so denoising passes are handled in the same exact
way as "regular" passes are, allowing to get rid of some exceptions in
the code.

The current downside is that if OptiX denoiser is requested and is not
supported by the platform the passes will still be allocated. I'd say
that behavior in this case needs to be revisited: either fallback to
the OpenImageDenoiser (similar to how unsupported GPU Compute falls
back to CPU) or to move support checks in a centralized place. The one
thing which could help here is moving denoiser parameters from Session
to Scene.

The immediate benefit is that the special access to the denoiser passes
in the Buffers is no longer needed.

After this change it will also be possible to save up memory by not
allocating passes which are not needed for the denoiser: for example if
denoiser does not use normals there is no need to allocate pass for
them.
April 13, 2021, 16:00 (GMT)
Cycles: Use easier to debug match check

Use DCHECK_EQ(foo, bar) instead of assert(foo == bar) which makes it
easier to see what exactly went wrong by looking on numbers. Before
it was required to re-run Blender to see what was actual and expected
values.
April 13, 2021, 16:00 (GMT)
Cycles: Vectorize math in get_pass_rect

Should give some time advantage when accessing passes.
Hard to measure though, but this feels to be the right thing to do
nevertheless.
April 13, 2021, 10:44 (GMT)
Cycles: Don't hardcode adaptive sampling passes for background renders

Leave creation of such passes to the scene.
No function changes expected, just reducing boiler plate code taking an
advantage of smarter render pipeline now.
April 13, 2021, 10:44 (GMT)
Cycles: Unify checks for unused passes

Avoids possible scenario when viewport rendering uses samples
count as a display pass: its offset will be 0 in this case, making
checks in the kernel wrong.

This also makes it so access to the adaptive sampling will cause
memory issues instead of silently accessing combined passes.
April 13, 2021, 10:44 (GMT)
Cycles: Fix memory leak of OptiX context and denoiser
April 13, 2021, 10:44 (GMT)
Cycles: Fix section name in the comment
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021