Commit Graph

51 Commits

Author SHA1 Message Date
Brecht Van Lommel
ec7df03c86 Warning fixes, one actual bug found in sequencer sound wave drawing. Also
changed some malloc to MEM_mallocN while trying to track down a memory leak.
2010-02-08 13:55:31 +00:00
Brecht Van Lommel
6a0308aad3 Raytrace: only print debug info when running with -d option. 2010-01-12 19:45:01 +00:00
Kent Mein
fcaad00bda Some fixes to get blender compiling on solaris.
Kent
2009-12-17 17:42:26 +00:00
Nathan Letwory
c2b71607d2 * provide SCons support to enabling jaguarandi SIMD raytracer optimizations for real :)
Until now only SSE switches were defined, but to really enjoy the SIMD structures, the
  __SSE__ define needs to be given. This can now be done with setting in your user-config.py

          WITH_BF_RAYOPTIMIZATION=True

  (or WITH_BF_RAYOPTIMIZATION=1 on command-line)
2009-12-05 00:26:20 +00:00
Brecht Van Lommel
37e4a311b0 Math Lib
* Convert all code to use new functions.
* Branch maintainers may want to skip this commit, and run this
  conversion script instead, if they use a lot of math functions
  in new code:
  http://www.pasteall.org/9052/python
2009-11-10 20:43:45 +00:00
Brecht Van Lommel
022be64517 Bugfix: raytracer building could crash (abort due to an assert), when
using for example a text object scaled down to size zero. This was due
to nan's generated through division by zero.
2009-10-20 18:27:46 +00:00
Ton Roosendaal
401c185fbc Get 2.5 trunk to compile. this C++ code failed for gcc 3.3.
Error log:

