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
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
cc0dafa627
Addition of some fake nodes to use SIMD even when theres only 3 nodes
2009-08-13 20:35:53 +00:00
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
495ef8a6a2
fix instance support when using SIMD
2009-08-11 17:28:58 +00:00
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
4ce316ee0f
Ability to disable hints at compile time
2009-08-10 21:37:16 +00:00
b7a696e2ad
Made -O3 and -msse2 default flags for bf_render_raytrace
2009-08-07 15:57:02 +00:00
51cad12120
*BLI_memarena support for any power of two alignment
...
*some simd stuff on bvh
2009-08-07 13:49:15 +00:00
20c9f2e8ab
Fix _MM_SHUFFLE_ order
2009-08-07 01:42:51 +00:00
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
4bc9ebd61f
usage of simd on bb tests
2009-08-06 20:20:40 +00:00
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
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
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
2160f36fea
Fix point-hint
2009-08-04 18:03:04 +00:00
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
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
29530beb90
NlogN building:
...
sort once
select subsets and kept the order (on X, Y and Z)
2009-08-03 17:56:38 +00:00
84d86540dd
changed to STL sort
2009-08-02 12:11:14 +00:00
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
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
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
e3f7cad32d
*fix (was losing childs)
2009-07-14 23:26:00 +00:00
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
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
e264087fad
I had applied a patch twice.. code was duplicated
2009-07-11 22:29:53 +00:00
d6aefa6abd
Added module bf_render_raytrace (source/blender/render/intern/raytrace)
...
to be able to use C++ at raytrace code
C++ used in here is basicly C with templates and function overloads,
to make it easier to reuse code between structures.
For now BVH was converted in C++ and moved to this module
2009-07-11 22:13:01 +00:00