Commit Graph

68 Commits

Author SHA1 Message Date
Campbell Barton
b340f930ec style cleanup: changes to brace placement / newlines - for/while/if/switch 2012-04-28 06:31:57 +00:00
Campbell Barton
cd2b142ba0 small speedup to VertDataMulN(av, n), when passed expressions to 'n' they were calculated 3 times, cuts 78 instructions from resulting assembly (gcc -O2). 2012-04-22 03:25:48 +00:00
Campbell Barton
ac5058b281 subsurf - avoid 'for' loop finding the edge index in a face multiple times when calling _face_getIFCoEdge. add asset so passing wrong value errors out in debug mode. gives small speedup to subsurf. 2012-04-22 03:07:21 +00:00
Campbell Barton
126f766b4c style cleanup 2012-04-22 00:20:58 +00:00
Campbell Barton
b4a0152e76 code cleanup: float formatting was confusing in some cases - eg: (0.,0.,0.) 2012-04-11 08:15:13 +00:00
Nicholas Bishop
0c91821364 Add new CCG accessor functions.
ccg_gridsize() converts a level into gridsize, ccg_factor() is for
converting coordinates between different multires levels.
2012-03-14 06:31:24 +00:00
Nicholas Bishop
06b2343b50 Use sqrtf rather than sqrt in CCGSubSurf.c 2012-03-08 22:33:34 +00:00
Nicholas Bishop
9c7e8e837d Code cleanup: remove unused parameter from some ccgSubSurf accessors.
Remove 'CCGSubSurf *ss' parameter from ccgSubSurf_getFaceFaceHandle,
ccgSubSurf_getFaceVert, and ccgSubSurf_getFaceEdge.
2012-03-06 01:01:42 +00:00
Campbell Barton
95670e03a0 style cleanup / comment formatting for bli/bke/bmesh 2012-03-03 20:19:11 +00:00
Nicholas Bishop
33baddfc47 Code cleanup: replace a few macros in CCGSubSurf with inline functions. 2012-02-29 08:35:23 +00:00
Nicholas Bishop
8fcb66588b Code cleanup, remove redefinition of UNUSED macro.
Patch from Jason Wilkins:
http://projects.blender.org/tracker/index.php?func=detail&aid=30350&group_id=9&atid=127
2012-02-27 02:46:25 +00:00
Nicholas Bishop
e3877a625e Style cleanup: remove underscore prefix from CCG struct names. 2012-02-26 06:50:54 +00:00
Nicholas Bishop
1df41811ac Code cleanup: replace some common CCG operations with functions.
The new functions are ccg_gridsize, ccg_edgesize, ccg_spacing, and
ccg_edgebase. These target most of the left-shift operations in the
code.
2012-02-23 07:21:33 +00:00
Campbell Barton
53fece44cf style cleanup for blenkernel, no functional changes. 2012-02-23 02:17:50 +00:00
Campbell Barton
84236c2502 use 2d copy functions with UV's in more places. 2011-12-17 03:46:38 +00:00
Brecht Van Lommel
0c965e16ac Fix #29366: multires crash with meshes that had verts/edges not connected to any face. 2011-11-24 17:06:50 +00:00
Campbell Barton
4a04f72069 remove $Id: tags after discussion on the mailign list: http://markmail.org/message/fp7ozcywxum3ar7n 2011-10-23 17:52:20 +00:00
Campbell Barton
bc40f11093 header cleanup (no functional changes) 2011-10-10 09:38:02 +00:00
Campbell Barton
77e3eac389 Fix for old bug with subsurf not initializing normals for edges that had no faces,
Noted that a floating point exception caused by this r28953.

With the render engine using DerivedMesh normals this came up as a memory error when rendering some files.

