Ideas

Big ones:

  • Simple design, flexible interface, reasonable defaults. I think this could make it both useful for quick, simple uses and deeper, more complex ones.
  • At first, Single-platform, still Windows and DX9. I just really don't feel like dealing with that crap at least for a while. But it should be designed in such a way as to be abstract enough that porting it to other frameworks and platforms shouldn't be terribly difficult.
  • The fixed-function graphics pipeline is out. DX10 drops it entirely, and graphics manufacturers are not pouring much effort into it anymore (I wouldn't be surprised if it's just emulated in most cards these days anyway). The programmable pipeline is far more flexible, and you can still use the fixed-function pipeline through it.
  • Pass graph system. Set up a graph which you can use to render multiple-pass effects, render-to-textures, postprocessing, etc. Fun.
  • Integration with a windowing interface? Use something like DFL to handle all the bullshit windowing? Make it possible to embed nonagon within DFL apps (make a nonagon control)? That would be nice. I hate the Windows API.
  • MiniD integration. I'm practically required to. This is actually one of the reasons I created MiniD to begin with!
  • Multithreading-friendly design. Sigh. I hate it but it has to be done.

Little ones:

  • How should effective sparse resource management be handled? How should it interact with the GC? What about resource caching?
  • Optional integration with a physics system would be sweet.
  • Some kind of model editor. Not a modeler, but one where you can load a model and tweak engine-specific attributes - effects/shaders to use, parameters for that, mesh names etc. A nonagon-specific model format, maybe based on X, would be nice.
  • Callback-oriented input? Maybe with the default callbacks just filling in the input state like it does now.