5 years agoFix T42984 detail flood fill not respecting mask values for smooth/sharp
Antony Riakiotakis [Wed, 31 Dec 2014 12:11:42 +0000 (13:11 +0100)]
Fix T42984 detail flood fill not respecting mask values for smooth/sharp

Issue here is that brush curve could return negative values. This would
result in overflow of mask values. Those were not visible during real
time preview because result would be clamped.

We had two functions in the code, one of which allowed negatives but I
don't think that we really want that, users have no control over the
negative values at all anyway.

Thanks to the reporter, Leon Cheung for figuring out the issue :)

5 years agoHopefully fix compilation error after recent update
Sergey Sharybin [Wed, 31 Dec 2014 11:34:22 +0000 (16:34 +0500)]
Hopefully fix compilation error after recent update

5 years agoLibmv: Update to latest upstream version
Sergey Sharybin [Wed, 31 Dec 2014 10:55:00 +0000 (15:55 +0500)]
Libmv: Update to latest upstream version

Main purpose of this is to bring new gflags library which is more likely
to have a fix for undefined order of static variables initialization and
also to bring new glog where some compilation error are fixed (which are
only visible with more strict checks with clang and c++11 enabled).

5 years agoJoystick: Suppress add/remove device events
Sergey Sharybin [Wed, 31 Dec 2014 09:56:42 +0000 (14:56 +0500)]
Joystick: Suppress add/remove device events

Previously they'll be printed to the console as a totally unknown events
together claim this shouldn't have happened which is just misleading.

5 years agoCompilation error fix for strict flags
Sergey Sharybin [Wed, 31 Dec 2014 09:50:27 +0000 (14:50 +0500)]
Compilation error fix for strict flags

5 years agoRemove executable flag from the build configuration files
Sergey Sharybin [Wed, 31 Dec 2014 09:05:53 +0000 (14:05 +0500)]
Remove executable flag from the build configuration files

They're not intended to be executed directly and seems mode change happened
by accident.

Setting -x for this files to avoid possible incidents by trying to run this
files in shell.

5 years agoOperator to duplicate the active Grease Pencil layer
Joshua Leung [Wed, 31 Dec 2014 01:20:44 +0000 (14:20 +1300)]
Operator to duplicate the active Grease Pencil layer

TODO: this needs a proper "duplicate" icon, without the "ID" label

5 years agoFix an odd line that slipped in my ghost_hack_first_file commit
Jens Verwiebe [Tue, 30 Dec 2014 17:31:25 +0000 (18:31 +0100)]
Fix an odd line that slipped in my ghost_hack_first_file commit

5 years agoFix issue in separate rake control commit:
Antony Riakiotakis [Tue, 30 Dec 2014 17:06:59 +0000 (18:06 +0100)]
Fix issue in separate rake control commit:

Mask slot still depended on regular slot to check some capabilities.
Some angle capabilities now only depend on the texture slot, not the
brush, so separate them and use the slot where appropriate.

5 years agoFix T42780: Object linking allows to have linked armatures in pose mode
Sergey Sharybin [Tue, 30 Dec 2014 16:33:15 +0000 (21:33 +0500)]
Fix T42780: Object linking allows to have linked armatures in pose mode

This isn't so bad for until one goes re-posing the armature and then uses undo.

It is the same issue as with edit mode which was solved back in the days.

5 years agoPyAPI: geometry.normal, support polygons
Campbell Barton [Tue, 30 Dec 2014 11:47:56 +0000 (22:47 +1100)]
PyAPI: geometry.normal, support polygons

Previously this only supported tri/quads,
now arbitrary size poly lines are supported.

5 years agoPyAPI: allow non-vector args for geometry module
Campbell Barton [Tue, 30 Dec 2014 10:50:47 +0000 (21:50 +1100)]
PyAPI: allow non-vector args for geometry module

Previously only vector args were accepted,
now allow generic sequence of numbers.

Was annoying to create vectors just to pass in args.

5 years agoFix possible NULL pointer dereference
Campbell Barton [Mon, 29 Dec 2014 20:37:59 +0000 (07:37 +1100)]
Fix possible NULL pointer dereference

also remove redundant NULL check

5 years agoI18n scripts: minor spelling exceptions update.
Bastien Montagne [Mon, 29 Dec 2014 20:55:51 +0000 (21:55 +0100)]
I18n scripts: minor spelling exceptions update.

5 years agoCycles: Fix MSVC which desn't like condition to be split by preprocessor
Sergey Sharybin [Mon, 29 Dec 2014 16:10:37 +0000 (21:10 +0500)]
Cycles: Fix MSVC which desn't like condition to be split by preprocessor

