On Tuesday, 7 January 2014 at 23:08:42 UTC, Ross Hays wrote:
I also kind of think that having an immediate mode high level API is a bit pointless. It would allow some nice abstractions, but I would still favor retained mode and maybe some quick helper functions that could partially imitate immediate mode (though that should really be a lower priority).

I've looked a bit at the Open Inventor spin-offs: vrml, x3d, Coin3d. The latter is actually a BSD clause updated Open Inventor 2.1 implementation, but it is big and not really useful since it is C++. Except as a source for ideas, perhaps. I really wish I knew more about SGI's Performer, which was a performance oriented scene graph toolkit which could run in parallell.

One possible solution that makes a trade off between ease-of-use and performance:

If one accepts an extra latency of 1 frame, then a "buffered" mode with intelligent caching might be possible, as a programmer friendly effort. That is:

Frame 0:
Thread A: collect draw calls and update accelerator structures, cache where possible
Thread B: sleeping

Frame 1:
Thread A: collect draw calls and update accelerator structures, cache where possible Thread B: flush optimized and reordered draw calls to GPU (collected in frame 0)

That is pretty much what I was thinking as well when I was talking about avoiding breaking things into some std.aurora package. Things that phobos could already stand to have such as vectors, audio, better netcode, and so on, may as well be integrated in phobos and then used in Aurora, rather than Aurora becoming some weird extension of phobos.

Yes, I think there are many useful building blocks that can be useful in batch mode (for conversion tools) and for game-servers that can later be useful for building a render engine.

- Spatial acceleration structures
- ray intersection tests
- object-object intersection tests
- various geometric algorithms (Graphic Gems series)
- mesh algorithms

A lot of this stuff could play nicely together with the collection apis, I think.

What would be nice to have in phobos is a idiomatic COLLADA DOM and helper functions, because it is a quite intricate file format. Maybe that could be a starting point for an engine.


Reply via email to