Engine Features

From Orion Engine Wiki
Jump to navigation Jump to search

The Orion Engine is a full-featured real-time rendering software development kit and tool set. Code is provided to allow the creation of cross-platform applications, and to create custom drivers/modules that support new operating systems and/or platforms. This page lists the main features of the engine that are currently finished.

NOTE: See the Incomplete Code page for details on the features that are not yet finished.

This documentation is only a preliminary specification and is subject to change at any time.

General Details

  • Custom run-time type information (RTTI) implementation.
    • Scene loaders can instantiate new objects using only the class name.
    • Allocate at run-time a scene object that was enumerated from a plug-in.
    • Dynamically create and manage classes through scripting.
  • Custom object serialization routines.
  • Custom memory manager, with detailed statistics tracking.
  • Advanced error logging functionality.
  • Log file management.
  • String localization database support.

Scene Manager

  • The core engine design is based on an abstract object model that allows the definition of a wide range of scene object types.
  • Comprehensive plug-in scene object support.
  • Customizable object parameter system.
  • The engine provides the ability to embed other scene graphs into the core engine scene graph hierarchy. Different methods can be used for different regions as appropriate; such as BSP/PVS and/or portal based approaches for indoor scenes, or Quadtree and/or ROAM based approaches for outdoor scenes, etc. Thanks to the use of RTTI and our custom plug-in architecture, instantiating a new class to render a node containing a user defined scene graph type could be done dynamically by the engine at run-time.
  • Scene loader/writer for our proprietary scene file format.
  • Provides management of multiple interconnected scenes, predictive caching of scene data and resources, etc. There are several resource managers that are used to deal with the creation, lifetime control and destruction of objects.
    • Material/effect manager, with full pixel shader and vertex shader support.
    • Mesh object manager.
    • Texture manager.
  • Easily maintain large worlds by dynamically loading/unloading scene elements.
  • Device render state management.
  • Camera/viewport management.
  • Object picking utilities.
  • CPU/thread scheduler.

Effect System

  • Used to make vertex, pixel and geometry shader management easier.
  • Can import .fx effect files into Orion Engine Effect (.osfx) files.
  • Supports most standard parameter annotations and semantics. Many shader constants can be linked automatically.
  • Ability to use the same data files, no matter what shader model is present, and no matter what platform is used. Basically, our effect files can contain various binary blobs of shader code which can then be selected at run-time, based on the platform and/or rendering API that is being used.
  • The engine also supports shader processing without effect files.

Core Scene Objects

  • BSP Scene Graph
    • Potential Visibility Sets (PVS)
    • Solid Leaf Trees
    • Solid Node Trees
    • CSG Brushes
  • Portal Based Cell Graph
  • Terrain Management (i.e. allows multiple chunks of terrain to be patched together into a seamless landscape of nearly any size)
  • Mesh Objects, Primitives, 2D Shapes, etc.
  • Animatable Objects
  • Sky Objects (i.e. Sky Dome, Sky Box, Sky Bodies, Lens Flares, etc.)
  • Particle Systems (Basic and Advanced)
  • Lights
  • Sounds
  • Effects
  • Triggers
  • Message Relays
  • Helper Objects

2D GUI Control Library

  • 2D font support.
  • 2D pointer/cursor support.
  • Window manager.
  • Theme manager.
  • Windows/dialogs/message boxes.
  • Buttons.
  • Check boxes.
  • Labels/input text boxes.
  • List boxes.
  • Popup text windows.
  • Progress bars.
  • Scroll bars.
  • Sliders.
  • Spinners.
  • LCD/LED simulations.

Input Manager

  • Full keyboard, mouse and controller support.
  • Universal input action mapper.
  • Input event triggering support.
  • Input logger.
  • Force feedback support.

Sound Manager

  • Voice and/or buffer management.
  • Stream playback.
  • Loaders for many sound file formats.
  • Sound mixer.
  • Support for 3D positional sounds.
  • Support for many basic audio effects, such as environmental reverb, EAX, etc

Network Manager

  • Includes a scalable, high-performance, Winsock server driver designed to handle many connections simultaneously. The server utilizes overlapped I/O, with a completion port, for TCP and UDP over both IPv4 and IPv6.
  • Go peer to peer, or create high capacity client/server applications. We allow upwards of 10,000 connections per-server (depending on each particular implementation).
  • Generic network controller.
  • Generic packet parser.
  • Useful network packet/file buffer helpers.

File Manager

  • Custom compressed archive support.
  • Simulate folder on hard drive as an archive.
  • Support for background (asynchronous) file loading and streaming.
  • File patching support.
  • Generic support for devices such as memory cards, etc.

Image Processing Library

  • Supports many image file formats, with both read and write support.
  • Supports many high dynamic range (HDR) formats.
  • Extremely fast, and very high quality rescaling, dithering and filtering routines.
  • Supports conversion to and from many different pixel formats.
  • Generic image map processing.
  • Texture helpers for managing texture sets, creating mip-map levels, locking device buffers, etc.

Math Library

  • Comprehensive, highly optimized, C++ template support for most all math types used by a 3D engine, such as quaternions, matrices, vectors, planes, etc.
  • Camera/projection helpers.
  • Color helpers.
  • 2D and 3D helpers.
  • Interpolation routines.
  • Intersection routines.
  • Bounding volume routines.
  • Random number/noise generators.

Geometry Library

  • Mesh file reading and writing.
  • Mesh containers with many helper methods.
  • Animation data processing.
  • Mesh subset processing.
  • View frustum visibility testing routines.
  • Vertex helper functions.

Physics Library

  • Rigid body simulation.
  • Collision and response routines.
  • Notification of object interaction.
  • PID motion control.
  • Generic acceleration/deceleration templates.
  • Most basic techniques, such as gravity, etc.

Animation Library

  • Animation controller with track blending support.
  • Support for multiple animation outputs.
  • Custom animation events can be keyed into each animation track and/or the controller itself.

Scripting Language

  • Provides the ability to provide custom AI and game logic through scripts attached to objects in the scene. Can be used to define NPC behaviors, motivations, etc.
  • Orion Script IDE, can be used to create/edit/compile proprietary Orion Engine script files.
  • Generic virtual machine, can be easily embedded into any application.
  • Script compilers for an assembly-like language, and a C-like language.
  • Easily register new functions with the virtual machine at run-time.

Tool Applications


Platform Specific Drivers/Modules

  • System
    • Win32
    • Win64
    • Linux/Unix (T.B.A.)
    • XBOX ONE (T.B.A.)
    • PS4 (T.B.A.)
  • Video
    • Win32 Direct3D 9
    • Win32 OpenGL
    • Win64 Direct3D 12 (T.B.A.)
    • Linux/Unix OpenGL (T.B.A.)
    • XBOX ONE (T.B.A.)
    • PS4 (T.B.A.)
  • Sound
    • Win32 DirectX 9
    • Win64 DirectX 12 (T.B.A.)
    • Linux/Unix (T.B.A.)
    • XBOX ONE (T.B.A.)
    • PS4 (T.B.A.)
  • Input
    • Win32 DirectX 9
    • Win64 DirectX 12 (T.B.A.)
    • Linux/Unix (T.B.A.)
    • XBOX ONE (T.B.A.)
    • PS4 (T.B.A.)
  • Network
    • Win32 Sockets
    • Win64 Sockets
    • Linux/Unix (T.B.A.)
    • XBOX ONE (T.B.A.)
    • PS4 (T.B.A.)