Blender Git Commits

Blender Git "master" branch commits.

Page: 1944 / 5574

November 26, 2017, 15:03 (GMT)
Removing OMP: bmesh_interp.c

Performances tests on this one are quite surprising actually...
Parallelized loop itself is at least 10 times quicker with new BLI_task
code than it was with OMP. And subdividing e.g. a heavy mesh with 3
levels of multires (whole process) takes 8 seconds with new code, while
10 seconds with OMP one. And cherry on top, BLI_task code only uses
about 50% of CPU load, while OMP one was at nearly 100%!

In fact, I suspect OMP code was not properly declaring outside vars,
generating a lot of uneeded locks.

Also, raised the minimum level of subdiv to enable parallelization,
tests here showed that we only start to get significant gain with subdiv
levels of 4, below single threaded one is quicker.
November 26, 2017, 15:03 (GMT)
Removing OMP: nuke last usages in bmesh_mesh.c

Those three ones were actually giving no significant benefits, in fact
even slowing things down in one case compared to no parallelization at
all (in `BM_mesh_elem_table_ensure()`).

Point being, once more, parallelizing *very* small tasks (like index or
flag setting, etc.) is nearly never worth it.

Also note that we could not easlily use per-item parallel looping in
those three cases, since they are heavily relying on valid
loop-generated index (or are doing non-threadable things like allocation
from a mempool)...
Revision 83e80db by Mathieu Menuet / Brecht Van Lommel
November 26, 2017, 14:53 (GMT)
Fix T53349: AO bounces not working correct with OpenCL.
November 26, 2017, 09:03 (GMT)
Cleanup: rename edge -> edges
November 26, 2017, 07:32 (GMT)
Minor improvement to last commit

Don't operate on multiple boundaries at once,
instead keep collapsing from the first selected boundary.
November 26, 2017, 06:43 (GMT)
BMesh: improve edge rotate when edges share faces

Previously outcome depended on order of edges,
now the longest boundary edges are rotated first,
then the faces connected edges.

This gives more predictable results, allowing regions containing
a vertex fan to be rotated onto the next vertex.
November 26, 2017, 02:32 (GMT)
Cleanup: move edge-rotate into own file
Revision 941deac by Joshua Leung
November 26, 2017, 00:06 (GMT)
Fix T53393: Change from 'd' key to 'draw' panel button causes pencil to be activated immediately instead of upon LMB
November 25, 2017, 22:14 (GMT)
Fix for Fix (c): broken atomic lock in own bmesh code.

That was a nasty one, Debug build would never have any issue (even tried
with 64 threads!), but Release build would deadlock nearly immediately,
even with only 2 threads!

What happened here (I think) is that gcc optimizer would generate a
specific path endlessly looping when initial value of virtual_lock was
FLT_MAX, by-passing re-assignment from v_no[0] and the atomic cas
completely. Which would have been correct, should v_no[0] not have been
shared (and modified) by multiple threads. ;)

Idea of that (broken) for loop was to avoid completely calling the
atomic cas as long as v_no[0] was locked by some other thread, but...
Guess the avoided/missing memory barrier was the root of the issue here.

Lesson of the evening: Remember kids, do not trust your compiler to
understand all possible threading-related side effects, and be explicit
rather than elegant when using atomic ops!

Side-effect lesson: do check both release and debug builds when messing
with said atomic ops...
November 25, 2017, 19:28 (GMT)
Fix broken atomic_cas lock in own recent commit in bmesh.

Using atomic cas correctly is really hairy... ;)

In this case, the returned value from cas needs to validate *two*
conditions, it must not be FLT_MAX (which is our 'locked' value and
would mean another thread has already locked it), but it also must be
equal to previously stored value...

This means we need two steps per loop here, hence using a 'for' loop
instead of a 'while' one now.

Note that collisions are (as expected) very rare, less than 1 for 10k
typically, so did not catch the issue initially (also because I was
mostly working with release build to check on performances...).
Revision 9aece5e by Clément Foucault
November 25, 2017, 16:47 (GMT)
Eevee: Fix Defered AO defines
Revision 0c47407 by Clément Foucault
November 25, 2017, 16:47 (GMT)
Eevee: Fix SSS mixing with transparent bsdf
November 25, 2017, 16:47 (GMT)
Eevee: Add SSS support in probes

Previously the lighting of SSS material was not present in reflection probe or irradiance grid.

This does not compute the SSS correctly but at least output the corresponding irradiance power to the correct output.
Revision 974ffaa by Julian Eisel
November 25, 2017, 02:42 (GMT)
Get workspace mode from the workspace view-layer

While this probably isn't the final solution we'll go with, it's nicer
as current one, which was basically broken. So consider this as
temporary solution.

It also allows testing how changing workspace changes mode & active
object, but only by having the workspaces use different view-layers.

Decided to remove WorkSpace.mode for now. If we need to bring it back,
we'll have to version patch it anyway.
November 24, 2017, 21:29 (GMT)
Eevee: SSS: Add separated Albedo option.

This option prevent from automatically blurring the albedo color applied to the SSS.

While this is great for preserving details it can bleed more light onto the nearby objects since the blurring will be done on pure "white" irradiance.
This issue is to be tackled in a separate commit.
November 24, 2017, 21:29 (GMT)
GPUFramebuffer: Bump the framebuffer attachement limit to 5 color textures
November 24, 2017, 15:55 (GMT)
Backgroudn set tests: Correct evaluation order

All depsgraphs are sharing same object state for now, which means doing set
scene evaluation after main scene evaluation will override all modifications
done by the main scene.
November 24, 2017, 15:55 (GMT)
Depsgraph: Tag background scene for base flags update

When setting background object, it might pull new objects in and those objects
will not have proper flags unless on_visible_update() was called afterwards.
November 24, 2017, 15:44 (GMT)
Revert "Depsgraph: Remove legacy re-scheduling code"

This reverts commit 90ff88646d4312823df0610168391ab5ad80675a.

Can not do this yet, if object is not part of graph yet it will not have entry
taq. Need some more generic solution here.
November 24, 2017, 15:34 (GMT)
Depsgraph: Allow tagging whole scene for base flags flush
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021