I could definitely use something like this. I'm currently working
on a GUI library, and I still could use a decent graphics
back-end. I suspect Aurora could function in this capacity.
I would love to contribute, though my experience with graphics is
mostly limited to Win32 GDI. However, I could probably help with
testing it in the early stages.
Also, I'm wondering if you are planning to include(or at least
support a possible implementation) perfect anti-aliasing and
stuff like that. I know AntiGrain has been mentioned here, I've
used it in the distant past for text rendering, and it was pretty
cool to have that kind of quality. For a lot of applications, the
performance won't be effected much by this, and in some
applications quality is very important.
----------------
On Monday, 6 January 2014 at 04:11:07 UTC, Adam Wilson wrote:
Hello Fellow D Heads,
Recently, I've been working to evaluate the feasibility and
reasonability of building out a binding to Cinder in D. And
while it is certainly feasible to wrap Cinder, that a binding
would be necessarily complex and feel very unnatural in D.
So after talking it over with Walter and Andrei, we feel that,
while we like how Cinder is designed and would very much like
to have something like it available in D, wrapping Cinder is
not the best approach in the long-term.
With that in mind, we would like to start a discussion with
interested parties about building a graphics library in the
same concept as Cinder, but using an idiomatic D implementation
from the ground up. Walter has suggested that we call it
Aurora, and given the visual connotations associated with that
name, I think it is most appropriate for this project.
I know that the community has worked through a few of the
problems involved. For example, I can't remember who wrote it,
but I've seen a module floating around that can create a window
in a cross-platform manner, and I know Mike Parker has been
heavily involved in graphics for D. And no discussion of
graphics would be complete without Manu, whose input Walter,
Andrei, and I would greatly appreciate.
I want to point out that while Cinder will be the design
template, the goal here is to use D to it's maximum potential.
I fully expect that what we end up with will be quite different
than Cinder.
Due to the scope of the project I think it would be best to
execute the project in stages. This will allow us to deliver
useful chunks of working code to the community. Although I
haven't yet heard anything on the subject, I would assume that
once Aurora reaches an acceptable quality bar it would be a
candidate for inclusion in Phobos, as such I would like to
approach the design as if that were the end goal.
The logical phases as I can see them are as follows, but please
suggest changes:
- Windowing and System Interaction (Including
Keyboard/Mouse/Touch Input)
- Basic Drawing (2D Shapes, Lines, Gradients, etc)
- Image Rendering (Image Loading, Rendering, Modification,
Saving, etc.)
- 3D Drawing (By far the most complex stage, so we'll leave it
for last)
Here are a couple of things that Aurora is not intended to be:
- Aurora is not a high-performance game engine. The focus is on
making a general purpose API that is accessible to
non-graphics programmers. That said, we don't want to purposely
ruin performance and any work and guidance on that aspect will
be warmly welcomed.
- Aurora is not a GUI library. Aurora is intended as a creative
graphics programming library in the same concept as Cinder.
This means that it will be much closer to game's graphics
engine, in terms of design and capability, than a UI library;
therefore we should approach the design from that standpoint.
My personal experience in graphics programming is almost
completely with DirectX and Windows so I would be happy to work
on support for that platform. However, we need to support many
other platforms, and I know that there are others in the
community have the skills needed, your help would be invaluable.
If you are interested in helping with a Cinder like library for
D and/or have code you'd like to contribute, let's start
talking and see what happens.
While I do have some ideas about how to design the library, I
would rather open the floor to the community first to see what
our combined intellect has to offer as I don't want to unduly
influence the ideas generated here. The idea is to build the
best technical graphics library that we can, not measure egos.
So with the above framework in mind, let's talk!