5 years agoFix stupid handling of 'Object.matrix_local' in RNA.
Bastien Montagne [Mon, 29 Dec 2014 14:23:12 +0000 (15:23 +0100)]
Fix stupid handling of 'Object.matrix_local' in RNA.

The getter of this matrix (actually, `BKE_object_matrix_local_get()`) was only correct
in case of pure-object parenting, bone parenting and such did not gave valid results.

Also cleaned up a bit setter code, was using as temp storage ob->obmat itself,
which is supposed to be a world matrix!

Reviewers: campbellbarton

Reviewed By: campbellbarton

Differential Revision:

5 years agoRevert "Fix T42888: Separate and Combine HSV distorts the hue value"
Sergey Sharybin [Mon, 29 Dec 2014 13:14:08 +0000 (18:14 +0500)]
Revert "Fix T42888: Separate and Combine HSV distorts the hue value"

This reverts commit 1549fea9995c348bc14a9105df5e460644e2b33a.

After some further discussion with other developers in the team it becomes
clear there's no correct solution here. It is just more matter of what's
more convenient in particular case.

We're just going back to old code to avoid possible frustration with the
older files in newer blenders. This also means all HSV/HSL is considered
to be "linear" in the shading nodes.

Would be ported to 2.73 final.

5 years agoSmall fix for QTCreator project script, by Sybren Stüvel.
Lukas Tönne [Mon, 29 Dec 2014 12:45:05 +0000 (13:45 +0100)]
Small fix for QTCreator project script, by Sybren Stüvel.

Either ./blender-git or ~/blender-git should be used, but not
.~/blender-git. This patch fixes that, by choosing ~/blender-git,
in line with the last CLI argument.

5 years agoRotate around selection now will work on last stroke position in texture
Antony Riakiotakis [Mon, 29 Dec 2014 11:34:46 +0000 (12:34 +0100)]
Rotate around selection now will work on last stroke position in texture
paint too.

5 years agofix for doc generator
Campbell Barton [Mon, 29 Dec 2014 11:15:14 +0000 (22:15 +1100)]
fix for doc generator

5 years agoMove average stroke from sculpt session to unified paint settings so it
Antony Riakiotakis [Mon, 29 Dec 2014 10:35:22 +0000 (11:35 +0100)]
Move average stroke from sculpt session to unified paint settings so it
can be reused by other paint systems too.

5 years agoCMake: Add check for whether OIIO has bundled pugixml library
Sergey Sharybin [Mon, 29 Dec 2014 10:02:16 +0000 (15:02 +0500)]
CMake: Add check for whether OIIO has bundled pugixml library

Will become handy when we'll be re-integrating changes from Cycles standalone
repository back to blender.

