Facilis Engine is an up and coming graphics engine written entirely in managed code. It is capable of rendering with both DirectX9 and OpenGL. The engine functions in both Windows and Linux, and soon Mac OS X.
Currently the project is pre-alpha. Many features are either not implemented, or early in planning. Constant interface changes are to be expected. And of course, bugs galore.
Here are some key features of "Facilis Engine":
· Takes full advantage of the NET framework for a significant boost to productivity with insignificant loss of performance.
· Support for either OpenGL or Direct3D9.
· Runs in Windows, Linux, and Mac OS X without use of plugins or rebuilding from source.
· Graphics code is divided into two sections: a thin, abstract wrapper around rendering systems, and an engine built on top of the wrapper. The wrapper can be used independently of the engine.
· Truetype bitmap fonts (soon outline fonts as well) (Win32 only).
· Multiple window rendering (Win32 only).
· Dynamic textures.
· Normal mapping.
· Rudimentary shader support (under development).
· Loading and animating Quake 2 md2 files.
· Hierarchy of scene nodes to which objects are attached. Child nodes and their attached objects are transformed relative to the parent node.
· A rudimentary particle system that will form the basis for a more sophisticated, pluggable one.
What's New in This Release:
· Added a generic Singleton class.
· Logger and GraphicsEngine are now derived from Singleton. All formerly static members are now accessible through the static Instance property.
· Added a SpriteBatch implementation that renders two dimensional sprites in
· screen space. Sprites can be rendered opaque, additively, or by alpha transparency.
· The Xna RenderSystem now depends on Xna beta 2. The project for that RenderSystem is now a windows Xna game library project file. In the future seperate project files will be provided to be compatible with Xbox 360 development. It appears that all projects in the solution will have to be Xna projects in order to execute the application on the Xbox 360, though this may change as new information appears.
· BitmapFont has been renamed to TrueTypeFont, to distinguish it from the new Facilis.Graphics.Engine.Font class, which renders text using glyphs
· prerendered to a texture. If the FreeType library is successfully used in the
· future to generate font textures, TrueTypeFont will be removed as it is a very difficult class to implement for all platforms, and it's especially
· difficult to get the result to look the same in all render systems.
· The Viewport class no longer has a ClearColor property. The clear color is
· now specified through the IRenderTarget.ClearBuffers method. When using
· Facilis.Graphics.Engine the ClearColor is specified for each Scene object.
· Fixed a number of memory leaks in the managed direct3d9 rendersystem.
· Created an abstract InputSystem class for simplifying keyboard, mouse, gamepad, and joystick input. Created early DirectInput and Xna implementations, with an SDL implementation to follow.
· Added an early action mapper. This maps actions to events, and performs
· the action when the event occurres. Thus allowing one to configure the
· prerequisates for actions; for example remapping keys or changing the input device.
· Removed the Window.OnKeyPressed event. Keyboard input is now handled
· solely through OnKeyDown and OnKeyUp. All input events may be removed from the Window class in a future release, after which all input will be handled through ActionMappers.
· Renamed Facilis.Audio.DirectX to Facilis.Audio.ManagedDirectSound, and
· Facilis.Input.DirectInput to Facilis.Input.ManagedDirectInput.
· Facilis.Graphics.Engine.Scene is now abstract. The implementation it formerly provided is now found in BasicScene, which will eventually perform frustum culling but no space partitioning. Other implementations of Scene will be provided that perform space partitioning.
· Facilis.TransformationNode.ITransformables has been renamed to Children.