/usr/include/gcc/darwin/3.3/c++/cmath: In function `float std::ceil(float)':
/usr/include/gcc/darwin/3.3/c++/cmath:175: error: parse error before `(' token
/usr/include/gcc/darwin/3.3/c++/cmath: In function `float std::floor(float)':
/usr/include/gcc/darwin/3.3/c++/cmath:249: error: parse error before `(' token
/usr/include/gcc/darwin/3.3/c++/cmath: In function `float std::fmod(float, 
   float)':
/usr/include/gcc/darwin/3.3/c++/cmath:267: error: parse error before `(' token
2009-10-19 17:47:24 +00:00
Andre Susano Pinto
f4d2926986 Fix [#19602] Rayshadow that goes through transparent plane disappears
(some bugs may show on other places if some of the code isnt prepared to handle non-normalized is->vec)
2009-10-13 10:52:18 +00:00
Andre Susano Pinto
deb30e8f9e Fix #19571 (reported by Markus Ilmola):
Added missing callbacks. Was leading to crashs when the raytree was empty.
2009-10-10 18:42:20 +00:00
Andre Susano Pinto
208d57323e Fixed #19571
(was crashing when building a raytree from a scene withouth any geometry)
2009-10-08 11:24:06 +00:00
Guillermo S. Romero
9e38ec2506 Add raytrace subdir to Makefiles.
The makefile is a copy of the source one, not tuned, just to unbreak build.
This raises some questions: why separate dirs? why each build system takes
a different approach (different libs vs all source files into one)?
2009-10-06 17:01:00 +00:00
Andre Susano Pinto
2011ba50c8 Last fix still failed to link under mingw.
This time it works! (gcc and mingw can handle compile and link)
2009-10-06 12:23:25 +00:00
Andre Susano Pinto
ba3ec58d01 *Added memset's to make sure counters start on zero
*Disabled ray counter (can be enabled on render/extern/include/RE_raytrace.h by commenting out the define)
*marked bvh_node_merge() as static inline (hopping it now compiles on gcc and mingw)
2009-10-06 10:52:14 +00:00
Joshua Leung
08deeee455 One last try - this should fix the remaining issues:
* Made bvh_node_merge() in svbvh.h static (fix suggested by jaguarandi). This makes mingw link again.

* Also, patched my previous fix for  ... = {}; since mingw didn't like the other fix (which was for msvc).
2009-10-06 10:32:07 +00:00
Joshua Leung
c93127d06f Some more compile fixes for jaguarandi's commit, this time for msvc+scons
* Replaced ... = {}; with ... = {0}; 

* Solved problem with logf(), where msvc couldn't figure out which version of log() to call (solved by casting the int argument to a float, but could also have been to double)...

* The cflags and cxxflags for scons when compiling the rendering module were only valid for gcc compiles. These will still need to get added for msvc sometime, but for now, there are no more warnings about unknown options...
2009-10-06 10:23:25 +00:00
Joshua Leung
1c940d7677 Attempts at some compile fixes for jaguarandi's code:
* mingw almost compiles again cleanly, except for a linking error when linking blender http://www.pasteall.org/8297
* win64 should compile again too to a similar degree?
* silenced warnings about no newlines...
2009-10-06 03:40:50 +00:00
Andre Susano Pinto
11bdf6ea10 Added #ifdef __SSE__ so it can still build when SSE is disabled at compile time 2009-10-06 00:28:07 +00:00
Andre Susano Pinto
55541d8a81 Added some test_break during the build process.
(Maybe later this should be done with some thread_cancel function instead of doing variable/callbacks tests)
2009-10-04 16:56:00 +00:00
Andre Susano Pinto
8da55763b5 *Updated UI options and added UI options to:
control whether instances are used or not
	control whether vertexs are stored localy or not

*Removed unsused code
2009-10-01 18:30:59 +00:00
Andre Susano Pinto
82198721d6 Raycounters fix 2009-09-28 10:25:12 +00:00
Andre Susano Pinto
1305715d2d *Added VlakPrimitive (this rayobject rimitive only stores ObjectRenderInstance and VlakRen pointers)
- it difers from RayFace that localy stored the vertex coordinates.
- basicaly this reduces memory usage
2009-09-24 22:55:57 +00:00
Andre Susano Pinto
f8657be654 *Ray counters (number of BB/primitive tests/hits and other raytrace counters) can now be enabled/disabled at compile-time.
#define RE_RAYCOUNTER (/source/blender/render/extern/include/RE_raytrace.h)

*Some other small organization on code

(will be disable as this only matters for testing and developping)
2009-09-13 20:59:25 +00:00
Andre Susano Pinto
64af3a2618 *introduced new method for packing/optimizing trees after building
(this is a generalization of some of the experimental stuff i tried during SoC,
 but only had time to improve a few days ago)
 - it should yield slightly better results
 - the cost model can somehow be tweaked to optimize for diferent trees.

*cleaned up some code
*added counters for number of SIMD BB tests
*added GPL license block on missing files
2009-09-06 19:14:06 +00:00
Andre Susano Pinto
ea18c6ef0a Code reorganization
-separated vbvh, svbvh, qbvh in diferent files (before the only way to switch between them was at compile time)
2009-08-29 17:24:45 +00:00
Andre Susano Pinto
aec7f2f2c4 *Changed RayObject_ calls to RE_rayobject to keep consistency on calls
*Moved part of counters code to a separated file (rayobject_raycounter.c)
2009-08-25 20:26:50 +00:00
Andre Susano Pinto
cc0dafa627 Addition of some fake nodes to use SIMD even when theres only 3 nodes 2009-08-13 20:35:53 +00:00
Andre Susano Pinto
cb40f0ff80 Another tree pass during build to increase the number of nodes that have multipe of 4childs 2009-08-13 15:56:24 +00:00
Andre Susano Pinto
495ef8a6a2 fix instance support when using SIMD 2009-08-11 17:28:58 +00:00
Andre Susano Pinto
5d40c1b597 *Added a tree structure with a variable number of childs per node, but with groupped childs (for SIMD)
*SIMD support for the first 4*N childs of each node
*Some bvh code organized
2009-08-11 00:33:51 +00:00
Andre Susano Pinto
4ce316ee0f Ability to disable hints at compile time 2009-08-10 21:37:16 +00:00
Andre Susano Pinto
b7a696e2ad Made -O3 and -msse2 default flags for bf_render_raytrace 2009-08-07 15:57:02 +00:00
Andre Susano Pinto
51cad12120 *BLI_memarena support for any power of two alignment
*some simd stuff on bvh
2009-08-07 13:49:15 +00:00
Andre Susano Pinto
20c9f2e8ab Fix _MM_SHUFFLE_ order 2009-08-07 01:42:51 +00:00
Andre Susano Pinto
3ef7c28402 improved SIMD on raytrace (up to the moment support of SIMD is done at dfs and on any type of tree)
(it only shows worth on -O3 -msse2)
because it seems gcc makes horrible asm code on -O2
2009-08-07 00:51:41 +00:00
Andre Susano Pinto
4bc9ebd61f usage of simd on bb tests 2009-08-06 20:20:40 +00:00
Andre Susano Pinto
f16df034c3 *Process leafs as soon as found instead of pushing them on stack for later evaluation (leads to early exits)
(this is mixed with some simd code commit, althouth no simd is being used up to the moment)
2009-08-06 17:45:51 +00:00
Andre Susano Pinto
f7179efde3 no need to calculate the exact nearest distance if we are not using any heuristic based on that 2009-08-05 21:09:41 +00:00
Andre Susano Pinto
bbdba89d06 generic hints for raytracer
for now only BB hint (i am  hoping to find a decent frustum-test)
2009-08-05 12:44:11 +00:00
Andre Susano Pinto
2160f36fea Fix point-hint 2009-08-04 18:03:04 +00:00
Andre Susano Pinto
7e9dc51cd1 Skip BB tests on primitives
the efficiency of this depends on ray-bb and ray-triangle functions efficiency
2009-08-04 17:24:49 +00:00
Andre Susano Pinto
eaf232cad9 single tree (by default)
now that build is nlogn (it should be worth to the tree of trees)
2009-08-03 23:25:38 +00:00
Andre Susano Pinto
29530beb90 NlogN building:
sort once
	select subsets and kept the order (on X, Y and Z)
2009-08-03 17:56:38 +00:00
Andre Susano Pinto
84d86540dd changed to STL sort 2009-08-02 12:11:14 +00:00
Andre Susano Pinto
2830f25ff3 Another try with building better trees (this should never make worst trees)
Expected number of BB tests should reduce a bit (depending on the scene)
2009-07-17 19:09:42 +00:00
Andre Susano Pinto
146b54d5e8 *increased stack size (later this should be prepared for dealing with stack size in runtime)
*put cost model back to normal
2009-07-15 17:44:25 +00:00
Andre Susano Pinto
ef1fcd8ad1 *Added support to "BB hints" (which works like a BB version of LCTS - longest common transversing subtree)
It creates a tree cut after knowing that a given point will pass on a BB.
This tree cut is used to accelarate the rays casted from a given BB, eliminating unnecessary BB tests from root till the tree cut.
2009-07-15 17:38:00 +00:00
Andre Susano Pinto
e3f7cad32d *fix (was losing childs) 2009-07-14 23:26:00 +00:00
Andre Susano Pinto
7afffd2950 Just another experimental stuff to optimize the expected number of BB test on bvh trees
*tree pushdowns after the pushsups :P (its still not local optimum)
2009-07-14 23:08:55 +00:00
Andre Susano Pinto
a6b328b825 *Moved rtbuild to bf_render_raytrace
*Added vbvh - Just a experimental tree type :)
Variable Way BVH - there is no hardcoded number of childs per each Tree Node
 - idea is to optimize a tree to reduced the expected number of BB tests even after applying SAH (for that an hardcoded n-way is not enough)
 - for now childs are stored on a linked list
2009-07-12 18:04:10 +00:00
Andre Susano Pinto
e264087fad I had applied a patch twice.. code was duplicated 2009-07-11 22:29:53 +00:00