5 years agoCleanup: get rid of sculpt minmax and reuse last stroke function (code
Antony Riakiotakis [Mon, 29 Dec 2014 10:01:10 +0000 (11:01 +0100)]
Cleanup: get rid of sculpt minmax and reuse last stroke function (code
did that anyway, just kept the result in an intermediate variable)

5 years agoCycles: Add asserts around BVH stack pushes
Sergey Sharybin [Mon, 29 Dec 2014 09:00:25 +0000 (14:00 +0500)]
Cycles: Add asserts around BVH stack pushes

This way we're kind of safer to troubleshoot possible stack overflow issues.

5 years agoCycles: Bump stack size for QBVH traversal code
Sergey Sharybin [Mon, 29 Dec 2014 08:37:18 +0000 (13:37 +0500)]
Cycles: Bump stack size for QBVH traversal code

Traversal now can push up to 2x of nodes to the stack, so need some tweaks
to the stack size.

5 years agoCycles: Add some sanity check asserts in the traversal code
Sergey Sharybin [Mon, 29 Dec 2014 08:34:10 +0000 (13:34 +0500)]
Cycles: Add some sanity check asserts in the traversal code

This way we'll be sure (in debug builds) that regular BVH traversal is not used
for QBVH tree (could happen because of mismatch of logic in kernel and render).

5 years agocleanup: redundant call to BKE_object_apply_mat4
Bastien Montagne [Mon, 29 Dec 2014 02:04:46 +0000 (13:04 +1100)]
cleanup: redundant call to BKE_object_apply_mat4

5 years agoCycles: Disable QBVH on 32bit systems all together
Sergey Sharybin [Mon, 29 Dec 2014 08:23:44 +0000 (13:23 +0500)]
Cycles: Disable QBVH on 32bit systems all together

The reason for this is that we don't sue SSE optimization for 32bit platforms
because of T36316.

Things to look into:

- Nail the root of the issue of that report
- Implement non-SSE traversal code for QBVH

5 years agoFix T40930: Add a new option to select faces by smooth/flat shading.
Bastien Montagne [Sun, 28 Dec 2014 18:08:30 +0000 (19:08 +0100)]
Fix T40930: Add a new option to select faces by smooth/flat shading.

Org code by robschia (Roberto Schiavone), first review by campbellbarton (Campbell Barton),
final review and minor changes by mont29 (Bastien Montagne).

Reviewers: cambellbarton, mont29

Subscribers: mont29, campbellbarton

Maniphest Tasks: T40930

Differential Revision:

5 years agoCleanup: no need for hacks here, RNA allows for real read-only props, and if you...
Bastien Montagne [Sun, 28 Dec 2014 17:30:33 +0000 (18:30 +0100)]
Cleanup: no need for hacks here, RNA allows for real read-only props, and if you define
a getter func, it won't rely on any DNA member either...

5 years agoFix leak in cycles-bake
Campbell Barton [Sun, 28 Dec 2014 04:26:34 +0000 (15:26 +1100)]
Fix leak in cycles-bake

5 years agoFix leak in select-similar regions
Campbell Barton [Sun, 28 Dec 2014 04:26:24 +0000 (15:26 +1100)]
Fix leak in select-similar regions

5 years agoFix buffer overrun calculating unique names
Campbell Barton [Sun, 28 Dec 2014 04:59:12 +0000 (15:59 +1100)]
Fix buffer overrun calculating unique names

5 years agoBLI_string_utf8: add BLI_strncpy_utf8_rlen
Campbell Barton [Sun, 28 Dec 2014 04:58:13 +0000 (15:58 +1100)]
BLI_string_utf8: add BLI_strncpy_utf8_rlen

5 years agocleanup: avoid ref-counting None for a new matrix
Campbell Barton [Sun, 28 Dec 2014 04:13:01 +0000 (15:13 +1100)]
cleanup: avoid ref-counting None for a new matrix

5 years agoCycles: Mark visibility TODO as resolved
Sergey Sharybin [Sat, 27 Dec 2014 18:38:29 +0000 (23:38 +0500)]
Cycles: Mark visibility TODO as resolved

5 years agoCycles: Fix visibility check for instanced nodes
Sergey Sharybin [Sat, 27 Dec 2014 18:33:50 +0000 (23:33 +0500)]
Cycles: Fix visibility check for instanced nodes

The issue is that only instance node contains proper visibility flags,
nodes from instanced BVH are not correct.

5 years agoFix a very stupid memleak in own bpy_app_translations.c code...
Bastien Montagne [Sat, 27 Dec 2014 16:24:39 +0000 (17:24 +0100)]
Fix a very stupid memleak in own bpy_app_translations.c code...

Safe for 2.73.

5 years agoGPencil UI: Color swatches for both Stroke and Fill colors are now shown
Joshua Leung [Sat, 27 Dec 2014 14:02:47 +0000 (03:02 +1300)]
GPencil UI: Color swatches for both Stroke and Fill colors are now shown

The layers list and the Dopesheet channels now show color swatches for both the
stroke and fill colours now. This is useful when you've got layers that only
use either/or.

* Currently, these only get shown if the relevant opacity setting is high enough
  for that aspect to contribute to the result.

* The sizing of these items could do with some more tweaking (especially in the
  Dopesheet), as these may now be too small to accurately see and/or interact with.

* There are some potential issues when using near-gray (or actually, colours similar
  to the list backgrounds, but that issue exists in other areas of Blender anyway.

(NOTE: At this stage, these changes are still experimental, and not for 2.73 yet)

5 years agoExperimental fix for "random large dots" bug when using a stylus
Joshua Leung [Sat, 27 Dec 2014 04:37:45 +0000 (17:37 +1300)]
Experimental fix for "random large dots" bug when using a stylus

Since I don't have a (pressure sensitive) tablet handy, I can't really test this
out, but apparently there is a bug which currently exists with the following description:
  "Small Dots, when you do just one click a single GP dot is created, it´s fine but don't recognize the pen pressure, always the maximum value of thickness, and
    It´s so easy create dots accidentally (even when you use the eraser, this dots appear spontaneously) and you start to have big screen-size-constant dots beside of you fine lines."

This commit just shuffles around the order of things a bit so that some of the misfiring
events might get skipped instead.

5 years agoRestoring all the whitespace!
Joshua Leung [Fri, 26 Dec 2014 23:09:29 +0000 (12:09 +1300)]
Restoring all the whitespace!

5 years agoFix T43034: beautify-fill leaves zero area tri's
Campbell Barton [Sat, 27 Dec 2014 05:47:42 +0000 (16:47 +1100)]
Fix T43034: beautify-fill leaves zero area tri's

5 years agocleanup: redundant tri-normal calculation
Campbell Barton [Sat, 27 Dec 2014 05:36:31 +0000 (16:36 +1100)]
cleanup: redundant tri-normal calculation

5 years agocleanup: knife tools, use generic sort function
Campbell Barton [Sat, 27 Dec 2014 01:20:33 +0000 (12:20 +1100)]
cleanup: knife tools, use generic sort function

5 years agoFix typo in angle commit, noticed by Kevin Dietrich, thanks!
Antony Riakiotakis [Fri, 26 Dec 2014 23:10:53 +0000 (00:10 +0100)]
Fix typo in angle commit, noticed by Kevin Dietrich, thanks!

5 years agoOnly add a fill brush to default .blend if there isn't one already. For
Antony Riakiotakis [Fri, 26 Dec 2014 23:08:58 +0000 (00:08 +0100)]
Only add a fill brush to default .blend if there isn't one already. For
some reason this happened twice here.

Likely candidate for 2.73 final

5 years agoBrush Texture Angle Goodies:
Antony Riakiotakis [Fri, 26 Dec 2014 22:51:27 +0000 (23:51 +0100)]
Brush Texture Angle Goodies:

This commit includes a few things:

* It moves the Rake and Random flags from the brush to the MTex.
* The first change allows mask textures to have independent rake
* Random rotation now has an angle value that controls the width of the
effect from the rake or default angle
* Rake and Random are now supported together.

5 years agoFix T43010 regression in material setting.
Antony Riakiotakis [Fri, 26 Dec 2014 19:06:56 +0000 (20:06 +0100)]
Fix T43010 regression in material setting.

Caused by own fix for another display case.

Shoud be safe for 2.73 final.

5 years agoGPencil: Picky whitespace cleanup
julianeisel [Fri, 26 Dec 2014 19:00:52 +0000 (20:00 +0100)]
GPencil: Picky whitespace cleanup

5 years agoPut editor initialization before python.
Antony Riakiotakis [Fri, 26 Dec 2014 18:13:32 +0000 (19:13 +0100)]
Put editor initialization before python.

Initially it was moved to allow setting keymaps of python defined menus
in C but looks like it breaks macro definition in python.

Thanks to Julian for tracking this down. It should fix T42485

5 years agoFix T42977: Weights failed to display in Wireframe mode when using Face Select
julianeisel [Fri, 26 Dec 2014 15:53:40 +0000 (16:53 +0100)]
Fix T42977: Weights failed to display in Wireframe mode when using Face Select

D948, reviewed by @mont29 (thanks for that)

5 years agoGPencil: Use a different brush cursor for eraser
julianeisel [Fri, 26 Dec 2014 15:38:51 +0000 (16:38 +0100)]
GPencil: Use a different brush cursor for eraser

D783 with minor edits to increase contrast

5 years agoFix T42641, Graphical fragments showing on Blender 2.71 and higher when baking.
Bastien Montagne [Fri, 26 Dec 2014 11:54:03 +0000 (12:54 +0100)]
Fix T42641, Graphical fragments showing on Blender 2.71 and higher when baking.

Safe for 2.73...

This revert rB9b0ab890676790bb1e8e77797629b889ea66f69e - needed to set that threshold to a small
negative value to remove the last artefacts reported in T39735, but now I could not reproduce
any with the previous 0.0f value, so restoring it for the time being.

If this 'shadowed neighbor face' case re-appears, we can always choose a value in-between, like -1e-18f...

5 years agoFix T43013: Flip with bridge aligned loops
Campbell Barton [Fri, 26 Dec 2014 09:15:06 +0000 (20:15 +1100)]
Fix T43013: Flip with bridge aligned loops

5 years agoFix T43019: Child of objectes used by duplis are visible in Cycles
Sergey Sharybin [Fri, 26 Dec 2014 08:34:48 +0000 (13:34 +0500)]
Fix T43019: Child of objectes used by duplis are visible in Cycles

Seems the parent check didn't go deep enough and only checked single parent.
Now it checks the chain of parents which seems to be correct but requires
much more intense testing.

5 years agooptimize interp_weights_poly_v2, v3
Campbell Barton [Thu, 25 Dec 2014 21:44:23 +0000 (08:44 +1100)]
optimize interp_weights_poly_v2, v3

use line_point_factor instead of length between vertices.

5 years agooptimize interp_weights_poly_v2, v3
Campbell Barton [Thu, 25 Dec 2014 21:33:41 +0000 (08:33 +1100)]
optimize interp_weights_poly_v2, v3

halve sqrtf calls per per polygon corner.

5 years agocleanup: use cross_tri_v2 when area isn't needed.
Campbell Barton [Thu, 25 Dec 2014 10:14:13 +0000 (21:14 +1100)]
cleanup: use cross_tri_v2 when area isn't needed.

5 years agoCycles: Distance optimization for QBVH
Sergey Sharybin [Thu, 25 Dec 2014 17:40:02 +0000 (22:40 +0500)]
Cycles: Distance optimization for QBVH

This commit implements heuristic which allows to skip nodes pushed to the stack
from intersection if distance to them is larger than the distance to the current

This should solve speed regression which i didn't notice in the original QBVH
commit (which could have because i had WIP version of this patch applied in my
local branch).

From quick tests speed seems to be much closer to what is was with regular BVH.

There's still some possible code cleanup, but they'll need a bit of assembly
code check and now i want to make it so artists can happily use Cycles over the

5 years agoSCons: Don't regenerate icons if not changes
Sergey Sharybin [Thu, 25 Dec 2014 14:13:51 +0000 (19:13 +0500)]
SCons: Don't regenerate icons if not changes

This is rather a handbook example how NOT to do things in SCons, ideally
it should be official SCons target so all the dependencies and source file
modification stops being our worry. Especially since for CMake we already
do have an app to do generate all the data.

I don't have time to clean this up now but this constant icons regeneration
just pisses me off atm.

5 years agoOSX: revive GHOST_HACK_getFirstFile cause it breaks things on older OSX versions.
Jens Verwiebe [Thu, 25 Dec 2014 14:12:56 +0000 (15:12 +0100)]
OSX: revive GHOST_HACK_getFirstFile cause it breaks things on older OSX versions.
Dunno exactly why this was done earlier, but propose not to remove code not understood.

5 years agoRefactor 'immediate search' feature
Bastien Montagne [Thu, 25 Dec 2014 11:53:13 +0000 (12:53 +0100)]
Refactor 'immediate search' feature

Currently, code just checks whether a text-edited button uses a given icon (VIEWZOOM) to decide to apply changes on each typed char.

This patch adds a propper button flag (UI_BUT_TEXTEDIT_UPDATE) and a dedicated RNA flag (PROP_TEXTEDIT_UPDATE) for that.
It's also now usable not only for text buttons, but also for example for num buttons when in 'text edit' mode, etc.

It also fixes an actual bug, which is for text properties, in 'immediate' mode, hitting escape would not restore org value, because `ui_apply_but_TEX()` would set its orgstr to NULL on first call (giving it to `but->rename_orig` instead of copying it).

Note no change in behavior is expected from user POV.
Update for addons using that 'VIEWZOOM' icon 'feature' will follow (if any).

Reviewers: campbellbarton

Reviewed By: campbellbarton

Projects: #user_interface, #bf_blender:_next

Differential Revision:

5 years agoRevert QBVH switch, after discussion with Sergey.
Thomas Dinges [Thu, 25 Dec 2014 11:18:51 +0000 (12:18 +0100)]
Revert QBVH switch, after discussion with Sergey.

5 years agoFix T42938: image.save_render sometimes saved the wrong pass
Sergey Sharybin [Thu, 25 Dec 2014 10:45:22 +0000 (15:45 +0500)]
Fix T42938: image.save_render sometimes saved the wrong pass

Stupid mistake with non0initialized image user.

Safe for final 2.73 release branch.

5 years agoCycles: Fix really bad bug with shadow rays on non-SSE CPUs
Sergey Sharybin [Thu, 25 Dec 2014 09:30:05 +0000 (14:30 +0500)]
Cycles: Fix really bad bug with shadow rays on non-SSE CPUs

basically shadow rays were totally broken and most of the time did not record
any intersections, leading to really ad rendering artifacts.

This commit makes it so regardless of enabled optimization level render result
would be the same.

5 years agoCycles: Workaround CUDA 6.5.16 error after watertight commit
Sergey Sharybin [Thu, 25 Dec 2014 09:15:37 +0000 (14:15 +0500)]
Cycles: Workaround CUDA 6.5.16 error after watertight commit

This issue doesn't happen with 6.5.12 and there's slight piece of hope it'll be
fixed in next toolkit releases..

For now we're forcing CUDA to not inline ray precalculation. This could lead to
some speed regression, but wouldn't expect it to be huge -- this code does not
run that often comparing to actual triangle intersection.

5 years agoCycles: Fix compilation error on non-SSE2 architectures
Sergey Sharybin [Thu, 25 Dec 2014 09:11:37 +0000 (14:11 +0500)]
Cycles: Fix compilation error on non-SSE2 architectures

5 years agoCleanup: Fix Cycles Apache header.
Thomas Dinges [Thu, 25 Dec 2014 01:50:24 +0000 (02:50 +0100)]
Cleanup: Fix Cycles Apache header.

This was already mixed a bit, but the dot belongs there.

5 years agoCleanup: Typo fixes for comments.
Thomas Dinges [Thu, 25 Dec 2014 01:42:06 +0000 (02:42 +0100)]
Cleanup: Typo fixes for comments.

5 years agoCycles: Expose QBVH on/off switch to the UI.
Thomas Dinges [Thu, 25 Dec 2014 01:19:14 +0000 (02:19 +0100)]
Cycles: Expose QBVH on/off switch to the UI.

We might remove this again in the future, but for testing purposes
during the release cycle, this will be useful.

The setting defaults to QBVH, and can be found in the Performance panel.

5 years agoCycles: Correction for node tail copy on packing BVH
Sergey Sharybin [Wed, 24 Dec 2014 21:49:27 +0000 (02:49 +0500)]
Cycles: Correction for node tail copy on packing BVH

This is harmless for now because tail of the node is zero in there, but better
to fix it early so in the case of extending BVH nodes this code doesn't give

5 years agoCycles: Enable QBVH optimization structure for SSE2 CPUs
Sergey Sharybin [Wed, 24 Dec 2014 19:53:26 +0000 (00:53 +0500)]
Cycles: Enable QBVH optimization structure for SSE2 CPUs

This commit enables QBVH optimization structure automatically if rendering
with CPU and SSE2 support is detected.

This brings render time of agent shot back to the speed it used to be before
the watertight intersections commit, single koro and sponza scenes are about
7% faster here.

5 years agoCycles: Implement QBVH tree traversal
Sergey Sharybin [Tue, 16 Dec 2014 15:11:37 +0000 (20:11 +0500)]
Cycles: Implement QBVH tree traversal

This commit implements traversal for QBVH tree, which is based on the old loop
code for traversal itself and Embree for node intersection.

This commit also does some changes to the loop inspired by Embree:

- Visibility flags are only checked for primitives.

  Doing visibility check for every node cost quite reasonable amount of time
  and in most cases those checks are true-positive.

  Other idea here would be to do visibility checks for leaf nodes only, but
  this would need to be investigated further.

- For minimum hair width we extend all the nodes' bounding boxes.

  Again doing curve visibility check is quite costly for each of the nodes and
  those checks returns truth for most of the hierarchy anyway.

There are number of possible optimization still, but current state is good
enough in terms it makes rendering faster a little bit after recent watertight

Currently QBVH is only implemented for CPU with SSE2 support at least. All
other devices would need to be supported later (if that'd make sense from
performance point of view).

The code is enabled for compilation in kernel. but blender wouldn't use it

5 years agoCycles: Store proper empty boundbox for missing child nodes in QBVH
Sergey Sharybin [Wed, 24 Dec 2014 19:14:12 +0000 (00:14 +0500)]
Cycles: Store proper empty boundbox for missing child nodes in QBVH

The idea is to make sure those childs would never be intersected with a ray
in order to make it so kernel never worries about number of child nodes.

5 years agoCycles: Code cleanup, de-duplicate definition of FEATURE
Sergey Sharybin [Wed, 24 Dec 2014 19:10:17 +0000 (00:10 +0500)]
Cycles: Code cleanup, de-duplicate definition of FEATURE

Previously every BVH traversal file was defining macro to check which features
should be compiled in, now this macro is defined in the parent header.

5 years agoCycles: Rework BVH functions calls a little bit
Sergey Sharybin [Wed, 24 Dec 2014 19:06:49 +0000 (00:06 +0500)]
Cycles: Rework BVH functions calls a little bit

Basic idea is to allow multiple implementation per feature-set, meaning this
commit tries to make it easier to hook new algorithms for BVH traversal.

5 years agoCycles: Add some utility functions and structures
Sergey Sharybin [Tue, 16 Dec 2014 15:27:44 +0000 (20:27 +0500)]
Cycles: Add some utility functions and structures

Most of them are not currently used but are essential for the further work.

- CPU kernels with SSE2 support will now have sse3b, sse3f and sse3i

- Added templatedversions of min4, max4 which are handy to use with register

- Added util_swap function which gets arguments by pointers.
  So hopefully it'll be a portable version of std::swap.

5 years agoCycles: Implement watertight ray/triangle intersection
Sergey Sharybin [Mon, 15 Dec 2014 16:18:01 +0000 (21:18 +0500)]
Cycles: Implement watertight ray/triangle intersection

Using this paper: Sven Woop, Watertight Ray/Triangle Intersection

This change is expected to address quite reasonable amount of reports from the
bug tracker, plus it might help reducing the noise in some scenes.

Unfortunately, it's currently about 7% slower than the previous solution with
pre-computed triangle plane equations, but maybe with some smart tweaks to the
code (tests reshuffle, using SIMD in a nice way or so) we can avoid the speed

But perhaps smartest thing to do here would be to change single triangle / ray
intersection with multiple triangles / ray intersections. That's how Embree does
this and it's watertight single ray intersection is not any faster that this.

Currently only triangle intersection is modified accordingly to the paper, in
the future we would also want to modify the node / ray intersection.

Reviewers: brecht, juicyfruit

Subscribers: dingto, ton

Differential Revision:

5 years agoCycles: Optimize storage of QBVH node by one float4
Sergey Sharybin [Mon, 22 Dec 2014 19:58:19 +0000 (00:58 +0500)]
Cycles: Optimize storage of QBVH node by one float4

The idea is to store visibility flags for leaf nodes only since visibility check
for inner nodes costs too much for QBVH hence it is not optimal to perform.

Leaf QBVH nodes have plenty of space to store all sort of flags, so we can make
nodes one element smaller, saving noticeable amount of memory.

5 years agoCycles; Code cleanup, make it more obvious what #endif belongs to
Sergey Sharybin [Mon, 22 Dec 2014 17:51:59 +0000 (22:51 +0500)]
Cycles; Code cleanup, make it more obvious what #endif belongs to

5 years agoCycles: Make it more clear offsets in BVH construction
Sergey Sharybin [Sun, 21 Dec 2014 17:35:51 +0000 (22:35 +0500)]
Cycles: Make it more clear offsets in BVH construction

Previously offsets were calculated based on the BVH node size,
which is wrong and real PITA in cases when some extra data is
to be added into (or removed from) the node.

Now use offsets which are not calculated form the node size.

5 years agoCycles: Replace magic constant in the code with actual node size
Sergey Sharybin [Sun, 21 Dec 2014 17:14:58 +0000 (22:14 +0500)]
Cycles: Replace magic constant in the code with actual node size

5 years agoCycles: Avoid over-allocation in packing BVH instances
Sergey Sharybin [Wed, 17 Dec 2014 18:31:12 +0000 (23:31 +0500)]
Cycles: Avoid over-allocation in packing BVH instances

This solves quite an over-allocation in BVH instances packing code,
unfortunately, it's not a magic bullet to solve memory bump caused
by the recent QBVH changes.

For that we'll likely need to decouple storage for leaf and inner
nodes. However, it's not really clear for now if it's something
important since that'd still be just a fraction of memory comparing
to all the hi-res textures.

5 years agoCycles: Implement refit_nodes for QBVH
Sergey Sharybin [Wed, 17 Dec 2014 17:46:02 +0000 (22:46 +0500)]
Cycles: Implement refit_nodes for QBVH

Title says it all, quite straightforward implementation.

Would only mention that there's a bit of code duplication around packing node
into pack.nodes. Trying to de-duplicate it ends up in quite hairy code (like
functions with loads of arguments some of which could be NULL in certain
circumstances etc..). Leaving solving this duplication for later.

5 years agoCycles: Use proper node counter to allocate QBVH nodes
Sergey Sharybin [Wed, 17 Dec 2014 16:49:35 +0000 (21:49 +0500)]
Cycles: Use proper node counter to allocate QBVH nodes

Before all the nodes were counted and allocated, leading to situations when
bunch of allocated memory is not used because reasonable amount of nodes are
simply ignored.

5 years agoCycles: Don't do node visibility check in subsurface and volume traversal
Sergey Sharybin [Tue, 16 Dec 2014 15:39:31 +0000 (20:39 +0500)]
Cycles: Don't do node visibility check in subsurface and volume traversal

Visibility flags are set to all visibility anyway, So there was no reason
to perform that test.

TODO: We need to investigate if having primitive intersection functions
which doesn't do visibility check gives any speedup here as well.

5 years agoCycles: Move triangle intersection functions into own file
Sergey Sharybin [Mon, 15 Dec 2014 15:21:41 +0000 (20:21 +0500)]
Cycles: Move triangle intersection functions into own file

This way extending intersection routines with some pre-calculation step wouldn't
explode the single file size, hopefully keeping them all in a nice maintainable

5 years agoCycles: Optimize vector math node without links to single values.
Thomas Dinges [Wed, 24 Dec 2014 21:45:08 +0000 (22:45 +0100)]
Cycles: Optimize vector math node without links to single values.

5 years agoFix T42879: File Browser - disable selecting ".." entry (Parent Directory)
julianeisel [Wed, 24 Dec 2014 18:51:42 +0000 (19:51 +0100)]
Fix T42879: File Browser - disable selecting ".." entry (Parent Directory)

5 years agoRef T42873: Print "Camera Pano" for panoramic camera view onto viewport
julianeisel [Wed, 24 Dec 2014 18:35:12 +0000 (19:35 +0100)]
Ref T42873: Print "Camera Pano" for panoramic camera view onto viewport

5 years agoMaster branch is now alpha cycle of 2.74 release
Sergey Sharybin [Wed, 24 Dec 2014 15:33:14 +0000 (20:33 +0500)]
Master branch is now alpha cycle of 2.74 release

5 years agoFix T42997: Support RGBA output for HuffYUV
Sergey Sharybin [Wed, 24 Dec 2014 13:54:38 +0000 (18:54 +0500)]
Fix T42997: Support RGBA output for HuffYUV

More like a feature request but was simple to support.

5 years agoFix rna paint update callbacks assuming meshes
Campbell Barton [Wed, 24 Dec 2014 03:51:35 +0000 (14:51 +1100)]
Fix rna paint update callbacks assuming meshes

5 years agoBlender 2.73 release candidate commit v2.73-rc1
Sergey Sharybin [Tue, 23 Dec 2014 15:03:27 +0000 (20:03 +0500)]
Blender 2.73 release candidate commit

This commit contains:

- Subversion bump to 2.73
- Release cycle is set to "rc"
- Submodules are pointed to appropriate tag now
  (addons contrib just points to the latest contrib repo)
- New shiny splash screen!

5 years agoFix T42994: Own recent regression in fix for T42945 (rB5cc199e49581),
Bastien Montagne [Tue, 23 Dec 2014 15:12:17 +0000 (16:12 +0100)]
Fix T42994: Own recent regression in fix for T42945 (rB5cc199e49581),
side/front/top ortho views would no more adapt their snapping unit to zoom factor.

This code would need slightly more refactor actually, but this will be for after release!

5 years agoAdd missing keymap for paint curve
Campbell Barton [Tue, 23 Dec 2014 09:01:21 +0000 (20:01 +1100)]
Add missing keymap for paint curve

5 years agoFix T42928: Drag-drop of generated files to compo reloads them, loosing edits
Sergey Sharybin [Tue, 23 Dec 2014 05:47:27 +0000 (10:47 +0500)]
Fix T42928: Drag-drop of generated files to compo reloads them, loosing edits

Origins of this issue goes back to T33402, where compo wasn't sure what kind
of image it is working with (compo should know if it's multilayer or regular

Now we only reload images when dar-dropping from outside of blender.

5 years agoFix T42952: Curve modifier not taken into account when curve is created from mesh
Sergey Sharybin [Mon, 22 Dec 2014 14:02:47 +0000 (19:02 +0500)]
Fix T42952: Curve modifier not taken into account when curve is created from mesh

Curve and array modifiers requires curve path to be evaluated, dependency graph
will make sure that curve eval would create such a path, but if curve was already
evaluated we might miss path.

So what we do now is: if path was not calculated for target curve we tag it for

5 years agopartial revert ab6417aa9ff8cbd4831c3ed1837742c1178be25a was too strict
Gaia Clary [Mon, 22 Dec 2014 12:26:15 +0000 (13:26 +0100)]
partial revert ab6417aa9ff8cbd4831c3ed1837742c1178be25a was too strict

5 years agoQuick fix for UI themes, by meta-androcto (Brendon Murphy), thanks.
Bastien Montagne [Mon, 22 Dec 2014 08:56:58 +0000 (09:56 +0100)]
Quick fix for UI themes, by meta-androcto (Brendon Murphy), thanks.