Code Monkey home page Code Monkey logo

fast-bvh's Introduction

Code: Fast-BVH, an optimized Bounding Volume Hierarchy
Author: Brandon Pelfrey ([email protected])
        Borrowed AABB Intersection code referenced in BBox.cpp
Date: April 17, 2012

This code, which I am releasing for public use, provides an optimized Bounding Volume Hierarchy (BVH).
The vector and axis-aligned bounding box (AABB) code included requires SSE in order to function.
The entire build and intersection test functionality is recursion-less and is much more optimized than
the one found in say, PBRT (Physically Based Rendering, by Pharr + Humphreys). With that said, if you
see another cool trick to speed things up, I'd love to see it!

The BVH itself makes minimal assumptions on the items it may contain: Objects need only implement the 
getIntersection(), getBBox(), and getCentroid() functions in order to be queryable.
The included example code renders a million spheres distributed inside of a cube using the BVH (in <3 seconds on my old MacBook!)   

I have attempted to comment this code well and make everything well-understood. If there is an issue 
with the code, a question as to how something works, or if you use this in a project, please let me know!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.