Blender Git Loki

Blender Git "cycles-x" branch commits.

Page: 41 / 44

February 26, 2021, 18:03 (GMT)
Cycles: kernel tweaks to make GPU compilation work
February 26, 2021, 18:03 (GMT)
Cycles: add DeviceKernel::NUM_KERNELS
February 26, 2021, 17:08 (GMT)
Cycles: Make CPU queue be able to access CPUDevice
February 26, 2021, 17:08 (GMT)
Cycles: Make CPU textures initialization more explicit

Allows to decouple queues allocation from their initialization for
actual path tracing.

Interesting fact: using auto&& in range based loop over unique_ptr<Foo>
will make variable type Foo&.
February 26, 2021, 17:08 (GMT)
Cycles: Make PathTrace have same lifetime as Session

Avoids re-initialization based on per-render call.

Might not be so visible for offline rendering, but is kind of crucial
for viewport rendering.
February 26, 2021, 17:08 (GMT)
Cycles: Fix missing updates on camera rotation

Is currently invisible, but for the on-gong development is nice to
have proper viewport updates,

Effectively, revers behavior of previous commit: it is a bit more
tricky to detect when kernel globals are to be copied. Roll back
to older behavior for now.
February 26, 2021, 17:08 (GMT)
Cycles: Initial support of viewport rendering

Rather straightforward idea: request path trace to copy its render
buffers to the given display buffer. There is some more glue logic
to pass samples, resolution divider, and proper offset/stride to
the kernel.

For some reason viewport is not that interactive: seems that there
is no redraw on lower resolution results. Could be because of the
locking nature of the `render_samples()` call, or could be something
else. Forcing resolution divider in the tile manager, or setting
pixel size to 8x clearly shows proper behavior, so it's something
with the updates rather than an issue in implementation of this
part of the code.

The TileManager is still the source of truth for current sample
and resolution. This will be moved out in the further development.
February 26, 2021, 17:08 (GMT)
Cycles: Avoid unnecessary copy of KernelGlobals

Re-use "thread-local" copy as much as possible.
February 26, 2021, 17:08 (GMT)
Cleanup: De-duplicate array size calculation

The function should become more re-usable, but is not immediately clear
what is the best place for it.
February 26, 2021, 17:08 (GMT)
Cycles: Add default constructor to CPUKernelThreadGlobals

Allows to create thread-local KernelGlobals without giving an explicit
value. Currently unused, but is needed for an upcoming development.
February 26, 2021, 17:08 (GMT)
Cycles: Split CPUDevice to own file

Makes it possible to CPU device specific logic from other CPU-related
entities, such as render queue.
February 26, 2021, 12:44 (GMT)
Cycles: avoid updating global memory bounce state for shader evaluation
February 26, 2021, 12:44 (GMT)
Cycles: basic support for transparent shadows

Missing still is volume shadows and support for continuing to trace if the
max number of hits is exceeded.
February 25, 2021, 17:46 (GMT)
Fix error in light_sample_terminate
February 25, 2021, 16:43 (GMT)
Cycles: Make path tracer aware of start sample of tile manager

This is a part of "bring viewport rendering back" project.
This is something what is required to have with the current way of
how viewport drawing is done. In the future it might make sense to
have PathTrace persistent in the Session, so that it can keep track
of sample and resolution divider.

However, this new API will likely be used to achieve the "add more
samples to existing render" feature.
February 25, 2021, 16:28 (GMT)
Cycles: break up direct_emission function

To help experiment with reordering this code and potentially moving light
shader evaluation into its own kernel or have a single shader evaluation
function in the surface kernel.
February 25, 2021, 13:54 (GMT)
Fix incorrect assert in shadow kernel
February 25, 2021, 13:18 (GMT)
Cycles: Fix work scheduler causing oversampling of one pixel

Typical off-by-one in range calculation.
February 25, 2021, 13:18 (GMT)
Cycles: Fix border rendering
February 25, 2021, 12:42 (GMT)
Cycles: Simplify render buffers management

Avoid per-integrator-queue render buffers, which also avoids copy
of render results from one buffer to another.

Now on CPU all integrator queues are sharing same render buffer
created for the big tile and are writing to different parts of
this buffer.

For a single-GPU device there will be one integrator queue and one
render buffer on the device side.

Multi-device would need to have some more tricky buffer management
that it originally looked like to me; data transfers are to be
avoided as much as possible. So ideally it would be some per-device
statically allocated buffers, with possibly some re-arrangement
during rendering to balance things better. From the memory ownership
point of view it will mean per-device render buffers and multiple
integrator queues for CPU. So from this point of view the idea of
path tracing context becomes obsolete.

Remove the PathTraceContext. Maybe later it can become PathTraceWork
with an implementation of "wavefront management". But for now lets
keep things more localized to PathTrace for easier refactoring.
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021