summaryrefslogtreecommitdiffstats
path: root/libdimension/prtree.c
Commit message (Collapse)AuthorAgeFilesLines
* future: Add a race-free way to examine a partial computation.Tavian Barnes2014-04-231-2/+2
| | | | | | This allows safe OpenGL previews, for example. dmnsn_future* learned the dmnsn_future_{pause,resume}() functions which cause all worker threads to block. render.test now survives Helgrind with no errors.
* prtree: Sort large workloads in parallel.Tavian Barnes2014-02-011-10/+53
| | | | Performance benefit is around 33% for more than 1000 objects.
* prtree: Optimize dmnsn_new_prtree() by avoiding some allocation.Tavian Barnes2013-09-051-97/+115
| | | | Around 11% faster.
* Allow other BVH implementations to be used.Tavian Barnes2012-12-171-409/+30
| | | | | dmnsn_bvh is now a generic API, which could potentially support octrees, etc, in addition to PR-trees.
* Add some branch instrumentation from gcov profile.Tavian Barnes2011-11-161-3/+3
|
* Add a dmnsn_unreachable() macro.Tavian Barnes2011-11-161-2/+1
| | | | Also rename inline.h to compiler.h.
* Simplify loop condition in PR-tree traversal.Tavian Barnes2011-11-031-6/+4
| | | | | Doing this used to actually generate *worse* code, but now it looks like it generates much better code.
* Clean up PR-tree intersection code.Tavian Barnes2011-11-021-24/+23
|
* Rename dimension-impl.h to dimension-internal.hTavian Barnes2011-08-251-1/+1
|
* Wrap pthread API to reduce duplicated error tests.Tavian Barnes2011-08-021-21/+8
|
* Add leopard pigment.Tavian Barnes2011-07-281-1/+1
|
* Vast libdimension API and internals improvements.Tavian Barnes2011-06-131-3/+3
| | | | | Couldn't really do these while I was trying to be POV-Ray compatible, 'cause they would've broken compatibility.
* Add basic leak check.Tavian Barnes2011-05-161-1/+1
|
* Fix crash when deleting unused prtree caches.Tavian Barnes2011-05-111-12/+17
|
* prtree.c code cleanup.Tavian Barnes2011-05-111-8/+8
|
* Use arrays for PR-tree construction instead of lists.Tavian Barnes2011-05-101-133/+115
|
* Plug memory leak caused by prtree caching.Tavian Barnes2011-05-101-15/+57
|
* Make dmnsn_new_prtree() more scalable.Tavian Barnes2011-05-091-372/+223
|
* Cache previous intersections in dmnsn_prtree_intersection().Tavian Barnes2011-04-201-2/+65
| | | | | Due to geometric locality of rays, this provides a very large speedup for most scenes.
* Shrink the dmnsn_optimized_line type.Tavian Barnes2011-04-171-9/+9
|
* Don't use awkward (*fptr)() syntax.Tavian Barnes2011-04-031-12/+12
|
* Update email address.Tavian Barnes2011-03-081-1/+1
|
* Bump DMNSN_PRTREE_B to 8.Tavian Barnes2011-03-081-1/+1
|
* New DMNSN_HOT macro.Tavian Barnes2011-03-081-2/+2
|
* Fix license years.Tavian Barnes2011-02-171-1/+1
|
* Flatten the pre-order traversal of the PR-tree for better cache locality.Tavian Barnes2011-02-091-108/+127
|
* Fix constness for dmnsn_list_comparator_fn.Tavian Barnes2010-11-281-13/+25
|
* End sentences with periods.Tavian Barnes2010-11-151-1/+1
|
* Document libdimension with Doxygen.Tavian Barnes2010-11-141-12/+33
|
* Factor out transformation code from object callbacks.Tavian Barnes2010-11-061-4/+4
|
* Slight ray-AABB intersection test optimization.Tavian Barnes2010-11-021-1/+1
|
* Add dmnsn_free() to match dmnsn_malloc().Tavian Barnes2010-09-261-3/+3
|
* Optimize PR-tree construction a bit.Tavian Barnes2010-08-011-7/+5
|
* Fix PR-tree implementation.Tavian Barnes2010-08-011-13/+14
| | | | Grab priority leaves all at once instead of round-robin.
* Fix some -W{strict,missing}-prototypes warnings.Tavian Barnes2010-07-311-1/+1
|
* Move test outside of loop in dmnsn_prtree_intersection_recursive().Tavian Barnes2010-07-201-7/+13
|
* Make DMNSN_PRTREE_B and internal types local to prtree.c.Tavian Barnes2010-07-181-1/+13
|
* Remove degeneracy test from ray-box intersections.Tavian Barnes2010-07-181-17/+25
| | | | | To avoid testing degenerate boxes, set prtree->root to NULL when the tree contains no bounded objects.
* Add descriptive comment to new branchless ray-AABB intersection tests.Tavian Barnes2010-07-151-0/+9
|
* Remove some unneeded tests from ray-AABB intersection tests.Tavian Barnes2010-07-151-43/+28
|
* Clean up optimized ray-AABB intersection code a bit.Tavian Barnes2010-07-151-21/+29
|
* Precalculate 1.0/ray.n.{x,y,z} for ray-box intersection tests.Tavian Barnes2010-07-141-12/+17
| | | | This saves us nearly a factor of 2, and I feel silly for not doing this before.
* Rename dimension_impl.h to dimension-impl.h.Tavian Barnes2010-07-141-1/+1
|
* Save some degeneracy tests in ray-AABB intersection tests.Tavian Barnes2010-07-091-16/+14
|
* Make dmnsn_ray_box_intersection() return false for zero boxes.Tavian Barnes2010-07-031-3/+3
|
* New dmnsn_bounding_box_is_infinite() predicate.Tavian Barnes2010-06-061-1/+1
|
* Don't use an anonymous union in prtree.c.Tavian Barnes2010-06-061-25/+25
|
* New bounding box special constructors.Tavian Barnes2010-06-061-28/+14
|
* New dmnsn_prtree_inside() function, rename dmnsn_prtree_search().Tavian Barnes2010-06-061-6/+46
|
* Add children to dmnsn_objects, which enables splitting unions.Tavian Barnes2010-06-051-1/+25
| | | | Also, use PR-trees for unions internally.