Commit Graph

2328 Commits

Author SHA1 Message Date
c1ceab1281 Merged changes in the trunk up to revision 55357.
Resolved conflicts:
release/datafiles/startup.blend
source/blender/editors/space_nla/nla_buttons.c

Also updated source/blender/blenkernel/intern/linestyle.c as a follow-up of
recent changes for the use of bool.
2013-03-18 00:48:59 +00:00
09c41019a8 use const pointers for file loading and booleans for animation system return values passed as pointers. 2013-03-17 19:13:04 +00:00
0a4b030145 New feature:
Automatic switching for drawing pixel buffers via glDrawPixels or using GPU textures

It works with a User Preference limit, in megapixels, to define whether to use
GPU or direct pixel drawing. Default is now initialized to 10 MP (4k buffers).

Especially for zooming out (draw smaller) texture drawing is much smaller. Also
Nvidia cards typically draw much faster with textures in general.

Added to node backdrop first now, the other editors follow in a next commit.

For coders: added new DNA function to initialize new struct variables, so you
don't have to sub-version files anymore.

   DNA_struct_elem_find(fd->filesdna, "structname", "typename", "varname") 

"filesdna" is the sdna description of the current file being versioned.
2013-03-17 14:38:58 +00:00
0d0291f6e1 code cleanup: incorrect sized array args, remove some redundant code. 2013-03-17 10:26:23 +00:00
2d21e6521f Fix: multisample viewport drawing didn't work well with selection or particle
brushes, due to issues with color coded drawing or slow/buggy reading from such
a buffer on some systems.

In case multisample is enabled now, it uses an offscreen buffer for such drawing,
which is not multisampled and so should not cause issues. This does mean there is
some extra GPU memory usage when multisample is enabled, and we could optimize
triple buffer to work together here somehow to share buffers, but it's better than
having selection not working.
2013-03-15 19:56:33 +00:00
0807c976f4 code cleanup: rename BKE_mesh_to_curve_ex --> BKE_mesh_to_curve_nurblist,
also correct odd indentation.
2013-03-15 10:48:48 +00:00
894c240f9d New implementation of Freestyle edge/face marks
The previous implementation of Freestyle edge/face marks was refactored
based on suggestions from the latest code review by Campbell.  The new
implementation relies on mesh CustomData to store edge/face marks, instead
of introducing extra flags in the core Mesh and BMesh data structures.
The CustomData-based implementation will allow further additions of new
edge/face attributes because of the independence from Mesh/BMesh.

