Engines

motion - 3d engine, C++ (2003-2004)
status: 85%

This engine is being developed in parallel with RCmania. As a software rendering engine, it fits right in the project. However, in the future, it will be possible to plug-in any type of rendering engine that uses any type of graphics library.

The code is highly portable and has already been tested in Windows, WindowsCE, Linux and MacOS-X.

I am very close to achieving the goals that I set for RCmania in the beggining of that project. This is probably my last software rendering engine, so I wan't to make it the best possible within my reach.

 

Features of the engine:

  • 2D and 3D rendering.
  • Scene management based on Scene Graph schemes.
  • Object animation that respects an implicit hierarchy or skeleton.
  • Mesh frustum culling.
  • BSP (Binary Space Partition) Trees for collision detection, and rendering if needed.
  • Loading of internal model format MM (Motion Model) that supports most of the scene objects exposed by the engine, such as dummies, meshes or models, materials, textures, lights, bones, skins, etc...
  • Loading of internal animation format MA (Motion Animation) that supports multiple animation tracks with position, rotation and scale.
  • Loading of 8bit TGA images.

Features of the engine's software renderer:

  • Rendering to any 32bit memory buffer.
  • Z-Buffer for per-pixel occlusion.
  • Loading of 8bit TGA images to feed the palletized textures used by the engine.
  • 8bit Palletized textures.
  • Automatic mip-map generation.
  • Minification filter (mip-mapping).
  • Magnification filter (bilinear).
  • Texture tiling and clamping.
  • Sub-pixel and sub-texel accurate rasterization.
  • Shaded perspective-correct polygons.
  • Textured perspective-correct and shaded polygons.
  • Color keying.
  • Phong-based illumination model.
  • Support for infinite number of lights.
  • Materials.
  • Multiple/sub-object materials.
  • Colored per-pixel Fog.

To be implemented:

  • Camera management.
  • Visibility determination using Octrees or AABB Trees.
  • Particle system.

And maybe also:

  • Occlusion culling.
  • Sorted span-buffer.

steam - 3d engine, Delphi (2001-2002)
status: 100%

Download:

After playing with hardware rendering for a while I decided to go back and restart from scratch. The reason why I did this was because I really wanted to make a fast and full-featured software rendering engine, so this was my first attempt. I then decided to keep an implementation close to OpenGL and Direct3D on the low-level side of the engine. This option would allow me to expand easily in the future.

I didn't achieve all my goals with this engine, but it was a good experience, it always is. This project would eventually evolve to a more advanced state when I decided to port the code to C++ and change the name from "steam" to the old "motion". I changed the name because meanwhile Valve took the liberty to make Steam a trademark.

Features:

  • Support for 16bit (5:6:5) and 32bit (8:8:8:8) targets.
  • Multiple viewports.
  • Multiple render targets.
  • Backface culling.
  • Accurate wireframe, flat & gouraud shading triangle rasterizers.
  • Sub-pixel and sub-texel accuracy.
  • Z-buffer / W-buffer.
  • Transformation and Lighting with a partial phong illumination model.
  • Multiple cameras.
  • Frustum culling with 3d polygon clipping.
  • Depth polygon sorting.
  • Loading of MS3D (Milkshape) models.
  • Math libraries.

motion3d - 3d engine, Delphi (2000-2001)
status: 100%

Download:

Back in 2000, I decided to stop the hyper64 development for a while so I could learn more about hardware 3d rendering. My last experience with hardware at the time was when I recoded portions my first software 3d engine, the one used in hyper's samples, to the 3dfx Glide API. It is a very simple API when compared with OpenGL which was more powerfull, so it seemed like a logical step.

This engine is very minimalist, reads and displays models and quake3 maps without any visibility processing. So it's probably as simple as an engine can get.

 
 

Features:

  • Loading of ASC, MS3D (milkshape) models.
  • Loading of GEOM maps, generated by bspconv.
  • Loading of PNG images into Buffers.
  • Pilot and Target cameras.
  • Hyper32/64 style Buffer class, which takes advantage of hardware acceleration for advanced 2D operations. Usefull for head-up displays. Also used as texture map source.
  • Wire, flat, gouraud, textured and environment mapping.
  • Typical Alpha-Blending operations.
  • Primitives like pixels, lines and rects.
  • Dynamic meshes.
  • Dynamic vertex normal generation.

Third-party credits:


hyper64 - 2d engine, Delphi (2000-2002)
status: 100%

Bookmarks:
http://hyper64.cjb.net

Hyper64 is a 2d engine for Windows that works on Win95, Win98/WinME and WinNT/2K/XP. It's built on top of DirectDraw to take advantage of hardware acceleration on certain operations. Taking advantage of hardware operations, hyper64 can be really fast if properly used.

It follows the same interface design that was exposed in hyper32, but takes it to a whole new level.

 


"the 1st revelation" by Mário Luzeiro

Features:

  • DirectDraw support.
  • Highly optimized assembly, x86 and MMX.
  • Fast primitives like pixels, lines, ellipsoids, rectangles and cubic bezier lines.
  • Flat, Gouraud and Textured polygon rasterization.
  • Multiple rendering Windows.
  • Window and Full Screen display.
  • Independent Full Screen mode.
  • Text output of installed Windows fonts.
  • Input handling via DirectInput using Mouse, Keyboard and Joystick.
  • Virtual file system using HPK files (Hyper PacK).
  • Advanced Buffer system.
  • Load images froms Streams, Resources or Files.
  • System and Video memory for buffers.
  • Hardware acceleration when using Video memory buffers.
  • Easy interface.
  • Fast routines.
  • High precision timers.
  • Sprites and Alpha Channels.
  • Clipping in all functions.
  • Scaling, Rotating, Blur, Negative, Greyscale, Xor
    and Mirroring effects.
  • Alpha-Blending with support for Alpha-Channel.
  • Additive and Subtractive blending.
  • Loading of BMP, JPG, PNG images.
  • Saving of BMP, JPG, PNG images.
  • Sound playing, mixing and streaming of MOD, S3M, XM, IT, MID, RMI, SGT, RAW, WAV, MP2, MP3, OGG, WMA, ASF.
  • Video streaming of AVI, MPG, ASF.

Third-party credits:

hyper32 - 2d engine, Pascal (1998-2000)
status: 100%

Bookmarks:
http://hyper32.cjb.net

Hyper32 is a 2d engine for DOS. It works with VGA and VESA, 8 and 16bit modes. It is highly asm optimized and has a really easy and intuitive interface.


Skull3 by Diogo Lapa

Feature list:

  • Works on Borland Pascal 7.0 with a MS-DOS Protected Mode target.
  • Banked framebuffer access using VESA 1.2
  • Linear framebuffer access using VESA 2.0
  • 8 bit (palletized) and 16 bit (RGB) graphics modes.
  • Flexible "Buffer" system.
  • Seamless rendering of 8bit buffers on 16bit targets.
  • Loading of BMP and JPG images.
  • Saving of BMP images.
  • Image rotation and scaling.
  • Sprite rotation and scaling.
  • Static and Animated rendering of Images and Sprites.
  • Per-pixel optimized Sprite collision detection.
  • Alpha-Blending with support for Alpha-Channel buffers.
  • Additive and Subtractive Blending.
  • Text input and ouput to buffers.
  • Lines, rectangles, ellipsoids and many other primitives.
  • Flat, Gouraud and Textured polygon rasterization.
  • Input handling through mouse and keyboard.
  • Sound playing and mixing.

Third-party credits: