5 years agoInclude SDL information in system info text.
Sybren A. Stüvel [Wed, 18 Feb 2015 11:07:48 +0000 (12:07 +0100)]
Include SDL information in system info text.

Adds to expose SDL version information.

When SDL is not available on a Linux system, certain Blender features
are silently disabled (like joystick support in the BGE). This change
is the first step towards making it more obvious why something isn't

SDL information is exposed to Python via, in the same way
as OCIO and OIIO information is exposed.

Generated system-info.txt contains SDL loading method (linked or
dynamically loaded by Blender) and SDL version number.

Reviewed by: sergey, campbellbarton

Differential Revision:

5 years agoCleanup: Use bools in BVHParams class.
Thomas Dinges [Wed, 18 Feb 2015 11:05:33 +0000 (12:05 +0100)]
Cleanup: Use bools in BVHParams class.

5 years agoUse clamp to border for brushes or textures can "leak" after rotating
Antony Riakiotakis [Wed, 18 Feb 2015 10:59:55 +0000 (11:59 +0100)]
Use clamp to border for brushes or textures can "leak" after rotating
texture coordinates of brushes (in rake mode).

5 years agoGPencil: RMB menu tools in Outliner works for GP Layers now
Joshua Leung [Wed, 18 Feb 2015 00:01:29 +0000 (13:01 +1300)]
GPencil: RMB menu tools in Outliner works for GP Layers now

It would be even better if these used their own dedicated menu which could include
the protect values too, but this one at least works now

5 years agoGPencil Fix: Added checks to ensure that copy/paste doesn't paste incompatible strokes
Joshua Leung [Tue, 17 Feb 2015 23:08:07 +0000 (12:08 +1300)]
GPencil Fix: Added checks to ensure that copy/paste doesn't paste incompatible strokes

There was a problem with the copy/paste functionality, where it would be possible to
paste 3d strokes into 2D editors, or 2D strokes into the 3D view. The problem with
that though is that these will not show up, and because there's no feedback at the
time, users may end up doing this pasting several times.

5 years agoCycles / BVH: Remove unused temp copy of prim_object.
Thomas Dinges [Wed, 18 Feb 2015 00:12:53 +0000 (01:12 +0100)]
Cycles / BVH: Remove unused temp copy of prim_object.

This will save some memory during BVH Build.

5 years agoQuiet uninitialized mem use for blank cursor
Campbell Barton [Tue, 17 Feb 2015 23:44:28 +0000 (10:44 +1100)]
Quiet uninitialized mem use for blank cursor

harmless but may as well initialize.

5 years agoFix free'd memory use removing constraint
Campbell Barton [Tue, 17 Feb 2015 23:38:21 +0000 (10:38 +1100)]
Fix free'd memory use removing constraint

5 years agoDo not allocate an XRay buffer if compositing is dnot one for offscreen
Antony Riakiotakis [Tue, 17 Feb 2015 22:38:28 +0000 (23:38 +0100)]
Do not allocate an XRay buffer if compositing is dnot one for offscreen

5 years agocleanup & missing break
Campbell Barton [Tue, 17 Feb 2015 22:08:24 +0000 (09:08 +1100)]
cleanup & missing break

5 years agoCycles: Avoid over-allocation in decouple ray marching
Sergey Sharybin [Tue, 17 Feb 2015 20:57:56 +0000 (01:57 +0500)]
Cycles: Avoid over-allocation in decouple ray marching

It could have happened with really long rays and small steps.

Step size will be adjusted to the clamped number of steps in order
to preserve render result compatibility as much as possible.

We should probably reformulate this a bit, so it will give the
same looking results without step tweaks. But this new behavior
should already be much better that it was before.

5 years agoEnsure BLI_stat() return value is checked.
Campbell Barton [Tue, 17 Feb 2015 20:26:10 +0000 (07:26 +1100)]
Ensure BLI_stat() return value is checked.

also add function attrs on BLI_fileops to ensure they're used correctly.

5 years agoAmend to previous own Fix T43684: only use hack on WIN32, and use case-insensitive...
Bastien Montagne [Tue, 17 Feb 2015 20:08:59 +0000 (21:08 +0100)]
Amend to previous own Fix T43684: only use hack on WIN32, and use case-insensitive comparison.

Thanks to Campbell for the headup.

5 years agoFix T38808: Re-opening an image makes absolute
Campbell Barton [Tue, 17 Feb 2015 19:38:10 +0000 (06:38 +1100)]
Fix T38808: Re-opening an image makes absolute

5 years agoFix T43708: Wrong manipulator in individual origin
Campbell Barton [Tue, 17 Feb 2015 19:08:59 +0000 (06:08 +1100)]
Fix T43708: Wrong manipulator in individual origin

Manipulator and actual behavior were out-of-sync with a single edge selected.

5 years agoBMesh: calc_manipulator_stats can only check verts
Campbell Barton [Tue, 17 Feb 2015 18:39:02 +0000 (05:39 +1100)]
BMesh: calc_manipulator_stats can only check verts

Code assumed selection wasn't correctly flushed, which we ensure now.

5 years agoTweak to new UIList bookmarks & co: extend up to ten entries before using scrollbars.
Bastien Montagne [Tue, 17 Feb 2015 18:25:52 +0000 (19:25 +0100)]
Tweak to new UIList bookmarks & co: extend up to ten entries before using scrollbars.

But again, what we really need to fix is UI saving for that temp area...

5 years agoCleanup: Add comment about light_p being modified in one case.
Thomas Dinges [Tue, 17 Feb 2015 18:24:37 +0000 (19:24 +0100)]
Cleanup: Add comment about light_p being modified in one case.

5 years agoCycles: Cleanup after recent changes
Sergey Sharybin [Tue, 17 Feb 2015 18:21:41 +0000 (23:21 +0500)]
Cycles: Cleanup after recent changes

5 years agoFix T43684 (again!): Mighty Windows thinks it’s perfectly sensible to block everyone...
Bastien Montagne [Tue, 17 Feb 2015 18:11:47 +0000 (19:11 +0100)]
Fix T43684 (again!): Mighty Windows thinks it’s perfectly sensible to block everyone during 5 seconds for a mere stat() call on "A:\" path...