for now zero the normals, could interpolate between vertex normals if needed.
2011-03-30 02:05:10 +00:00
Campbell Barton
a73c3fe5c9 subsurf, derived mesh and other misc files: floats were being implicitly promoted to doubles, adjust to use floats. 2011-03-27 17:22:04 +00:00
Nathan Letwory
0ff06e21cd doxygen: blender/blenkernel tagged. 2011-02-27 20:40:57 +00:00
Campbell Barton
1b25f48542 clear some unused warnings 2011-02-17 12:05:09 +00:00
Campbell Barton
8b7482892b made most variables which are only used in a single file and not defined in header static for blenlib, blenkernel and editors. 2011-02-14 17:55:27 +00:00
Campbell Barton
0955c664aa fix for warnings from Sparse static source code checker, mostly BKE/BLI and python functions.
- use NULL rather then 0 where possible (makes code & function calls more readable IMHO).
- set static variables and functions (exposed some unused vars/funcs).
- use func(void) rather then func() for definitions.
2011-02-13 10:52:18 +00:00
Brecht Van Lommel
0daebd0ed6 Fix #25316: distorted subsurf UV in some cases. To counter distortion at seams,
we add extra creasing in the UV mesh, to keep it from shrinking, leading to
distorted UVs, but this wasn't always working right, so tweaked the conditions.
2011-01-05 12:04:06 +00:00
Campbell Barton
30b79ddcc6 - fixed remaining unused warnings.
- omit render code from this warning (cmake only), until render branch is merged.
- moved -Wunused-parameter warning to apply to all C code in blender (not just ./source/blender), (cmake only).
2010-10-17 06:38:56 +00:00
Brecht Van Lommel
e0368d31a5 Enabled openmp multithreading for multires/subsurf again, but only
if there are >= 1 million faces estimated in the resulting mesh.

(merge from render25 branch)
2010-06-22 15:09:41 +00:00
Brecht Van Lommel
db96d4972f Workaround #20467: disabled OpenMP multithreading on subsurf/multires/sculpt
for now, it's too fine grained and so becomes a performance bottleneck on some
platforms, while only providing a modest speedup on others. Couldn't find a
simple enough solution to solve this, so for now no multithreading here.
2010-06-01 19:01:54 +00:00
Campbell Barton
1e9bf0cfdb spaces -> tabs, (4 spaces == 1 tab, only for white space preceding text) 2010-03-22 09:30:00 +00:00
Brecht Van Lommel
cbe54bd772 Fix for a memory leak in subsurf code that is using memory arena, temporary
arrays are now allocated with regular guardedalloc.
2010-02-08 15:01:11 +00:00
Brecht Van Lommel
65dc616e10 Fix #20398: smooth brush + multires could still give problems at inner
face edges.
2010-02-07 13:07:12 +00:00
Brecht Van Lommel
a7f2c3fca8 Fix #20505: subsurf normals where not being set correct on correct from
subsurf derivedmesh to regular (derived)mesh, causing drawing errors on
apply and following modifiers to work incorrect.
2010-01-30 09:32:05 +00:00
Brecht Van Lommel
89b6d94e38 Sculpt Branch: multires conversion from 2.4 working again. 2009-12-11 10:56:20 +00:00
Brecht Van Lommel
9ea765e5d3 Sculpt Branch:
* Smooth brush works again for multires.
* Optimal Display option for multires modifier, same as subsurf.
2009-12-09 13:37:19 +00:00
Brecht Van Lommel
010c99deb2 Sculpt Branch:
* Multithread parts of multires and subsurf. Only loops working on
  face grid data and do no memory allocation have been multithreaded,
  others would be more complicated.
* Force some CCGSubsurf functions to be inlined, gives a small overall
  speedup in subsurf code.

* Fix sculpting not working correct with transformed objects.
* Fix a few cases of "spikes" on lower level multires levels. There's
  still cases where it happens, usually on boundary cornders. The
  problem is that in such cases the limit surfaces can be very different
  from the low res surface, so the tangent space is very different too..
