You can clone with
Cannot retrieve contributors at this time
IDEAS=====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: - DPX & CIN - 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 accordingly.- 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?