This revision is work in progress, mainly intended to address the review
comments and ask for further code review in view of the trunk merger in
the upcoming 2.67 release.
2013-03-13 06:44:43 +00:00
ddddb7bab1 code cleanup: favor braces when blocks have mixed brace use. 2013-03-09 03:46:30 +00:00
f2bb536994 code cleanup: also change BKE_blender.h BLENDER_VERSION_CHAR to 'a' so as not to confuse things. 2013-03-05 14:47:49 +00:00
384948908a patch [#34103] path_util_split_dirstring.patch, path_util_split_dirstring_2.patch, path_util_split_dirstring_3.patch
from Lawrence D'Oliveiro (ldo)

Get rid of BLI_splitdirstring, replace with calls to BLI_split_dirfile, BLI_split_dir_part and BLI_split_file_part as appropriate.
2013-03-05 06:26:10 +00:00
0d5b028d43 patch [#34103] use boolean in path functions and add comments.
path_util_1.patch from Lawrence D'Oliveiro (ldo)
2013-03-04 19:27:51 +00:00
42ca1c8dcd Fix for image transparency backwards compatibility. Now the texture datablock has
a Use Alpha option again. This makes the case where you enabled Premultiply on the
image and disabled Use Alpha on the texture work again.

That's mostly useful when you have a straight alpha image file which has no useful
RGB colors in zero alpha regions (e.g. renders). Then sometimes you don't want to
use the alpha for the texture stack mixing, but you still want to multiply it into
the RGB channels to avoid a blocky transition into zero alpha regions.

This also removes the version patch that copied image datablocks because it's not
reliable and might be causing bug #34434. This does mean we are no longer backwards
compatible for cases where two different texture datablocks with Use Alpha enabled
and disabled where using the same image.
2013-03-04 13:18:14 +00:00
66a2b84897 Merged changes in the trunk up to revision 54992.
Resolved conflicts:
release/scripts/startup/bl_ui/space_view3d.py
2013-03-03 15:07:49 +00:00
f186f89a42 Fix #34461: Inconsistent behavior of "Color Mix Node" and "Alpha Over Node"
Added compatibility option "Straight Alpha Output" to image input node

When this option is enabled, image input node will convert float buffer
to straight alpha.

This is not what you'll usually want with new alpha pipeline, nit this
is needed to preserve compatibility with older files saved in 2.65.
In that version byte image are resulting with straight alpha passing
to the compositor and alpha-overing required extra premultiplication
of inputs.

So, that's why Straight Alpha Output is needed -- it's set in versioning
code for byte node images so they'll still output straight alpha.

This option is currently only available in N-panel.

Additional change: added Alpha Mode for image input node to N-panel.
2013-03-01 15:37:15 +00:00
1039135965 More UI messages fixes... 2013-02-28 15:31:20 +00:00
5331b94607 Hidding the append: already linked message if G.debug is false. This gets rid of some noise in the console for BGE games that run into this case a lot. 2013-02-25 00:03:58 +00:00
d120ec146d Merged changes in the trunk up to revision 54802. 2013-02-24 03:39:20 +00:00
e8f6caa384 Fix for image alpha version patch with library linked files where the image
datablock is in a different library than the texture datablock. Adjusted the
fix in 54790 to check for this case specifically so it keeps working on other
files that have packed images.

The problem is that blo_do_versions_newlibadr will not return a valid datablock
in some cases with linked libraries. This function is used in various places in
the version patching code and would likely cause problems there as well, needs
to be investigated further.
2013-02-23 20:24:02 +00:00
5de307122c Bug fix in 2.66 release, irc submitted.
File with packed images crashes on load.

Do-versions now is copying Images, because texture "use alpha" has been removed...
However, it then also copied packaged images, which crashes for some reason.

For now I skip packed image copy, which keeps blender work. This versioning
code needs more checking though.
2013-02-23 14:52:40 +00:00
9ef5d2d905 fix for error in the blenderplayer caused by r54727 (can't assume G.main is valid on load). 2013-02-23 01:33:47 +00:00
7ad0790189 patch [#34103] Add explanatory comments to dna_genfile.[ch]
from Lawrence D'Oliveiro (ldo)
2013-02-22 13:35:32 +00:00
ca689e88aa Motion tracking dopesheet
Highlight background depending on number of tracks existing on frame.

This is not so much mathematically accurate displaying where things
shall be improved, but it's nice feedback about which frames better
be reviewed.

Bad frames are tracks < 8, highlighted with red.
OK-ish frame  are 8 <= tracks < 16, highlighted with yellow.

Could be some artifacts with color region start/end, this is a bit
unclear what exactly expected to be highlighted -- frames are
displayed as dots, but in fact they're quite noticeable segments.

---
svn merge -r54572:54573 ^/branches/soc-2011-tomato
2013-02-22 10:13:15 +00:00
20220d47e3 Dependency Graph: some refactoring which should have no user visible impact
besides performance in some cases.

* DAG_scene_sort is now removed and replaced by DAG_relations_tag_update in
  most cases. This will clear the dependency graph, and only rebuild it right
  before it's needed again when the scene is re-evaluated.

  This is done because DAG_scene_sort is slow when called many times from
  python operators. Further the scene argument is not needed because most
  operations can potentially affect more than the current scene.

* DAG_scene_relations_update will now rebuild the dependency graph if it's not
  there yet, and DAG_scene_relations_rebuild will force a rebuild for the rare
  cases that need it.

* Remove various places where ob->recalc was set manually. This should go
  through DAG_id_tag_update() in nearly all cases instead since this is now
  a fast operation. Also removed DAG_ids_flush_update that goes along with
  such manual tagging of ob->recalc.
2013-02-21 19:33:04 +00:00
e5a135e0b2 Fixes for alpha mode do_versions code
Before this change only old flag "Premultiply" was used to
detect alpha mode, which is not enough actually.

Now the logic here is:

- If "Premultiply" was enabled it is likely float image with
  straight alpha, which shall be premultiplied before usage.

  In this case image/sequence Alpha Mode is set to Straight.

- Otherwise use default alpha mode for image format based on
  an extension. This could fail in some cases like TIFF, but
  this wasn't handled fully correct in older blender anyway.

Initial discovered issue was that EXR images saved in older
Blender versions were set to Straight alpha mode, which is
obviously a straight way to lots of headache.
2013-02-19 08:37:08 +00:00
92436c94d3 Merged changes in the trunk up to revision 54594. 2013-02-16 18:38:03 +00:00
Dalai Felinto
42f9872363 bugfix: [#34220] Blenderplayer no longer working after r54395 commit [segfault due to world not valid]
patch by Sergey Sharybin

note, I still find strange that world was valid and now it is not, but at least we no longer segfaults
2013-02-13 23:09:12 +00:00
da4711632c Fix for splitting startup and userpref:
The do-version handling for Userdef is outside file reading, which makes
it needed to store the file version in UserDef, so it gets the correct
version to handle.

Thanks Antonis R. for pointing at the omission!

Also removed the mindboggling define. If you do such, then make it
like "MAIN_VERSION_OLDER_THAN() or so.

In general version hacking could be limited much better... ask me
before even thinking to add one, most optimal is to do it in a way
it's not depending on a version ever - forward/backward compatible.
2013-02-13 16:52:14 +00:00
75cbb07507 Added option to composite/viewer nodes which specifys whether alpha input
is straight or not (premultiplied is default).

This is useful in cases when you want to check on output of such nodes
as keying which does have straight alpha output.

Also added missing do_version code to previous compo do_versions.
2013-02-10 12:20:10 +00:00
ac9ec06ec1 Merged changes in the trunk up to revision 54421.
Conflicts resolved:
release/datafiles/startup.blend
release/scripts/startup/bl_ui/properties_render.py
source/blender/SConscript
source/blender/blenloader/intern/readfile.c
2013-02-10 10:17:59 +00:00
ebf18c6df9 Corrections to alpha pipeline do_versions
Basically they're aimed to solve issues when scene with sky
was used for compositing. If compo used alpha output result
of current trunk would be completely different form hwo it
was before.

Two heuristics here:
- If there's no world or world color is black, it completely
  equals to straight alpha mode, no further magic is needed
  to preserve compatibility

- If scene is used as Render Layer node and something is
  connected to Alpha output of this node, ensure alpha mode
  for this scene is set to Premultiplied.

Basically it shall give better compatibility and make
4K mango project just happy! :)
2013-02-08 16:25:35 +00:00
32a6a3eb63 Fix #33747: do better backwards compatibility for image transparency changes.
The use alpha option moved from the texture datablock to the image, and now it
will duplicate the image datablock in case you have one texture using alpha and
the other not.
2013-02-08 15:56:14 +00:00
fdfa5910b5 Fix #34040: Moving Normal Node with enabled Cycles Material Preview crashes
Issue was caused by couple of circumstances:

- Normal Map node requires tesselated faces to compute tangent space
- All temporary meshes needed for Cycles export were adding to G.main
- Undo pushes would temporary set meshes tessfaces to NULL
- Moving node will cause undo push and tree re-evaluate fr preview

All this leads to threading conflict between preview render and undo
system.

Solved it in  way that all temporary meshes are adding to that exact
Main which was passed to Cycles via BlendData. This required couple
of mechanic changes like adding extra parameter to *_add() functions
and adding some *_ex() functions to make it possible RNA adds objects
to Main passed to new() RNA function.

This was tricky to pass Main to RNA function and IMO that's not so
nice to pass main to function, so ended up with such decision:

- Object.to_mesh() will add temp mesh to G.main
- Added Main.meshes.new_from_object() which does the same as to_mesh,
  but adds temporary mesh to specified Main.

So now all temporary meshes needed for preview render would be added
to preview_main which does not conflict with undo pushes.

Viewport render shall not be an issue because object sync happens from
main thread in this case.

It could be some issues with final render, but that's not so much
likely to happen, so shall be fine.

Thanks to Brecht for review!
2013-02-05 12:46:15 +00:00
9ddf928dbd remove stringify macro from alloc's 2013-02-05 09:42:40 +00:00
ea723386c3 updated fix for [#34089] Crash opening file containing translation node saved before rev54235
some of our artists work to much on trunk :) Especially our beloved Pablo Vazquez.

We increased the blender file sub-version for checking if translate nodes needed to be updated.

Happy blending.
2013-02-04 17:38:37 +00:00
69993c5d40 style cleanup: spaces -> tabs 2013-02-04 00:18:09 +00:00
b58b107db4 Fix for [#34089] Crash opening file containing translation node saved before rev54235 2013-02-03 15:38:06 +00:00
c93d6f4606 add missing break in direct_link_constraints, CONSTRAINT_SPACEONCE flag was getting set to CONSTRAINT_TYPE_KINEMATIC. 2013-02-02 04:13:38 +00:00
54223ed05b Add active region for operator execution.
This means you can for example, uv unwrap in quad-view and change settings in the toolbar without defaulting back to the first quad-view region available. 

This may be displayed to the user later, for now this is set on executing registrable operators.
2013-01-30 12:22:02 +00:00
556912792a Merged changes in the trunk up to revision 54110.
Conflicts resolved:
source/blender/blenfont/SConscript
source/blender/blenkernel/intern/subsurf_ccg.c
source/blender/makesdna/intern/makesdna.c
source/blender/makesrna/intern/rna_scene.c
2013-01-26 23:49:13 +00:00
47c96081d0 rigidbody: Add rigid body constraints
Constraints connect two rigid bodies.
Depending on which constraint is used different degrees of freedom
are limited, e.g. a hinge constraint only allows the objects to rotate
around a common axis.

Constraints are implemented as individual objects and bahave similar to
rigid bodies in terms of adding/removing/validating.

The position and orientation of the constraint object is the pivot point
of the constraint.

Constraints have their own group in the rigid body world.

To make connecting rigid bodies easier, there is a "Connect" operator that
creates an empty objects with a rigid body constraint connecting the selected
objects to active.

Currently the following constraints are implemented:
* Fixed
* Point
* Hinge
* Slider
* Piston
* Generic

Note: constraint limits aren't animatable yet).
2013-01-23 05:56:56 +00:00
089cf12435 rigidbody: Add point cache support
Add read/write/interpolate functions.

In order to get rigid body point cache id from object it's now required to pass the
scene to BKE_ptcache_ids_from_object().

Rigid body cache is drawn in the orange color of the bullet logo.
2013-01-23 05:56:34 +00:00
fc377c17e3 rigidbody: Add force field support
Force fields work with rigid bodies just like they do with other simulations.

Increase min and max strength of force fields so they can influence heavy rigid
bodies.

TODO: Adjust force field strength based on the time step taken.

Part of GSoC 2010 and 2012.
Authors: Joshua Leung (aligorith), Sergej Reich (sergof)
2013-01-23 05:56:27 +00:00
27601aaf01 rigidbody: Add DNA/RNA/BKE infrastructure for the rigid body sim
This is just the basic structure, the simulation isn't hooked up yet.

Scenes get a pointer to a rigid body world that holds rigid body objects.
Objects get a pointer to a rigdid body object.

Both rigid body world and objects aren't used directly in the simulation
and only hold information to create the actual physics objects.

Physics objects are created when rigid body objects are validated.
In order to keep blender and bullet objects in sync care has to be taken
to either call appropriate set functions or flag objects for validation.

Part of GSoC 2010 and 2012.
Authors: Joshua Leung (aligorith), Sergej Reich (sergof)
2013-01-23 05:56:22 +00:00
e11d22a6b7 Matcap support in 3D Viewport.
Full log is here:
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.66/Usability#Matcap_in_3D_viewport

Implementation notes:

- Matcaps are an extension of Solid draw mode, and don't show in other drawmodes.
  (It's mostly intended to aid modeling/sculpt)

- By design, Matcaps are a UI feature, and only stored locally for the UI itself, and
  won't affect rendering or materials.

- Currently a set of 16 (GPL licensed) Matcaps have been compiled into Blender. 
  It doesn't take memory or cpu time, until you use it.

- Brush Icons and Matcaps use same code now, and only get generated/allocated on
  actually using it (instead of on startup).

- The current set might get new or different images still, based on user feedback.

- Matcap images are 512x512 pixels, so each image takes 1 Mb memory. Unused matcaps get 
  freed immediately. The Matcap icon previews (128x128 pixels) stay in memory.

- Loading own matcap image files will be added later. That needs design and code work 
  to get it stable and memory-friendly.

- The GLSL code uses the ID PreviewImage for matcaps. I tested it using the existing
  Material previews, which has its limits... especially for textured previews the
  normal-mapped matcap won't look good.
2013-01-22 11:18:41 +00:00
d1a211188b property change reporting now uses the context again, rather then checking a dir() on context, hard-code common paths.
eg:
  bpy.context.scene.render.resolution_x = 1921
  bpy.context.object.data.use_auto_smooth = True
  bpy.context.object.active_material.diffuse_intensity = 1
  bpy.context.scene.world.exposure = 0.1

also remove duplicate GS() defines
2013-01-22 04:24:01 +00:00
40629671f4 Style cleanup 2013-01-21 06:32:09 +00:00
1d45242208 Get rid of the BRUSH_FIXED_TEX flag, use mapping modes instead. Version
patched all previous texture paint brushes to use tiled mapping since
mappping is now shared between 2d and 3d painting.
2013-01-16 14:36:13 +00:00
ba78e3e312 no need to call BLI_countlist on idproperty groups when comparing. 2013-01-14 12:02:10 +00:00
ef5a41a89d Three fixes;
- Previous commit had a line of code of WIP project in it... tss

- Packed Library data was not freed

- Removed recent (post 2.65a) code to exclude packed data from Undo system.
  It's internal data thats part of file spec, errors happen for example on
  restoring quit.blend or temp saves.
2013-01-13 12:25:56 +00:00
6e990de9b0 Usability:
Using Proxy Armature on groups: an Undo now doesn't force a complete re-evalution
of this system anymore, so posing works similar as for regular (non linked)
armatures - an undo step goes back to the previous pose.

Before, an undo made the entire armature go to rest pose. Bad bad :)

I need animators to carefully check - report back if there's other issues!
Tested on Gilga character from Tube Open Movie.
2013-01-13 11:31:01 +00:00