Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
68 lines (53 sloc) 2.14 KB
Ideas for things to include in the library:
- Data structures to hold various 3D object types
- Indexed triangle mesh
- Lights
- The entire scene
- Implementations of additional loaders for 3D file formats:
- .lwo (LightWave Object format)
- .max (3D Studio Max file format)
- .dae (Collada file format)
- Implementations of various acceleration structures:
- BVH (Already implemented in Ray and Kaleidoscope)
- Regular grid (Already implemented in Nuke)
- Octree
- Kd-tree
- More image formats:
- EXR (using the OpenEXR libraries)
- Support for loading/processing images in tiles.
- Split the current image abstraction into two parts:
- Texture (which describes data in texture memory on the GPU).
- Image (which describes a grid of pixels in RAM).
- Helper code for rendering to a FBO.
- Helper code for working with CUDA?
- Helper code for working with OpenCL?
- Code to find out where a ray hits a scene.
- Support for mouse gestures.
- Conditional compilation of parts which depend on external libraries.
- Build scripts should check which libraries are installed and build
- Plugin architecture for file format support.
- Plugins are dynamic libraries.
- Have a standard search path for them.
- Loaded lazily at runtime.
- Plugins advertise the file extensions they can load.
- The first plugin found in the search path for a particular format is the
one which gets used.
- Different interfaces for image plugins, geometry plugins, etc.
- Users can add support for extra file formats by just dropping a new dynamic
library supporting the appropriate interface into a directory in the plugin
search path and restarting the program.
- All plugins have these methods:
* int pluginCategory();
* const char* pluginName();
* const char** pluginFormats();
- Image format plugins also have:
* RawImage* loadImage(const char* filename);
- Geometry format plugins also have:
* void loadModel(ParserCallbacks* callbacks, const char* filename);
...or something like that.
- Divide the source code up into subdirectories.
- Maybe into sub-namespaces as well?