| Features In Version 0.42 |
|---|
| | Feature | Available? |
|---|
| Platforms |
| Windows | | | All major versions of Windows | | |
| | |
| Linux | | | All major distributions of Linux with OpenGL and OpenAL compatible drivers | | |
| |
| File Loading |
| Map Files (.e3m) | | | Map files (.e3m) define the geometry of the world, as well as other objects that should be loaded and their placement, such as actors, particle systems, lights, etc. | | |
| Actor Files (.e3a) | | | Actor files are the dynamic objects in a scene. These can be loaded from a call in the engine, or from an e3m map file. | | |
| Textures and Texture Sets | | | Textures can be many file formats such as png, jpg, bmp, tif, etc. They can be loaded individually, or via a texture set file that is defined in a map or actor file. | | |
| |
| Sky Objects |
| Sky Box | | | A sky object that is actually a cube that surrounds the camera | | |
| Extensible Interface | | | Custom sky objects of any sort can be created and added to the world by extending the abstract sky object | | |
| |
| 2D Image Support |
| Textured Fonts | | | Font support for loading a font texture, splitting it up into individual letters, and writing to a viewport with it | | |
| 2D Fixed Width Images | | | Support for rendering 2D images that stay the same size no matter how large or small the viewport/window gets | | |
| 2D Variable Width Images | | | Support for rendering 2D images that grow and shrink as the the viewport/window grows/shrinks | | |
| |
| Shaders |
| Per-Object Shaders | | | Shaders are able to be set on entire objects, or individual geometry of the object | | |
| Per-Pixel Lighting and Shadows Shader | | | Built-in shader that allows per-pixel lighting and shadowing in the engine | | |
| |
| 3D Graphics API |
| OpenGL | | | OpenGL provides blazing performance and is supported by all major video card manufacturers | | |
| LWJGL | | | E3D uses LWJGL to gain access to the OpenGL API | | |
| |
| Scene Managment and Rendering |
| Portal Occlusion Culling | | | Portal rendering algorithms provide fast occlusion culling and scene rendering. Portalling is automatically handled by E3D for all objects in a scene. | | |
| Perspective Rendering | | | Render scenes in 3D | | |
| Orthographic Rendering | | | Render a 3D world making it appear 2D | | |
| Multi-Texturing | | | Blend together multiple textures on a single surface | | |
| Animated Textures | | | Support for textures that animate, or change, over a period of time. Animated textures can be applied to virtually any textured object in the engine. | | |
| Per-Viewport Render Modes | | | Ability to change an entire viewport's render mode to textured, solid, or wireframe and have all objects in the viewport rendered that way | | |
| Per-Object Render Modes | | | Ability to change a single object's render mode to textured, solid, or wireframe. This can be done on objects like actors down to individual geometry. | | |
| Multiple Viewports | | | Multiple viewports can be setup to simultaneously render a scene from many angles or completely different scenes if desired | | |
| Extensible Interface | | | Using the external renderable's interface of E3D, any sort of rendering or scene management can be plugged directly into the core rendering loop. | | |
| |
| Collision Detection |
| Collision Callbacks | | | Objects that have been collided with and were not directly queried can be notified that they were collided with by another object via callbacks | | |
| Direct Collision Queries | | | Collisions can be queried directly with a single method | | |
| Segment vs. Object | | | Collision detection that can tell if and where a line segment has collided with another object. | | |
| Triangle vs. Object | | | Collision detection that can tell if and where a triangle has collided with another object. | | |
| Bounding Sphere vs. Object | | | Collision detection that can tell if and where a surrounding bounding sphere of an object collides with another object | | |
| Bounding Box vs. Object | | | Collision detection that can tell if and where a surrounding bounding box of an object collides with another object | | |
| |
| Input |
| Keyboard | | | Automatic keyboard input handling via callbacks or directly querying for keydown information | | |
| Mouse | | | Automatic mouse input handling via callbacks or directly querying for keydown information. Support for 3 mouse buttons, scroll wheel, and movement. | | |
| |
| Lighting |
| Per-Vertex Lighting (Software) | | | Software calculated per-vertex illumination | | |
| Per-Pixel Lighting and Shadows (Hardware) | | | GPU calculated per-pixel lighting and shadows | | |
| |
| Sound |
| 2D Sound | | | 2D sound support for unpositioned, unattenuated sound | | |
| 3D Sound | | | 3D positional audio that automatically attenuates, fades, and balances relative to the sound source and listener object | | |
| Doppler Effect | | | Automatic simulation of the doppler effect for a sound epending on the relative speed and orientation of the object and listener | | |
| |
| Particle Systems |
| Automatic particle updates | | | E3D automatically handles all aspects of the updating and rendering a particle system | | |
| GL_ARB_point_sprite | | | Automatic detection and use of the GL_ARB_point_sprite extension to render particle systems. When available, this provides much faster rendering speeds. If not, legacy, software calculated particles are used. | | |
| Collision Detection | | | Per-particle collision detection and response callbacks triggered by a particle colliding with an object or an object colliding with a particle if desired | | |
| |
| Sprites |
| Standard Sprites | | | Standard sprites that can be oriented throughout the world | | |
| Billboarding Sprites | | | Sprites that always face the camera used to simulate a 3D object out of a 2D image | | |
| Collision Detection | | | Collision detection and response callbacks triggered by a direct collision query or a callback from another object colliding with a sprite if desired | | |
| |
| Actors |
| Automatic Portalling | | | Portalling for actors is invisible to the developer. As an actor moves in the scene when it encounters a portal it is automatically transferred to the linked sector | | |
| Skeletal Animation | | | Keyframed skeletal animation | | |
| Collision Detection | | | Collision detection and response callbacks triggered by the actor colliding with an object or an object colliding with the actor | | |
| |