Blender Git Commit Log
Git Commits -> Revision 4569f9a
Revision 4569f9a by Tamito Kajiyama (master) March 14, 2011, 00:36 (GMT) |
Optimized view map calculation by Alexander Beels. * View map calculation has been intensively optimized for speed by means of: 1) new spatial grid data structures (SphericalGrid for perspective cameras and BoxGrid for orthographic cameras; automatically switched based on the camera type); 2) a heuristic grid density calculation algorithm; and 3) new line visibility computation algorithms: A "traditional" algorithm for emulating old visibility algorithms, and a "cumulative" algorithm for improved, more consistent line visibility, both exploiting the new spatial grid data structures for fast ray casting. A new option "Raycasting Algorithm" was added to allow users to choose a ray casting (line visibility) algorithm. Available choices are: - Normal Ray Casting - Fast Ray Casting - Very Fast Ray Casting - Culled Traditional Visibility Detection - Unculled Traditional Visibility Detection - Culled Cumulative Visibility Detection - Unculled Cumulative Visibility Detection The first three algorithms are those available in the original Freestyle (the "normal" ray casting was used unconditionally, though). The "fast" and "very fast" ray casting algorithms achieve a faster calculation at the cost of less visibility accuracy. The last four are newly introduced optimized options. The culled versions of the new algorithms will exclude from visibility calculation those faces that lay outside the camera, which leads to a faster view map construction. The unculled counterparts will take all faces into account. The unculled visibility algorithms are useful when culling affects stroke chaining. The recommended options for users are the culled/unculled cumulative visibility algorithms. These options are meant to replace the old algorithms in the future. Performance improvements over the old algorithms depend on the scenes to be rendered. * Silhouette detection has also been considerably optimized for speed. Performance gains by this optimization do not depend on scenes. * Improper handling of error conditions in the view map construction was fixed. |
Commit Details:
Full Hash: 4569f9ae4e6cf60beadd082128629763bbae7462
SVN Revision: 35525
Parent Commit: c8deda3
Lines Changed: +4477, -182
20 Added Paths:
/source/blender/freestyle/intern/geometry/GridHelpers.cpp (+56, -0) (View)
/source/blender/freestyle/intern/geometry/GridHelpers.h (+199, -0) (View)
/source/blender/freestyle/intern/system/PointerSequence.h (+97, -0) (View)
/source/blender/freestyle/intern/view_map/ArbitraryGridDensityProvider.cpp (+108, -0) (View)
/source/blender/freestyle/intern/view_map/ArbitraryGridDensityProvider.h (+67, -0) (View)
/source/blender/freestyle/intern/view_map/AverageAreaGridDensityProvider.cpp (+120, -0) (View)
/source/blender/freestyle/intern/view_map/AverageAreaGridDensityProvider.h (+67, -0) (View)
/source/blender/freestyle/intern/view_map/BoxGrid.cpp (+210, -0) (View)
/source/blender/freestyle/intern/view_map/BoxGrid.h (+376, -0) (View)
/source/blender/freestyle/intern/view_map/CulledOccluderSource.cpp (+277, -0) (View)
/source/blender/freestyle/intern/view_map/CulledOccluderSource.h (+63, -0) (View)
/source/blender/freestyle/intern/view_map/GridDensityProvider.h (+131, -0) (View)
/source/blender/freestyle/intern/view_map/HeuristicGridDensityProviderFactory.cpp (+74, -0) (View)
/source/blender/freestyle/intern/view_map/HeuristicGridDensityProviderFactory.h (+54, -0) (View)
/source/blender/freestyle/intern/view_map/OccluderSource.cpp (+132, -0) (View)
/source/blender/freestyle/intern/view_map/OccluderSource.h (+70, -0) (View)
/source/blender/freestyle/intern/view_map/Pow23GridDensityProvider.cpp (+109, -0) (View)
/source/blender/freestyle/intern/view_map/Pow23GridDensityProvider.h (+67, -0) (View)
/source/blender/freestyle/intern/view_map/SphericalGrid.cpp (+221, -0) (View)
/source/blender/freestyle/intern/view_map/SphericalGrid.h (+388, -0) (View)
/source/blender/freestyle/intern/geometry/GridHelpers.h (+199, -0) (View)
/source/blender/freestyle/intern/system/PointerSequence.h (+97, -0) (View)
/source/blender/freestyle/intern/view_map/ArbitraryGridDensityProvider.cpp (+108, -0) (View)
/source/blender/freestyle/intern/view_map/ArbitraryGridDensityProvider.h (+67, -0) (View)
/source/blender/freestyle/intern/view_map/AverageAreaGridDensityProvider.cpp (+120, -0) (View)
/source/blender/freestyle/intern/view_map/AverageAreaGridDensityProvider.h (+67, -0) (View)
/source/blender/freestyle/intern/view_map/BoxGrid.cpp (+210, -0) (View)
/source/blender/freestyle/intern/view_map/BoxGrid.h (+376, -0) (View)
/source/blender/freestyle/intern/view_map/CulledOccluderSource.cpp (+277, -0) (View)
/source/blender/freestyle/intern/view_map/CulledOccluderSource.h (+63, -0) (View)
/source/blender/freestyle/intern/view_map/GridDensityProvider.h (+131, -0) (View)
/source/blender/freestyle/intern/view_map/HeuristicGridDensityProviderFactory.cpp (+74, -0) (View)
/source/blender/freestyle/intern/view_map/HeuristicGridDensityProviderFactory.h (+54, -0) (View)
/source/blender/freestyle/intern/view_map/OccluderSource.cpp (+132, -0) (View)
/source/blender/freestyle/intern/view_map/OccluderSource.h (+70, -0) (View)
/source/blender/freestyle/intern/view_map/Pow23GridDensityProvider.cpp (+109, -0) (View)
/source/blender/freestyle/intern/view_map/Pow23GridDensityProvider.h (+67, -0) (View)
/source/blender/freestyle/intern/view_map/SphericalGrid.cpp (+221, -0) (View)
/source/blender/freestyle/intern/view_map/SphericalGrid.h (+388, -0) (View)
24 Modified Paths:
/release/scripts/ui/properties_render.py (+1, -0) (Diff)
/source/blender/freestyle/intern/application/Controller.cpp (+67, -27) (Diff)
/source/blender/freestyle/intern/application/Controller.h (+5, -1) (Diff)
/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp (+5, -0) (Diff)
/source/blender/freestyle/intern/geometry/GeomUtils.cpp (+10, -10) (Diff)
/source/blender/freestyle/intern/geometry/GeomUtils.h (+10, -10) (Diff)
/source/blender/freestyle/intern/geometry/Grid.cpp (+4, -0) (Diff)
/source/blender/freestyle/intern/geometry/Grid.h (+29, -0) (Diff)
/source/blender/freestyle/intern/geometry/normal_cycle.cpp (+0, -16) (Diff)
/source/blender/freestyle/intern/geometry/normal_cycle.h (+13, -0) (Diff)
/source/blender/freestyle/intern/geometry/Polygon.h (+4, -5) (Diff)
/source/blender/freestyle/intern/geometry/SweepLine.h (+0, -11) (Diff)
/source/blender/freestyle/intern/stroke/StyleModule.h (+5, -1) (Diff)
/source/blender/freestyle/intern/view_map/FEdgeXDetector.cpp (+14, -13) (Diff)
/source/blender/freestyle/intern/view_map/FEdgeXDetector.h (+8, -0) (Diff)
/source/blender/freestyle/intern/view_map/Silhouette.h (+7, -0) (Diff)
/source/blender/freestyle/intern/view_map/ViewMap.h (+8, -0) (Diff)
/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp (+1277, -40) (Diff)
/source/blender/freestyle/intern/view_map/ViewMapBuilder.h (+25, -7) (Diff)
/source/blender/freestyle/intern/winged_edge/Curvature.cpp (+15, -17) (Diff)
/source/blender/freestyle/intern/winged_edge/WEdge.cpp (+24, -18) (Diff)
/source/blender/freestyle/intern/winged_edge/WEdge.h (+31, -4) (Diff)
/source/blender/makesdna/DNA_freestyle_types.h (+12, -2) (Diff)
/source/blender/makesrna/intern/rna_scene.c (+17, -0) (Diff)
/source/blender/freestyle/intern/application/Controller.cpp (+67, -27) (Diff)
/source/blender/freestyle/intern/application/Controller.h (+5, -1) (Diff)
/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp (+5, -0) (Diff)
/source/blender/freestyle/intern/geometry/GeomUtils.cpp (+10, -10) (Diff)
/source/blender/freestyle/intern/geometry/GeomUtils.h (+10, -10) (Diff)
/source/blender/freestyle/intern/geometry/Grid.cpp (+4, -0) (Diff)
/source/blender/freestyle/intern/geometry/Grid.h (+29, -0) (Diff)
/source/blender/freestyle/intern/geometry/normal_cycle.cpp (+0, -16) (Diff)
/source/blender/freestyle/intern/geometry/normal_cycle.h (+13, -0) (Diff)
/source/blender/freestyle/intern/geometry/Polygon.h (+4, -5) (Diff)
/source/blender/freestyle/intern/geometry/SweepLine.h (+0, -11) (Diff)
/source/blender/freestyle/intern/stroke/StyleModule.h (+5, -1) (Diff)
/source/blender/freestyle/intern/view_map/FEdgeXDetector.cpp (+14, -13) (Diff)
/source/blender/freestyle/intern/view_map/FEdgeXDetector.h (+8, -0) (Diff)
/source/blender/freestyle/intern/view_map/Silhouette.h (+7, -0) (Diff)
/source/blender/freestyle/intern/view_map/ViewMap.h (+8, -0) (Diff)
/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp (+1277, -40) (Diff)
/source/blender/freestyle/intern/view_map/ViewMapBuilder.h (+25, -7) (Diff)
/source/blender/freestyle/intern/winged_edge/Curvature.cpp (+15, -17) (Diff)
/source/blender/freestyle/intern/winged_edge/WEdge.cpp (+24, -18) (Diff)
/source/blender/freestyle/intern/winged_edge/WEdge.h (+31, -4) (Diff)
/source/blender/makesdna/DNA_freestyle_types.h (+12, -2) (Diff)
/source/blender/makesrna/intern/rna_scene.c (+17, -0) (Diff)