On Sat, 18 Jan 2014 21:23:23 -0800, Elvis Zhou <elvis.x.z...@gmail.com>
wrote:
On Sunday, 19 January 2014 at 04:45:30 UTC, Adam Wilson wrote:
On Sat, 18 Jan 2014 20:26:47 -0800, Kiith-Sa <kiithsa...@gmail.com>
wrote:
On Sunday, 19 January 2014 at 03:38:30 UTC, Adam Wilson wrote:
Hello Everyone,
Based on the previous thread I think we have enough to start laying
out the design and writing code for Aurora.
The choice that I would like to clarify is that Aurora will be a
retained mode API. I understand that this is not the best choice for
speed and that not everyone will be happy with this choice. However,
retained mode API's are typically much higher-level, which will make
it easier for developers that are unfamiliar with writing graphics
code to express their intent. Given the stated goal of Aurora I feel
that this is the best choice.
The next is that Aurora will have a pluggable backend rendering
system. This will allow us to support any rendering system capable of
meeting the requirements of Aurora's frontend. And when combined with
the retained mode API you could, in theory, swap renders on the fly.
Although I wouldn't want to be the first one try it!
Since Aurora has a pluggable backend for rendering I feel that it
will be prudent to use the low-level API's that are best suited to
each platform. This will Aurora to support each platform as best as
possible. As I currently can tell the following list represents
System 2D API / 3D API
Linux X11 / OpenGL 4.3
Android Canvas / OpenGL ES 3.0
OSX Quartz2D / OpenGL 4.3
iOS Quartz2D / OpenGL ES 3.0
Windows Direct2D / Direct3D 11
Windows RT Direct2D / Direct3D 11
The reason for targeting relatively new low-level API versions is
that by the time we actually complete the bulk of the work, they
won't be new anymore. If anyone has a suggestion for a 2D API on
Linux that has the ubiquity of the X11 but is easier to use, please
mention it! I would like to have a Wayland backend but that API is
still very new and not widely adopted. I've noticed that Android and
iOS seem to have many options for 2D graphics, none of which I've had
a chance to evaluate rigorously, any recommendations would be
appreciated.
As has been widely suggested, Aurora will be split into a number of
packages that are loosely coupled. In theory this would allow us to
pull the more broadly applicable packages in to Phobos as they mature
and then depend on those in Aurora. The tentative list of packages is
as follows:
aurora.application
aurora.primitives
aurora.graphics2d
aurora.graphics3d
aurora.text
aurora.image
aurora.math
aurora.animation
Hopefully, this break down will allow the user to pull in only what
they need for their project, without confusing them with choice.
Naming suggestions are welcomed!
Finally, I've have set up a GitHub organization for Aurora, which can
be accessed at: https://github.com/auroragraphics I haven't posted
any code yet, but I am working on aurora.application for Windows. The
aurora repo is the master repo and all other package repo's are
submodules of it. The aurora repo will consist primarily of the
scripts required to build Aurora. This is to make it easier for the
newbies to get started while enabling maximum flexibility for the
development team.
In the famous words on Andrei ... Destroy!
GL ES 3.0 is a subset of some 4.x version AFAIK, so it may be enough
to only target that instead of separately targeting GL 4.3 .
It may well be, but I don't want to rule out the possibility that
something may be easy under OpenGL 4.3 and slightly more difficult but
not impossible under OpenGL ES 3.0. In that case you could make a case
for supporting different backends. One of the main goals of Aurora, is
to make the backend produce the results Aurora demands, not the other
way around, so letting the backend API dictate the front-end runs
against that goal.
Also, why not OpenGL for 2D on Linux (and possibly elsewhere) ?
In general, it's preferable to use 2D API's for 2D graphics. Yes, you
can do 2D with OpenGL but it's significantly harder to get it right.
The most obvious example is that in 2D we use pixels as coordinates and
have no perspective to worry about, with 3D the your coordinates have
to be carefully calculated every time the window or perspective changes.
Also - I think there should be a possibility to switch between e.g. GL
and D3D on Windows (I assume that's intended?)
Yes, you would just have to specify the OpenGL backend. Aurora will
default to the best backend for the platform, but if you know that
something else is available you are welcome to use it. For all
practical purposes though the system default will be the best. The only
reason to use OpenGL on Windows is ideology, Aurora will render the
scene graph identically to DirectX.
https://github.com/Zoadian/aurora
Oops, I thought this is the official repo!! It's a new package added to
code.dlang.org yesterday.
Yea, that's not it. It's an odd choice for name though since we've been
using Aurora for the past couple of weeks here on the forums. I wonder if
he has been keeping track of the forums, and if he has it's kind of a
silly thing to do...
The link to the Aurora project being discussed here is:
https://github.com/auroragraphics
--
Adam Wilson
GitHub/IRC: LightBender
Aurora Project Coordinator