Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

file 66 lines (53 sloc) 2.189 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
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?
Something went wrong with that request. Please try again.