Blender Git Loki

Blender Git "cycles_memory_experiments" branch commits.

June 8, 2015, 13:48 (GMT)
Cycles: Merge density and color volume attributes if they both requested

This way we store quite reasonable amount of memory (density is stored as RGBA
textures, which ends up in gigabytes of RAM for hires smoke sims).

It's not really pretty implementation and we'll really need to support textures
with 1 and 3 channels instead of doing such packing, but we need to be able to
render some files here.
June 8, 2015, 13:34 (GMT)
Cycles: Free hires smoke data from blender side after scene was fully synchronized

This happens if all object's smokes are backed to files and rendering is either
happening from command line of with locked interface.

The idea behind this change is to make as much memory available for path tracing
as possible, so after heavy swapping during synchronization period there's loads
of free memory to put important data back to RAM.
June 8, 2015, 12:20 (GMT)
Merge branch 'master' into cycles_memory_experiments

Conflicts:
intern/cycles/blender/blender_object.cpp
intern/cycles/blender/blender_sync.h
intern/cycles/render/graph.h
intern/cycles/render/mesh.cpp
April 23, 2015, 09:51 (GMT)
Smoke: Fix crash when auto-sim happens outside of the backed frame range

Apparently, even if the smoke is backed to an external files it still could be
tried to be simulated at the frames outside of the baked range.

Kinda weird feature which isn't really safe, but better not to crash here.

Not totally happy with the code yet, will check with Lukas or Daniel how it
could be improved further.
April 22, 2015, 07:17 (GMT)
Cycles: Typo in triangle storage tooltip
April 20, 2015, 11:36 (GMT)
Cycles: Fix threading issue caused by several nodes sharing the same image
April 20, 2015, 11:27 (GMT)
Cycles: Replace name-based node matching with type-based

This commit replaces name-based node matching in the mesh device update
with check of special type. It is more robust approach for adding new
nodes which could use image slots for storage. it's also adds updates
of environment texture nodes used in bump shader (this was missing in
the original image sync reshuffle commit).
April 20, 2015, 10:07 (GMT)
Merge branch 'master' into cycles_memory_experiments
April 17, 2015, 18:34 (GMT)
Cycles: Add debug option to disable pre-aligned triangles storage

This option makes it so BVH does not use pre-aligned storage for triangle vertex
coordinates which was originally needed for faster coordinate lookup when doing
triangle intersection test. This array gives up to 10% performance comparing to
fetching individual coordinates but it also used 12 floats per BVH primitive,
which might translate to quite huge array in a complex scene.

Intention of this option is to investigate if this is a right direction to make
gooseberry files being able to render on local farm which is not totally great
in memory.

Current approach is not totally cheap, meaning even the case with the storage
enabled might be slower, but currently it's within 1%.
April 16, 2015, 12:42 (GMT)
Merge branch 'master' into cycles_memory_experiments
April 16, 2015, 09:32 (GMT)
Smoke: Fix compilation error with smoke disabled
April 15, 2015, 19:11 (GMT)
Smoke: Fix another crash caused by recent changes

Didn't notice initFie and so are called from constructor for some reason..
April 15, 2015, 17:50 (GMT)
Smoke: Fix wrong bit test in previous commit
April 15, 2015, 15:41 (GMT)
Merge branch 'master' into cycles_memory_experiments
April 15, 2015, 15:35 (GMT)
Smoke: Don't allocate arrays needed for hi-res simulation if smoke is baked to file

There used to be quite huge 3D arrays stored in memory which are only needed for
simulation steps and not used at all if the smoke is baked to file. That memory
is unmanaged by blender and not visible in the info space header and in practice
they could easily be gigabytes for hires smoke.

This commit only addressed hires smoke since it's the more important at this
point, and non-hires smoke wouldn't have such noticeable benefit.

In the case of tornado file it gives around 20% memory saving (which is about
26GB vs. 33GB on later frames of 01.03.02.A3 shot.
April 14, 2015, 12:26 (GMT)
Cycles leaf nodes split: Fix crash when rendering scene without inner nodes
April 14, 2015, 11:19 (GMT)
Merge branch 'master' into cycles_memory_experiments
April 14, 2015, 11:19 (GMT)
Cycles: Split BVH nodes storage into inner and leaf nodes

This way we can get rid of inefficient memory usage caused by BVH boundbox
part being unused by leaf nodes but still being allocated for them. Doing
such split allows to save 6 of float4 values for QBVH per leaf node and 3
of float4 values for regular BVH per leaf node.

This translates into following memory save using 01.01.01.G rendered
without hair:

Device memory size Device memory peak Global memory peak
Before the patch: 4957 5051 7668
With the patch: 4467 4562 7332

The measurements are done against current master. Still need to run speed tests
and it's hard to predict if it's faster or not: on the one hand leaf nodes are
now much more coherent in cache, on the other hand they're not so much coherent
with regular nodes anymore.

Reviewers: brecht, juicyfruit

Subscribers: venomgfx, eyecandy

Differential Revision: https://developer.blender.org/D1236
April 10, 2015, 18:20 (GMT)
Cycles: free mesh BVH after packing the scene BVH

The idea is to avoid having original BVH and BVH packed into scene BVH and hence
reduce memory footprint.

This change doesn't give any measurable differences on it's own, but together
with D1215 and D1217 it gives quite nice results.

Reviewers: campbellbarton, brecht, juicyfruit

Subscribers: eyecandy

Differential Revision: https://developer.blender.org/D1218
April 10, 2015, 18:19 (GMT)
Cycles: Synchronize images after building mesh BVH

This way memory overhead caused by the BVH building is not so visible and peak
memory usage will be reduced.

Implementing this idea is not so straightforward actually, because we need to
synchronize images used for true displacement before meshes. Detecting whether
image is used for true displacement is not so striaghtforward, so for now all
all displacement types will synchronize images used for them.

Such change brings memory usage from 4.1G to 4.0G with the 01_01_01_D scene
from gooseberry. With 01_01_01_G scene it's 7.6G vs. 6.8G (before and after
the patch).

Reviewers: campbellbarton, juicyfruit, brecht

Subscribers: eyecandy

Differential Revision: https://developer.blender.org/D1217
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021