* Fix crash deleting multires higher levels with level set to 0.
* Fix crashes that happened sometimes when adding faces in editmode.
2009-12-03 18:35:37 +00:00
Brecht Van Lommel
55d2a56d60 Sculpt:
svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r24483:24889
2009-11-25 17:51:16 +00:00
Brecht Van Lommel
90cc7c8abd Sculpt: CCGSubsurf new functions to update normals, update subdivision
levels, copy coordinates from face grids, and stitch together face grids.
2009-11-25 12:27:21 +00:00
Campbell Barton
331d1b1b50 sintel's normals were rendering black around her eye.
Subsurf FLT_EPSILON from float.h was too high, using a smaller value fixes
2009-11-12 15:05:51 +00:00
Brecht Van Lommel
4870db578b Bug #17912: fix for some SSS floating point precision issues, and also
fix a divide by zero in the subsurf code found in the process.
2008-11-01 17:07:24 +00:00
Campbell Barton
2a331067cc resolve some compiler warnings with intel c/c++ compiler
* subsurf code had a lot of unused variables, removed these where they are obviously not needed. commented if they could be useful later.
* some variables declorations hide existing variables (many of these left), but fixed some that could cause confusion.
* removed unused vars
* obscure python memory leak with colorband.
* make_sample_tables had a loop running wasnt used.
* if 0'd functions in arithb.c that are not used yet.
* made many functions static
2008-09-29 17:08:11 +00:00
Daniel Genrich
fd0072e77c Win64: please check my changes if you ran across them ;) But should be fine since no additional crashes were reported! 2008-08-17 17:08:00 +00:00
Nicholas Bishop
e78d2b360a Fixed bug #8180, Simple subdivide modifier performs catmull-clark on single edges
Removed an incorrect check for original vertices on whether any faces used them.
2008-03-21 03:08:04 +00:00
Campbell Barton
10a22bdba7 subsurfs EDGE_getSharpness function was looping when it didnt need to and also took an unused value.
removed loop and unused var, since this is a sensitive (and not my) area - I did some mesh comparisons and ran a comparison with the old function passing random values, so this should be ok.
2007-06-09 10:51:02 +00:00
Ton Roosendaal
240e25ab65 Cleanup of blender/ module; Makefiles now compile this warning free.
Mostly was unused variables, unused functions, missing prototypes and
missing include files.
2006-01-28 20:17:48 +00:00
Brecht Van Lommel
dd7e0b6bfe Apply Subsurf to UV's.
This fixes most of the UV distortion issues with subsurf. Near seams
however there might still be some distortion, but this should at least
not be worse than before. Subsurf UV is enabled by default on new meshes,
and can be enabled in the modifier panel for existing ones.

Before and after:
http://users.pandora.be/blendix/notsmooth.png
http://users.pandora.be/blendix/smooth.png
2006-01-10 11:36:57 +00:00
Daniel Dunbar
752dbf1e9a - made make_edge mark edges with LOOSEEDGE appropriately
- added user settable defaultEdgeData (for auto edge creation
   in CCGSubSurf)
 - bug fix, possible crash on meshes with loose edges but
   in mface not in medge
 - missed file in last commit, for proper updating in image
   window
2005-08-20 09:16:09 +00:00
Daniel Dunbar
a30740c196 - convert all DerivedMesh map functions to use index based
mapping (instead of Edit{Vert,Edge,Face} pointers)
 - dropped convertToDispListMeshMapped (whew, glad of it too)
 - added DerivedMesh drawMappedFaces function
 - dropped EM suffix for DerivedMesh functions, it was neither
   particularly correct nor descriptive
 - converted test_index_mface to test_index_face that also corrects
   MCol and TFace. Good thing we had three versions of this routine,
   you never know when one might burn down.
 - removed flipnorm_mesh, not used anymore (and was incorrect to
   boot)

 - Getting face select to work with modifiers turned out to be much
   more complicated than expected. Reworked mapping architecture for
   modifiers - basically elements in a DispListMesh are now required
   to be stored in an order that corresponds exactly to original
   ordering. MVert/MEdge/MFace all have a new flag ME_XXX_STEPINDEX
   that is set on each element that is set on the first derived element
   of each original element. I can't say the code to follow these
   requirements for subsurf is particularly transparent, but on the
   upside it is a reasonably consistent and simple system that is memory
   efficient and allows keeping the DispListMesh structure.

 - rewrote mirror modifier to be simpler/conform to new requirements
   for mapped DispListMesh structure. This also means that mirror interacts
   much better with incremental subsurf calculation (it used to recalc
   one entire side on any topology change, now it generally avoids that).

 - added EM_{init,free}_index_arrays and EM_get_{vert,edge,face}_for_index
   functions to handle mapping indices back into appropriate EditMesh
   structures.
 - bug fix, make edges didn't recalc object data
 - bug fix, initial image assignment to TFace's didn't recalc object data

 - new feature, added circle select support for FACESELECT
 - bug fix, creating new faces in editmode duplicated the TFACE active
   flag - but there should only be one active tface
 - bug fix, possible crash when deleting all faces in faceselect mode
   on mesh with tfaces...

