Commit Graph

2578 Commits

Author SHA1 Message Date
Campbell Barton
c005fb407b Util-defines: avoid multiple calculation/access for MIN/MAX macros 2013-12-08 17:29:22 +11:00
Campbell Barton
8a9a060b67 Math lib: optimize hsv/rgb conversion 2013-12-08 17:20:53 +11:00
Campbell Barton
f64b3732be Util Macros: reduce multiple access & conversion for CLAMP/CLAMPIS/ABS 2013-12-07 14:29:27 +11:00
Campbell Barton
69065b5b2c Compiler warnings: quiet warnings for gcc4.7x
patch from Sergey
2013-12-07 13:21:59 +11:00
Campbell Barton
72d950ba49 Rectangle API: add single axis intersection check 2013-12-06 18:48:55 +11:00
Antony Riakiotakis
4b9fb83e67 Appease grumpy ole gcc 4.7 of MinGW64 (possibly gcc 4.6 of MinGW32 too?)
that cannot convert float to char without false warnings that are turned
into errors with strict flags. I expect that any real conversion
warnings can be caught on linux.
2013-12-05 23:32:59 +02:00
Campbell Barton
07ceb99213 Code Cleanup: use strict flags for math lib, add inline declarations 2013-12-06 03:57:17 +11:00
Campbell Barton
8003f0606d Compiler warnings: quiet float/double conversion warning 2013-12-05 10:34:30 +11:00
Lukas Tönne
67134a7bf6 Fix for EWA (elliptical weighted average) sampling in the compositor.
EWA sampling is designed for downsampling images, i.e. scaling down the size of
input image pixels, which happens regularly in compositing. While the standard
sampling methods (linear, cubic) work reasonably well for linear
transformations, they don't yield good results in non-linear cases like
perspective projection or arbitrary displacement. EWA sampling is comparable to
mipmapping, but avoids problems with discontinuities.

To work correctly the EWA algorithm needs partial derivatives of the mapping
functions which convert output pixel coordinates back into the input image
space (2x2 Jacobian matrix). With these derivatives the EWA algorithm
projects ellipses into the input space and accumulates colors over their
area. This calculation was not done correctly in the compositor, only the
derivatives du/dx and dv/dy were calculation, basically this means it only
worked for non-rotated input images.

The patch introduces full derivative calculations du/dx, du/dy, dv/dx, dv/dy for
the 3 nodes which use EWA sampling currently: PlaneTrackWarp, MapUV and
Displace. In addition the calculation of ellipsis area and axis-aligned
bounding boxes has been fixed.

For the MapUV and Displace nodes the derivatives have to be estimated by
evaluating the UV/displacement inputs with 1-pixel offsets, which can still have
problems on discontinuities and sub-pixel variations. These potential problems
can only be alleviated by more radical design changes in the compositor
functions, which are out of scope for now. Basically the values passed to the
UV/Displacement inputs would need to be associated with their 1st order
derivatives, which requires a general approach to derivatives in all nodes.
2013-12-04 16:05:56 +01:00
Lukas Tönne
45fc80153a Fix for interpolation errors on lower-left borders in compositor image
inputs.

http://wiki.blender.org/uploads/4/4c/Compo_image_interpolation_borders.png

Problem is that all image buffer reader nodes (RenderLayer, Image,
MovieClip) were clipping pixel coordinates to 0..N range (N being width
or height respectively). Bilinear interpolation works ok then on the
upper-right borders (x, N) and (N, y), since the last (N-1) pixel fades
out to N (background). But the lower-left (x, 0) and (0, y) borders are
not correctly interpolated because the nodes cut off the negative pixels
before the interpolation function can calculate their value.

To fix this, the interpolation functions are now entirely responsible
for handling "out of range" cases, i.e. setting (0,0,0,0) results for
invalid pixels, while also handling interpolation for borders.
Callers should not do pixel range checks themselves, which also makes
the code simpler. Should not have any real performance penalty,
the interpolation functions do this check anyway, so is probably even
slightly faster.
2013-12-04 12:09:13 +01:00
Campbell Barton
a9b97dcf22 User interface: internal change, collect panels to draw before drawing.
avoids calling poll twice, in some cases
2013-12-04 11:57:19 +11:00
Campbell Barton
f3d13bec6d Code Cleanup: correct fabsf/fabs/abs use 2013-12-04 09:24:38 +11:00
Campbell Barton
f64ae4cbe5 MemArena: use size_t instead of int for alloc args and internal storage.
also add BLI_memarena_calloc to be used when calloc isnt enabled for the arena.
2013-12-02 17:51:27 +11:00
Campbell Barton
4436620150 Polyfill: fast-path for convex ngons (and mostly convex ngons).
avoid intersection checks where there are no concave coords.
2013-12-02 15:56:14 +11:00
Campbell Barton
b9445106b2 Geometry API: polyfill2d, ear clipping polygon filling functions.
Simple/predictable polygon filling functions (no hole support)
originally from libgdx which have some advantages over scanfill.

- always creates the same number of triangles (never any missing faces).
- gives same results for any affine transformation.
- doesn't give so many skinny faces by default.

made some changes for Blender.
- remove last ears first (less to memmove)
- step over the ears while clipping to avoid some verts becoming fans to most of the other.
2013-11-30 22:00:01 +11:00
Campbell Barton
5910531318 Math Library: add functions cross_poly_v2, cross_tri_v2
also added utility macro for removing elements in the middle of an array
2013-11-30 15:57:16 +11:00
Alexandr Kuznetsov
e2429d6492 Woo Hoo. First git commit.
Changes for VC2013

