Blender Git Loki

Blender Git "cycles-x" branch commits.

Page: 26 / 44

April 20, 2021, 08:56 (GMT)
Cycles: Allow resetting convergence flag of pixel

This way it is possible to resume rendering with lower adaptive
sampling threshold.

Done as an extra argument to the convergence check function instead
of always re-calculating the flag based on the following ideas:

- The reset flag is the same for all threads, so it should not harm
coherency of GPU threads.

- Reset is not always used, and in cases when it is not used it is
cheaper to check boolean flag than to calculate the error norm.

So far again should be no functional changes, preparing for the new
development in the viewport.
April 20, 2021, 08:56 (GMT)
Cycles: Pass adaptive sampling threshold to filter kernel

Before the threshold was used from the KernelIntegrator, which makes it
very tricky to modify on runtime. The only other place in the kernel
which was checking for the threshold is passes write code, which should
be possible to only check for existence of passes.

The change moves forward with the allowance of progressively lowering
the noise floor in the viewport render.

So far should be no functional changes.
April 16, 2021, 14:54 (GMT)
Cycles: Increase adaptive sampling step from 4 to 16

This gives measurable (~10%) speedup in very simple scenes when
enabling adaptive sampling (allowing GPU to render much more samples
in parallel while image is still noisy) without penalty on a more
complex files.
April 16, 2021, 14:34 (GMT)
Cycles: Add active pixels "overlay" option

The purpose of the change is to make it visible which pixels are being
sampled when adaptive sampling is enabled. This is super useful for
development in the area to see which pixels are considered noisy. It
also will be much useful for the upcoming development of the idea of
progressively decreasing noise floor in the viewport.

This is also something what could be useful for lighting artists, TDs,
and other production folks to investigate shots. So in the long run it
will be very nice to make this is an official option.

There are two main stoppers from making the option available:

- The color of "overlay" is hardcoded.
- When navigating in viewport all the pixels are changed, so users are
"attacked" by this bright fullscreen overlay.

Those are solvable issues, but is not something what is the highest
priority at this time. So, keeping all this in mind the decision on
the interface goes as following:

- This is an option which is only enabled when Developer UI and Cycles
Debug options are enabled in the User Preferences.

- This is an option in the viewport shading, as it is only affecting
the viewport.

In the future we will always display this option, regardless of the
user preferences.

The BlenderSession and BlenderSync now are aware of the Developer UI,
which is another good thing I'd say because then the debug panel
handling can happen via the BlenderSession.
April 16, 2021, 14:34 (GMT)
Cycles: Make samples count pass available for viewport

It is very useful for development purposes, but is also something what
gives troubleshooting tools for lighting artists.

Only available when viewport is in rendered mode.
April 16, 2021, 14:34 (GMT)
Cycles: Move BVH debug passes to the end of the enum

Makes it so enabling Cycles kernel debug does not change pass IDs,
making it so IDs used in the viewport pass enum are always reliable
(before enabling kernel debug could break the viewport passes).

Maybe these debug passes needs to be removed, since they are not
reliable in a sense that not all compute devices will provide them.
We also don't really develop BVH anymore, so they kind of becoming
obsolete.
April 16, 2021, 13:57 (GMT)
Cycles: Remove meaningless const qualifier of return type

const qualifier for scalar return type is meaningless from the compiler
and semantic point of view: is not like this forces assigned to only
happen to a const scalar.

Solves CUDA compiler warning in the console.
April 16, 2021, 13:24 (GMT)
Cycles: Correct adaptive filter sample alignment

There was a difference in the meaning of the sample passed to
the AdaptiveSampling::align_samples. Based on the logic of the
render scheduler, this is a 0-based sample index which is not
yet sampled.

Fixes missing filtering in certain conditions.
April 16, 2021, 13:23 (GMT)
Fix GPU adaptive sampling being broken, should copy in sync with the queue
April 16, 2021, 13:11 (GMT)
Cycles: Remove unused and confusing fields

- Remove adaptive sampling from Film.
The adaptive sampling is configured via Integrator. Having unused
adaptive sampling in Film is rather confusing.

- Remove unused start_sample from KernelIntegrator.
It is unused, and with the idea of making it possible to resume
rendering with adaptive sampling the meaning of a single start sample
becomes unclear.
April 16, 2021, 12:54 (GMT)
Cycles: implement transparent shadow continuation when max hits is reached

Only the CPU/Embree code is fully correct, for GPU it is not currently
guaranteed to find the N closest hits (although it is likely). That will
be solved next.

Pabellon renders identical to master with this change.
April 15, 2021, 14:19 (GMT)
Cycles: Fix adaptive sampling on GPU after recent changes

The condition was inverted.
April 15, 2021, 14:19 (GMT)
Cycles: Remove unused return result of adaptive filtering
April 15, 2021, 11:07 (GMT)
Cycles: Fix compilation error after recent Device changes
April 15, 2021, 10:54 (GMT)
Cycles: Implement early stopping for adaptive sampling

Stop scheduling path tracing jobs one all pixels did converge.
Since the convergence check is done for the entire big tile it
is not that visible with regular noise level settings and number
of samples. However, still feels like this is proper thing to do,
especially for the idea of gradually decreasing error threshold
for the viewport rendering.

For the GPU there is a single int memory allocated for every
invocation of convergence check kernel. Not sure if it gives
any measurable difference and whether we'd better avoid such
tiny allocations.
April 15, 2021, 10:53 (GMT)
Cycles: Fix denoising artifacts with adaptive sampling

Need to make sure denoiser input is has consistent number of samples
for all pixels, otherwise denoiser might see some areas too dark when
they converged.

The output of denoiser needs to be scaled back, so that when combined
pass is scaled with number of samples n display on or pixel buffer
request it gives proper result.

While this is technically slower than the previous state of the branch,
the number of computations is similar to the master branch.

We can optimize some areas: for example by multi-threading OIDN passes
creation.

Additionally, enable handling of all passes for OptiX. Some code was
disabled during development and was never enabled back :(
April 15, 2021, 10:48 (GMT)
Cycles: use stream in CUDA queue

Any device memory copying and zeroing is also done as part of the stream
so we can queue such operations without synchronizing.
April 15, 2021, 10:48 (GMT)
Cycles: make device queues GPU specific
April 15, 2021, 08:07 (GMT)
Cycles: Fix tests compilation error after recent changes
April 15, 2021, 07:26 (GMT)
Cycles: Rework denoiser integration

The goal is to allow OptiX denoiser when rendering with CPU or CUDA.

The Denoiser now can request device to be created if none of the
devices configured for rendering is suitable for denoising. This
allowed to remove some tricky logic from BlenderSync.

Another related change is the move of denoiser parameters from Session
to Integrator, allowing to change denoiser settings without doing full
session re-creation.

Known remaining aspects:

- If CUDA is used for rendering try to use same physical device for
OptiX denoising.

- Optimize data transfer when different Device is used for denoising.

- Would also be nice to not restart rendering when it is only start
denoising sample is changed.
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021