Still todo: TFace edge drawing is still not always correct in face
mode, in particular with a mirror modifier when mesh has edges (and
no preceeding subsurf). Have not yet decided how to deal with this.
Best solution is probably to do switch to meshes all having MEdge's,
in which case I can get rid of TFace edge flags (and need to recalc
modifiers on tface selection change).
2005-08-20 03:08:23 +00:00
Daniel Dunbar
8c41c00ff7 - added DerivedMesh.drawUVEdges function & implementations
- removed DerivedMesh.drawLooseEdges and replaced with much more
   general drawEdgesFlag function that draws based edge flags.
 - switch DerivedMesh.drawFacesTex to give user control over which
   faces are drawn
 - added object_uvs_changed and object_tface_flags_changed functions
   to do object recalc flag flush/redraw queueing and added calls
   in appropriate places
 - added various edge flags to mark TFace information. This is used
   by the drawEdgesFlag routine and was the best way I could come
   up with to deal with drawing TFace information from modifier stack.
   Unfortunate side effects are (1) uses a lot of MEdge flags (although
   not needed in file so thats fine) and (2) requires recalculation
   of modifier stack on UV selection changes. #2 is disappointing
   but I could not find a better solution.
 - update UV mesh shadow drawing to use modifier result. At the moment
   just uses the final result but probably should be integrated with
   the editmode cage option.
 - convert draw_tfaces3D to use drawEdgesFlag routine which cleaned
   up the code quite a bit.
 - convert draw_tface_mesh to draw using result of modifier stack.
   Same comment about which result actually gets draw in FACESELECT
   mode as for UV editor shadow drawing applies.

There is a still a bug in that selection is using the wrong
mesh to draw.
2005-08-18 11:31:20 +00:00
Daniel Dunbar
1db88bd065 - modify CCG to not crash when passed invalid faces, just ignores
that face... this situation should still not happen with well
   written modifiers but at least it won't crash now
 - bug fix in mirror modifier, calculation during editmode did not
   check to make sure built mface's had valid indices... grr the
   ==0 tagging system is really a pain.
 - convert a few uiDefBut calls to use explicit type
2005-08-03 19:27:19 +00:00
Daniel Dunbar
8a58197cf3 - change modifier applyModifier[EM] function to not free derived argument
- added modifier_supportsMapping function
 - update CCG to set actual vertex normal (and not just
   interior face vertex normal, bla bla bla no one knows
   what this means nevermind).
 - renamed modifierType_get_info to modifierType_getInfo for
   consistency and to increase my commit line count.
 - update EditMeshDerivedMesh to calculate (and use new) normals
   when given deformed vertices
 - added
 - update editmode modifier calculation to also calculate a cage,
   not working 100% atm, in particular if a deformer follows a modifier
   that returns a DerivedMesh the cage is not accurate.
 - added ccg derivedmesh drawMapped{Vert,Face]NormalsEM functions
 - currently UI for selecting the cage mesh is rather irritating,
   will be updated
2005-08-03 04:04:05 +00:00