Now, I can build Blender with VC2013 with Cycles, Collada, OpenExr,OpenImageIO disabled. Also, you need VC2008 sp1 installed to make old libs compatible.
2013-11-29 15:13:12 -05:00
Campbell Barton
918ad1719f Transform: improve normal orientation
- when 3 verts are selected ensure the normal is flipped on the side of existing vert normals.
  also use the most distant 2 verts to define the tangent.

- when 2 vertices are selected, the normal wasn't aligned with the vert normal.
2013-11-28 20:40:14 +11:00
Campbell Barton
13896063bc Math library: minor additions sqrtf_signed and copy_v2_fl2 2013-11-26 20:53:26 +11:00
Campbell Barton
63caaa2b12 Code Cleanup: rename vars for detecting change to be more consistent
rename change/is_change/is_changed/modified -> changed
also use bools over int/short/char and once accidental float.
2013-11-26 06:39:14 +11:00
Campbell Barton
153ae2dc7c fix for regression with own recent commit 2013-11-25 21:14:54 +11:00
Campbell Barton
d45ea33ff1 Fix T37591: 'Extensions' option ignored for movies. 2013-11-25 16:59:10 +11:00
Campbell Barton
ddb3ad9092 Code Cleanup: replace shorts with ints for path code. 2013-11-24 16:20:04 +11:00
Campbell Barton
91a24654dd Code Cleanup: whitespace / formatting 2013-11-24 15:23:38 +11:00
Campbell Barton
4c01709018 Math Library: add dot_m4_v3_row_x/y/z 2013-11-20 11:48:12 +11:00
Campbell Barton
4da651c8f0 Fix T37472: crash when packing UV islands. 2013-11-19 11:20:57 +11:00
Campbell Barton
aaa99106fe make IS_EQ and IS_EQF typecheck args 2013-11-10 14:13:26 +00:00
Lukas Toenne
61c411068b Patch #37274: Circle select for node editor, by Henrik Aarnio (hjaarnio).
Circle select was missing from node editor, and C key was assigned to now defunct "show cyclic dependencies". This patch remaps the key and adds circle select operator.
Functions to check intersection between rctf/rcti and a circle were also added to rct.c for code cleanliness and consistency.
2013-11-06 19:21:42 +00:00
Campbell Barton
f9d5bccb06 code cleanup: spelling 2013-10-31 23:52:44 +00:00
Campbell Barton
beae4f498d code cleanup: spelling 2013-10-31 14:10:01 +00:00
Campbell Barton
48c1e0c0fc spelling: use American spelling for canceled 2013-10-26 01:06:19 +00:00
Campbell Barton
a304b5a988 correct typo 2013-10-25 22:12:05 +00:00
Campbell Barton
c80c1c6f5c add copy_v4_fl4, replace QUATSET macro. 2013-10-22 03:31:21 +00:00
Campbell Barton
6193963daa style cleanup 2013-10-22 03:03:56 +00:00
Campbell Barton
7c8c49a34a style cleanup 2013-10-21 23:35:08 +00:00
Sergey Sharybin
e9d5e9813c Code cleanup: added generic function copt_m3_m3d 2013-10-20 12:08:51 +00:00
Sergey Sharybin
fc8b0ed5e5 Move utility functions from mball to mathutils 2013-10-18 23:38:51 +00:00
Irie Shinsuke
bf462838b3 Fix build failure with VS2012 + SCons, caused by redefinition of the bool type. 2013-10-17 06:40:35 +00:00
Sergey Sharybin
f0dcff9aa9 Task scheduler ported form CYcles to C
Replaces ThreadedWorker and is gonna to be used
for threaded object update in the future and
some more upcoming changes.

But in general, it's to be used for any task
based subsystem in Blender.

Originally written by Brecht, with some fixes
and tweaks by self.
2013-10-12 14:08:59 +00:00
Brecht Van Lommel
6d9ccbc28d Further tweak for dual quaternion armature deform problem, tweak the epsilon
value to solve some more cases.
2013-10-12 12:54:09 +00:00
Campbell Barton
b6db417ee4 code cleanup: use const's for vector args. 2013-10-12 02:19:37 +00:00
Brecht Van Lommel
744f691af4 Fix dual quaternion armature deform giving erratic results in some cases. Bug
was encountered in a Kiribati rig file.

The problem was actually in the matrix to quaternion conversion function. One
problem is that it was using the wrong matrix indices in case of an ill defined
matrix trace. Besides that FLT_EPSILON was too small to detect cases where
float precision becomes a problem.
2013-10-12 00:08:34 +00:00
Campbell Barton
f895bc54cd code cleanup: boxpack, pack struct and use unsigned ints 2013-10-11 00:22:00 +00:00
Campbell Barton
03602dc158 use BLI_bitmap for editmesh selection buffer to save some memory. 2013-10-10 22:30:16 +00:00
Campbell Barton
afab39b9d6 code cleanup: use const's for static arrays 2013-10-10 20:22:17 +00:00
Campbell Barton
e220d3228f add MEM_SIZE_OPTIMAL to avoid memory fragmentation & waste lost to slop-space. 2013-10-10 18:18:13 +00:00
Campbell Barton
590f58d455 code cleanup: redundant includes and add minor comments. 2013-10-08 20:18:38 +00:00
Bastien Montagne
6631d4ddd5 Build fix (issue could happen with scons,reported by ebrain on IRC, thanks).
Var declared in an #ifdef DEBUG, but used in an #ifndef NDEBUG…
2013-10-07 07:39:58 +00:00
Campbell Barton
8ccf118058 rename overlap to holes for isect_point_poly_v2 2013-10-05 12:36:35 +00:00
Campbell Barton
48013e8a9c more corrections to valgrind hinting. 2013-10-05 04:59:43 +00:00