For now, just always consider those floppy entries ("A:\" and "B:\") as valid... sigh.

5 years agoSome tweaks to last commit, this is better.
Thomas Dinges [Tue, 17 Feb 2015 18:03:22 +0000 (19:03 +0100)]
Some tweaks to last commit, this is better.

5 years agoCycles: Fix for hair transmission BSDF not returning proper label
Sergey Sharybin [Tue, 17 Feb 2015 17:34:48 +0000 (22:34 +0500)]
Cycles: Fix for hair transmission BSDF not returning proper label

5 years agoCleanup: Deduplicate area light sampling code.
Thomas Dinges [Tue, 17 Feb 2015 17:39:03 +0000 (18:39 +0100)]
Cleanup: Deduplicate area light sampling code.

5 years agoFix crash when rendering to offscreen OpenGL, fix scons build
Antony Riakiotakis [Tue, 17 Feb 2015 17:35:56 +0000 (18:35 +0100)]
Fix crash when rendering to offscreen OpenGL, fix scons build

5 years agoCompositing works with X-Ray.
Antony Riakiotakis [Tue, 17 Feb 2015 17:08:28 +0000 (18:08 +0100)]
Compositing works with X-Ray.

Basically, before drawing X-Rays, we now bind a second depth buffer.
After drawing XRays, we do an extra resolve pass where we overwrite the
non-XRay depth buffer in pixels where the depth is not maximum (which
means background pixel, since depth is cleared before drawing X-Ray

This ensures both scene and X-Rays keep their depth values and are ready
for compositing. Well, the odd effect due to depth discontinuities can be
expected, and X-Rays are a bit more expensive (extra buffer + resolve pass)
but at least X-Rays won't invalidate depth values anymore. Whee!

5 years agoCycles: Small tweaks for Henyey Greenstein closure code.
Thomas Dinges [Tue, 17 Feb 2015 16:44:32 +0000 (17:44 +0100)]
Cycles: Small tweaks for Henyey Greenstein closure code.

* Avoid duplicative fabs(g) check in sample code.
* Avoid dot product in eval code.

Helps like ~1% when Scatter Anisotropy is 0.

5 years agoFix for particle path drawing with black tips.
Lukas Tönne [Tue, 17 Feb 2015 14:20:51 +0000 (15:20 +0100)]
Fix for particle path drawing with black tips.

The last path segment can be shortended due to randomized path length.
In that case the last segment's color vector was not defined.

5 years agoQuick fix/hack for too small 'operator' panel in filebrowser
Bastien Montagne [Tue, 17 Feb 2015 14:15:55 +0000 (15:15 +0100)]
Quick fix/hack for too small 'operator' panel in filebrowser

Real issue is that temp area used to draw modal filebrowser is never saved,
so non of UI 'edits' (like UIList resize, regions resize, panels reorder, etc.)
are ever saved. Should be addressed, but no time for that currently.

5 years agoGPencil: On the fly switching between Drawing and Erasing when using "Continuous...
Joshua Leung [Tue, 17 Feb 2015 14:15:56 +0000 (03:15 +1300)]
GPencil: On the fly switching between Drawing and Erasing when using "Continuous Drawing"

It is now possible to switch between drawing and erasing strokes when in
the modal "Continous Drawing" sessions. This makes the drawing experience
just a little more fluid, saving some unncessary steps to get out of
the editing mode to activate the intended tool.

TODO: Is there interest for tablet support for this too?

5 years agoCycles: Remove empty closure blur code and the corresponding entries in the switch.
Thomas Dinges [Tue, 17 Feb 2015 12:43:12 +0000 (13:43 +0100)]
Cycles: Remove empty closure blur code and the corresponding entries in the switch.

Most compilers will probably optimize that out, but I still don't see a reason to keep it.

5 years agoCycles: Make blender session aware of rendering from command line
Sergey Sharybin [Tue, 17 Feb 2015 11:23:03 +0000 (16:23 +0500)]
Cycles: Make blender session aware of rendering from command line

This way we can do some more aggressive policy about releasing temporary
data during synchronization.

5 years agoFix T43706: Creating a directory in the file browser (by typing it in the file path...
Sergey Sharybin [Tue, 17 Feb 2015 10:50:12 +0000 (15:50 +0500)]
Fix T43706: Creating a directory in the file browser (by typing it in the file path) crashes Blender

Issue was caused by 2e9105c, free() does nothing if pointer is NULL, but guarded
allocator expects you to not free NULL.

5 years agoFix T43697, grid drawing over wires and grease pencil. Props to Julian
Antony Riakiotakis [Tue, 17 Feb 2015 10:37:20 +0000 (11:37 +0100)]
Fix T43697, grid drawing over wires and grease pencil. Props to Julian
for figuring out a simple solution to that :)

5 years agoFix T43685: New pointiness attribute error with auto-smooth enabled
Sergey Sharybin [Tue, 17 Feb 2015 08:49:11 +0000 (13:49 +0500)]
Fix T43685: New pointiness attribute error with auto-smooth enabled

Simple fix: all vertex attributes should be filled in before split.

5 years agoCycles: Minor code cleanup in recent attributes changes
Sergey Sharybin [Tue, 17 Feb 2015 08:46:25 +0000 (13:46 +0500)]
Cycles: Minor code cleanup in recent attributes changes

5 years agoetch-a-ton: off by one error
Campbell Barton [Tue, 17 Feb 2015 06:12:19 +0000 (17:12 +1100)]
etch-a-ton: off by one error

was writing past the buffer when inserting strokes

5 years agoetch-a-ton: fix crash selecting strokes
Campbell Barton [Tue, 17 Feb 2015 05:49:30 +0000 (16:49 +1100)]
etch-a-ton: fix crash selecting strokes

5 years agoetch-a-ton: fix uninitialized memory use
Campbell Barton [Tue, 17 Feb 2015 05:48:53 +0000 (16:48 +1100)]
etch-a-ton: fix uninitialized memory use

5 years agoHide 3D Cursor in Paint Modes (with exceptions)
Julian Eisel [Tue, 17 Feb 2015 02:26:03 +0000 (03:26 +0100)]
Hide 3D Cursor in Paint Modes (with exceptions)

= Hide 3D Cursor in Paint Modes (with exceptions)

In paint modes, the 3D Cursor mostly is rather useless so it's more annoying than useful. This patch aims to hide the cursor in cases it's not used.

Included exceptions (cases where cursor is drawn in paint modes):
* Active object is in weight paint mode and a selected bone in pose mode can be found
* Clone brush (only if //Clone from paint slot// is disabled)

There might be more exceptions where the cursor should be shown in paint modes, but those are all I could find for now. Feel free to hint me for more.

Note: After D1110 was rejected, Campbell and me discussed this a bit more on IRC and agreed that this behaviour might be a good solution.

Reviewers: psy-fi, campbellbarton

Reviewed By: psy-fi, campbellbarton

Projects: #user_interface

Differential Revision:

5 years agoRNA API: reuse property lookups
Campbell Barton [Tue, 17 Feb 2015 02:09:21 +0000 (13:09 +1100)]
RNA API: reuse property lookups

5 years agoFix for another missing update from GPencil in Outliner
Julian Eisel [Tue, 17 Feb 2015 01:11:17 +0000 (02:11 +0100)]
Fix for another missing update from GPencil in Outliner

5 years agoFix T43669: Grease Pencil visibility toggle not working in Outliner
Julian Eisel [Tue, 17 Feb 2015 01:08:12 +0000 (02:08 +0100)]
Fix T43669: Grease Pencil visibility toggle not working in Outliner

5 years agoFix FileSel globbing including dirs & ".."
Campbell Barton [Tue, 17 Feb 2015 01:01:47 +0000 (12:01 +1100)]
Fix FileSel globbing including dirs & ".."

5 years agoRevert "Fix file size not drawn using Link/Append"
Campbell Barton [Tue, 17 Feb 2015 00:32:09 +0000 (11:32 +1100)]
Revert "Fix file size not drawn using Link/Append"

This reverts commit 4ca4f04c75c456d3614855ebaa70bab9a92eb36a.

Was running an fs-stat on redraw, on every file! (every mouse motion!).
Could become very slow on network-fs

also caused crash (T43631)

5 years agoassert when BLI_exists is called with NULL path
Campbell Barton [Tue, 17 Feb 2015 00:31:04 +0000 (11:31 +1100)]
assert when BLI_exists is called with NULL path

5 years agoSubsurf: Use guarded allocator for non-arena CCG
Sergey Sharybin [Mon, 16 Feb 2015 22:37:14 +0000 (03:37 +0500)]
Subsurf: Use guarded allocator for non-arena CCG

Our new guarded allocator implementation has much smaller memory
block size overhead and doesn't have any locks now. So in order
to make fuller track of what's happening in blender and avoid
confusion why certain circumstances reports much less memory than
others we'll now switch to guarded allocator.

This was actually one of the biggest reasons of the confusion in
the recent memory usage investigation. There's still some overhead
is happening due to non-freeing nature of arena allocator but the
things are not nearly as bad as they looked before: memory overhead
is measured in tens of megabytes, not hundreds as it looked before.

Plus with some smarter allocation policy we can almost eliminate this

5 years agoFileSpace selection didn't call op.check sometimes
Campbell Barton [Mon, 16 Feb 2015 21:52:19 +0000 (08:52 +1100)]
FileSpace selection didn't call op.check sometimes

(de)select all & globbing didnt run operators check callback.

D867 by @igel with edits

5 years agoCleanup: Update comments and make it more clear what volume interpolation is for.
Thomas Dinges [Mon, 16 Feb 2015 21:10:38 +0000 (22:10 +0100)]
Cleanup: Update comments and make it more clear what volume interpolation is for.

5 years agoFix bake action visual-keying option
Campbell Barton [Mon, 16 Feb 2015 20:16:59 +0000 (07:16 +1100)]
Fix bake action visual-keying option

Disabling did nothing

5 years agoUI messages fixes and cleanup.
Bastien Montagne [Mon, 16 Feb 2015 19:00:20 +0000 (20:00 +0100)]
UI messages fixes and cleanup.

5 years agoFix T43684: File Browser is unusable on Windows Machines (do not BLI_is_dir() in...
Bastien Montagne [Mon, 16 Feb 2015 14:48:37 +0000 (15:48 +0100)]
Fix T43684: File Browser is unusable on Windows Machines (do not BLI_is_dir() in draw loop!)

Did not had any issue on linux, but looks like on some windows can slow things as Hell.
Or maybe just the presence of some network FS?

Anyway, not a good idea, so now fsmenu entries' valid status is stored and only evaluated
on startup (reading of bookmarks & co) and when opening file browser (refresh, like
for system bookmarks).

5 years agoCleanup: Remove unused code from hair BSDF.
Thomas Dinges [Mon, 16 Feb 2015 14:16:40 +0000 (15:16 +0100)]
Cleanup: Remove unused code from hair BSDF.

5 years agoFix T43689, viewport compositing does not respect alpha settings for
Antony Riakiotakis [Mon, 16 Feb 2015 13:42:36 +0000 (14:42 +0100)]
Fix T43689, viewport compositing does not respect alpha settings for

For SSAO supporting this is no problem, for DOF we would ideally do
blurred alpha, but alpha channel in blurred buffers is occupied by coc
field, so use original color alpha instead. It's not entirely correct
but it's better than nothing.

5 years agoTracking: Expose Filter Tracks operators to the Cleanup panel
Sergey Sharybin [Mon, 16 Feb 2015 12:14:29 +0000 (17:14 +0500)]
Tracking: Expose Filter Tracks operators to the Cleanup panel

Not totally happy with this, but it's better than nothing for until
we've got real outlier detection. Also made it more cleat how exactly
filtering happens, so users don't expect something the operator is not
intended to do.

5 years agoCycles: Use some more bools in microfacet code.
Thomas Dinges [Mon, 16 Feb 2015 11:31:46 +0000 (12:31 +0100)]
Cycles: Use some more bools in microfacet code.

5 years agoExtended RNA support for mesh customdata property layers.
Lukas Tönne [Sun, 15 Feb 2015 09:33:54 +0000 (10:33 +0100)]
Extended RNA support for mesh customdata property layers.

Support for user-defined customdata layers (named int, float, string
layers) was limited to polygon customdata. This is not accessible in
cycles because only tessfaces are used there. Furthermore the polygon
attributes were simply described as MeshFloatProperty, MeshIntProperty,
MeshStringProperty, omitting the distinction by element type.

The patch only adds vertex attributes so far. However, the code now
explicitly defines polygon and vertex attributes, so adding edges, loops
and tessfaces is much easier should the need arise.

Problem is that the RNA definition, which is already much more
complicated than the basic DNA/BKE definition of custom properties, now
becomes extremely bloated and cumbersome. A simpler solution would be
preferable but may not be possible within the constraints of RNA.

5 years agoCycles: Correction for C++11 compilation error after recent vector changes
Sergey Sharybin [Mon, 16 Feb 2015 10:38:13 +0000 (15:38 +0500)]
Cycles: Correction for C++11 compilation error after recent vector changes

5 years agoEnsure CMake finds SDL 2.0
Sybren A. Stüvel [Mon, 16 Feb 2015 07:22:26 +0000 (08:22 +0100)]
Ensure CMake finds SDL 2.0

CMake 2.8 doesn't search /usr/include/SDL2, which is the include directory
for SDL 2.x on Ubuntu Linux (and possibly others). This results in SDL 1.2
headers being found when WITH_SDL_DYNLOAD=OFF, and our shipped SDL 2.0
headers when WITH_SDL_DYNLOAD=ON. This patch ensures that in both
cases the correct SDL headers are used.

Reviewers: sergey, campbellbarton

Projects: #bf_blender

Differential Revision:

5 years agoVert/Edge Slide: better UV interpolation
Campbell Barton [Mon, 16 Feb 2015 07:49:18 +0000 (18:49 +1100)]
Vert/Edge Slide: better UV interpolation

Ignore faces which the sliding vert is outside of.

5 years agoMath Lib: add dist_signed_squared_to_corner_v3v3v3
Campbell Barton [Mon, 16 Feb 2015 07:47:15 +0000 (18:47 +1100)]
Math Lib: add dist_signed_squared_to_corner_v3v3v3

Can be used to check if a point is inside the 2-planes defined by a face-corner.

5 years agoCorrect crash /w vertex slide with no faces
Campbell Barton [Mon, 16 Feb 2015 02:41:46 +0000 (13:41 +1100)]
Correct crash /w vertex slide with no faces

Error in recent commit

5 years agocleanup: split VSE view-size into own function
Campbell Barton [Mon, 16 Feb 2015 02:19:22 +0000 (13:19 +1100)]
cleanup: split VSE view-size into own function

5 years agoFix T43681: VSE draw glitch with no-display
Campbell Barton [Mon, 16 Feb 2015 01:57:29 +0000 (12:57 +1100)]
Fix T43681: VSE draw glitch with no-display

Missed clearning the backdrop

5 years agoBMesh: Connect path, use select order
Campbell Barton [Fri, 6 Feb 2015 04:46:38 +0000 (15:46 +1100)]
BMesh: Connect path, use select order

Could connect a pair of verts previously,
now connect all vertices along the path, running a second time closes the loop.

Can also be used for without faces to connect edges between selected points.

5 years agoCompilation error fix for strict compiler flags
Sergey Sharybin [Sun, 15 Feb 2015 18:12:54 +0000 (23:12 +0500)]
Compilation error fix for strict compiler flags

5 years agoCycles: Hopefully compilation error fix for OSX
Sergey Sharybin [Sun, 15 Feb 2015 18:11:33 +0000 (23:11 +0500)]
Cycles: Hopefully compilation error fix for OSX

5 years agoFix T43671: Playing with Mix Factor of Data Transfer Modifier Is Overwritting Data...
Bastien Montagne [Sun, 15 Feb 2015 17:46:46 +0000 (18:46 +0100)]
Fix T43671: Playing with Mix Factor of Data Transfer Modifier Is Overwritting Data of Base Mesh

The issue was actually affecting all data types that are not regular CDLayer ones, since by default
DerivedMesh references mesh data (verts, edges, etc. - modifying custom normals often implies
modifying edges' sarpness too).
Modfying edge/face sharpness etc. could directly affect the mesh in this case, **bad**!

So we detect whether we are copying data types that may affect non-CDlayers data, and whether
verts array of org dm is same as mesh one - in which case we copy the DM. This avoids
useless copying in most cases.

Note Edit Normals was quite obviously suffering the same issue.

5 years agoCleanup of SpaceFile, from asset-experiments branch mostly.
Bastien Montagne [Sun, 15 Feb 2015 15:26:41 +0000 (16:26 +0100)]
Cleanup of SpaceFile, from asset-experiments branch mostly.

Helps keeping diff with branch relevant and clean...

5 years agoFix for previous commit, sorry for the noise.
Bastien Montagne [Sun, 15 Feb 2015 14:55:13 +0000 (15:55 +0100)]
Fix for previous commit, sorry for the noise.

5 years agoCleanup: BLI_listdir (direntry): get rid of usage of raw malloc/free here.
Bastien Montagne [Sun, 15 Feb 2015 14:04:28 +0000 (15:04 +0100)]
Cleanup: BLI_listdir (direntry): get rid of usage of raw malloc/free here.

No reason at all not to use MEM_xxx as everywhere else, especially confusing
when members of direntry **are** MEM_-allocated (relname, etc.)!

5 years agoPossible todo notes for more polished UI?
Joshua Leung [Sun, 15 Feb 2015 12:20:53 +0000 (01:20 +1300)]
Possible todo notes for more polished UI?

5 years agoOutliner: "Purge All" function for Outliner in "Orphaned Datablocks" mode
Joshua Leung [Sun, 15 Feb 2015 12:15:58 +0000 (01:15 +1300)]
Outliner: "Purge All" function for Outliner in "Orphaned Datablocks" mode

Many users have been requesting a way to remove unused datablocks from the file/session
"without closing and reopening" Blender (or at least that's the impression I'm getting).

This commit adds a new operator (exposed as the "Purge All" button in the header of
the "Orphaned Datablocks" mode in the Outliner, which seems to be the logical
place for this) for doing so. It does so by wrapping up the save and "revert"
(i.e. reload the saved file from disk, without needing to quit Blender) operators
along with a confirmation prompt for good measure.

* Ultimately, we still cannot really cleanly delete any datablocks from the current
  session outright without reloading the file/data at some point. Thus, we do need
  to reload the file again before it can be used.
* This does mean that this operation is irreversible. Notably, Undo history is lost
  is doing this operation. Hence the warnings...   (Then again, undo/redo actually
  reloads the entire scene DB from memory, so it's not anything uncommon ;)

Other Notes:
* The addition of this operator brings this mode more into line with being a kind of
  "Trashcan" place, with this new operator being the manual "Empty Trash" button.
  If the "Orphaned Datablocks" name is too obscure, maybe we could rename this
  mode to "Trash" or something similar?

5 years agoCode Cleanup: Reshuffle libraries and orphaned datablocks views to a more appropriate...
Joshua Leung [Sun, 15 Feb 2015 11:25:55 +0000 (00:25 +1300)]
Code Cleanup: Reshuffle libraries and orphaned datablocks views to a more appropriate place in the file

5 years agoOutliner: Do not show RMB menu for "ID Base" entries
Joshua Leung [Sun, 15 Feb 2015 11:19:47 +0000 (00:19 +1300)]
Outliner: Do not show RMB menu for "ID Base" entries

5 years agoOutliner: Use restriction columns in "Orphaned Datablocks" view to manage usercounts
Joshua Leung [Sun, 15 Feb 2015 11:10:33 +0000 (00:10 +1300)]
Outliner: Use restriction columns in "Orphaned Datablocks" view to manage usercounts

When in "Orphaned Datablocks" mode, the restriction columns are used to display
usercount indicators and toggles to manage whether datablocks get saved or not.

* The first column shows an icon to indicate whether that datablock is going to get
  saved. A tick indicates the datablock will be saved, while a cross indicates the
  opposite. Clicking on this changes whether the datablock will get saved.

* The second column shows the usercount.

* The third column shows whether the datablock has a fake user.

* The second and third columns are pretty much redundant (functionally speaking).
  While it is possible to also toggle fake users by clicking in the third column,
  its role here is more as information for power users (and hopefully to allow others
  to connect the relationship between the saved/not saved status and fake users)

* I'm not sure whether the use of the X here for the "not saved" state stands out enough
  to draw user's attention to items which are "in the danger zone".

5 years agoOutliner: Added new mode for displaying "orphaned" datablocks
Joshua Leung [Sun, 15 Feb 2015 08:55:49 +0000 (21:55 +1300)]
Outliner: Added new mode for displaying "orphaned" datablocks

Orphaned datablocks are those which have either:
* 0 users
* A "fake" user only

In the case of the former, they will be quietly discarded from the file on the next
save + reload. Hence, it is helpful to have a view where you can confirm which ones
fall into this category and might be worth saving.

We also include datablocks with a fake user only so that datablocks given a user
above can have that easily turned off again (in case the user makes a mistake).
Another benefit of showing these is that it become easier to remove fake users from
datablocks you no longer want retained without having to hunt for them.

5 years agoRevert/Remove "Auto View" Feature
Julian Eisel [Sun, 15 Feb 2015 03:29:11 +0000 (04:29 +0100)]
Revert/Remove "Auto View" Feature

Turned out that I misinterpreted the feature request, plus there are some
minor issues with the commit that would need to be corrected.
After all, I decided to just remove it again as it seems to not be really
useful for the users.

5 years agomissed this second last commit
Campbell Barton [Sun, 15 Feb 2015 03:10:46 +0000 (14:10 +1100)]
missed this second last commit

5 years agomathutils: Implement __hash__() functions
Campbell Barton [Sat, 14 Feb 2015 23:46:14 +0000 (10:46 +1100)]
mathutils: Implement __hash__() functions

- all mathutils types
- only works on frozen data (so vectors can be used in sets/dict keys)
- uses same method as CPython, (matches hashing a tuple)

D1104 by @juicyfruit with own modifications

5 years agomathutils: add freeze() method, is_frozen attr
Campbell Barton [Sun, 15 Feb 2015 00:26:31 +0000 (11:26 +1100)]
mathutils: add freeze() method, is_frozen attr

This allows you to make any mathutils object immutable.

5 years agomathutils: remove redundant read callback
Campbell Barton [Sun, 15 Feb 2015 00:46:43 +0000 (11:46 +1100)]
mathutils: remove redundant read callback

5 years agomathutils: avoid extra alloc for Vector.lerp
Campbell Barton [Sun, 15 Feb 2015 00:31:39 +0000 (11:31 +1100)]
mathutils: avoid extra alloc for Vector.lerp

5 years agoFix crash setting Euler.order to a non-string
Campbell Barton [Sun, 15 Feb 2015 00:37:23 +0000 (11:37 +1100)]
Fix crash setting Euler.order to a non-string

5 years agoFix T42919 & T42218: BGE: Python-driven armature animation got buggy
Sybren A. Stüvel [Sun, 15 Feb 2015 01:00:25 +0000 (02:00 +0100)]
Fix T42919 & T42218: BGE: Python-driven armature animation got buggy

Due to changes in the way animation updates were handled,
BL_ArmatureObjects were no longer registering to KX_Scene as animated.

Moguri says: It might have been relying on the deformer update which
moved rom being called on every object in the render step. Now
armature deformers are only updated if they need to be.

Fix T42919 & Fix T42218

5 years agoCycles: Fix wrong attribute count calculation in prevous commit
Sergey Sharybin [Sat, 14 Feb 2015 21:55:18 +0000 (02:55 +0500)]
Cycles: Fix wrong attribute count calculation in prevous commit

The workaround for generated texture coordinates is to be done before
calculating number of elements for attribute, otherwise counter wouldn't
include those attributes.

5 years agoCycles: Optimize memory usage when creating mesh attributes
Sergey Sharybin [Sat, 14 Feb 2015 15:23:08 +0000 (20:23 +0500)]
Cycles: Optimize memory usage when creating mesh attributes

The idea behind the change is to pre-allocate attribute arrays in advance,
which avoids re-allocation of arrays later for each of meshes being handled.

This reduces peak memory used by Cycles database from 1.3G to 0.9G for
victor.blend from Gooseberry.

It doesn't mean every file will benefit from this change since peak memory
usage is happening in the different places of the rendering code.

Also, unfortunately, attributes export might not cause the peak of render
preparation stage. That said, it's actually object_to_mesh() which causes
the memory to peak in the same test file. So we really need to optimize that
part first in order to get visible results for artists. But in any case it's
now quite easy to track hotspots in Cycles itself which is good.

5 years agoCycles: Add ifdef switch to use blender's guardedalloc for vector allocation
Sergey Sharybin [Sat, 14 Feb 2015 18:26:07 +0000 (23:26 +0500)]
Cycles: Add ifdef switch to use blender's guardedalloc for vector allocation

It's actually a bad level call, but it's inside ifdef block and disabled by
default and only intended to be used for development purposes.

Main idea of this change is to combine statistics coming from Cycles and
Blender during scene synchronization step, to see if further changes are
actually reducing memory footprint.

5 years agoCycles: Add utility method to vector which totally frees memory used the vector
Sergey Sharybin [Sat, 14 Feb 2015 15:49:20 +0000 (20:49 +0500)]
Cycles: Add utility method to vector which totally frees memory used the vector

The method is called vector::free_memory(). Use with care since it'll invalidate
all the pointers to vector memory, all iterators and so on.

Currently unused, but might become handy when clearing unused data.

5 years agoCycles: Report system memory usage and peak after scene device update
Sergey Sharybin [Sat, 14 Feb 2015 14:39:14 +0000 (19:39 +0500)]
Cycles: Report system memory usage and peak after scene device update

This only happens when built with WITH_CYCLES_DEBUG flag, memory statistics
is coming from guarded STL allocator.

5 years agoCycles: Implement guarded allocator for STL classes
Sergey Sharybin [Sat, 14 Feb 2015 13:03:39 +0000 (18:03 +0500)]
Cycles: Implement guarded allocator for STL classes

The commit implements a guarded allocator which can be used by STL classes
such as vectors, maps and so on. This allocator will keep track of current
and peak memory usage which then can be queried.

New code for allocator is only active when building Cycles with debug flag
(WITH_CYCLES_DEBUG) and doesn't distort regular builds too much.

Additionally now we're using own subclass of std::vector which allows us
to implement shrink_to_fit() method which would ensure capacity of the
vector is as big as it should be (without this making vector smaller will
still use all previous memory allocated).

5 years agoCycles: Replace own aligned allocator with system one
Sergey Sharybin [Sat, 14 Feb 2015 12:29:47 +0000 (17:29 +0500)]
Cycles: Replace own aligned allocator with system one

This replaces our own implementation of aligned malloc with system calls,
which depends on which operation system you're on.

This is probably really minor noticeable change, but in the same time it
might reduce amount of wasted memory.

5 years agoOutliner: Toggle restrict buttons only for selectable child objects
Julian Eisel [Sat, 14 Feb 2015 20:54:31 +0000 (21:54 +0100)]
Outliner: Toggle restrict buttons only for selectable child objects

D404 by @rupp with minor edits by me.

5 years agoCleanup: Comment block for sse helpers.
Thomas Dinges [Sat, 14 Feb 2015 19:57:21 +0000 (20:57 +0100)]
Cleanup: Comment block for sse helpers.

5 years agoCycles: Small improvement for volume render (decoupled)
Thomas Dinges [Sat, 14 Feb 2015 19:44:30 +0000 (20:44 +0100)]
Cycles: Small improvement for volume render (decoupled)

Simplify branching here a bit, helps ~3% in volume_light_sampling.blend (Branched MIS scene).

5 years agoCycles: Fix compilation error of Cycles standalone with Libmv disabled
Sergey Sharybin [Sat, 14 Feb 2015 16:32:38 +0000 (21:32 +0500)]
Cycles: Fix compilation error of Cycles standalone with Libmv disabled

5 years agoRevert "Fix T43471, based on patch submitted by @sean_loh."
Lukas Tönne [Sat, 14 Feb 2015 15:40:57 +0000 (16:40 +0100)]
Revert "Fix T43471, based on patch submitted by @sean_loh."

This reverts commit b2b54b0902045ec4f0c1a4cae3209be863878f5b.

The patch breaks particle distribution even in simple cases, not worth
doing this for keeping a hackish loophole open.

5 years agoobject drawing: only use halo-draw in object mode
Campbell Barton [Sat, 14 Feb 2015 11:26:20 +0000 (22:26 +1100)]
object drawing: only use halo-draw in object mode

5 years agoBring copy/free operations into line with changes in previous commit
Joshua Leung [Sat, 14 Feb 2015 04:42:57 +0000 (17:42 +1300)]
Bring copy/free operations into line with changes in previous commit

5 years agoBugfix: Referencing actions from Action Actuator was not setting a user
Joshua Leung [Fri, 13 Feb 2015 13:48:36 +0000 (02:48 +1300)]
Bugfix: Referencing actions from Action Actuator was not setting a user

This reverts the change made in 8872cba7e956a9d9a840e55e5323945497524795
which was contributing to actions being lost in some cases [1], even when
they were assigned to those actuaters, which needed them to be able to
function. Now there's one less case where users are needed but were missing :)

Note that this still doesn't solve the core issue where nothing is responsible
for associating actions created for a particular datablock (and not currently
being used in its active action slot, or in the NLA stack) with that datablock.
That issue is the cause of most action disappearances as well as for other problems
(such as renaming bones being unable to fix unreferenced/unused actions) where there
are diifferences between users' mental models and the data model. Proper fixes are
coming soon (restoring fake users here isn't a proper fix, as it only masks the
fundamental mismatch/problem here).


5 years agoCMake: Enable JeMalloc by default
Sergey Sharybin [Sat, 14 Feb 2015 10:13:48 +0000 (15:13 +0500)]
CMake: Enable JeMalloc by default

It's really handy to have blender linked against jemalloc because of
much better memory fragmentation handling by that library.

To be noted: if jemalloc library is not found it'll be disabled with
message about that, no compilation error should happen.