AX  Sent email to webmaster at arctangent dot 8k dot com
Please make sure there is an appropriate subject line.
HomeAboutNewsProjectsImagesLinks



AX is a reprogrammable, reconfigurable, and extensible abstract machine capable of  realtime interactive 3D accelerated graphics.


Screenshots
[Clicking on any screenshot will enlarge]

Liquid Metal Teapot
This movie was rendered inside AX and then compressed with VirtualDub. (Not realtime yet)

Movie Download [*.AVI DIVX format, 1.7 MB]   [Download will be hosted somewhere else shortly.]

Asteroids Clone *



Tetris Clone **

This Tetris clone tests interaction between the VM, keyboard input, graphics renderer, sound output, text interface, and file I/O. 



This was also a simple test of the newly added 2D renderer, and it's interaction with the 3D renderer and frame buffer postprocessing functions.

Hi-Poly Model Test:

Nvidia Dawn model *** rendered in an interpreted AX program. 

Both 4xS antialiasing and 8x anisotropic filtering, using render-to-texture for postprocessing.

Low resolution 640x480 realtime render (30 fps) High resolution 1280x960 render (barely realtime, ~5FPS)


Earlier Screenshots:

(No antialiasing.)




Really Early Screenshots (from original VSM):

These early screenshots show render-to-texture to produce distoritions, blurring, motion blur, and recursive texturing.  Each hump is a bicubic bezier patch.







AX stands for Abstract eXecution.  AX is an interpreter which runs programs for a virtual machine. The term VM has often been used in place of JVM, which stands for the Java Virtual Machine.  AX is not Java, and was created for a different purpose.

AX is was originally an older project of mine called VSM, which was written entirely in assembly language. All x86 assembly code was rewritten in C, and a few changes were made to the instruction set, so it made sense to change the name, since AX is a new program. To test portability, the interpreter has sucessfully compiled and ran on PS2 Linux.

AX runs fine in Linux under WINE.

Current Features

Abstract Machine:
32 bit pointers
32 bit integers, 32 bit floating point
stack based instruction set
interfaceable to external libraries written in native code (such as dll's)

Graphics Library:
OpenGL based graphics for both 3D and 2D
16 or 32 bit color depth
16 or 32 bit depth buffer
fullscreen or windowed
stencil buffer
full alpha, depth, and stencil testing 2d sprite rendering (scale, rotation, blending)
3d rendering of: Triangles, Quads, bicubic bezier patches
both 2d and 3d rendering functions can be render-to-texture or render-to-sprite
framebuffer postprocessing: blur, motion blur, water ripple effect
full OpenGL alpha blending in both 2D and 3D
texturing with mipmapping
multitexturing
selectable 1 or 2-sided light (up to 8 lights)
loading 24 or 32 bit targa files
variable camera angle (such as zoom, telephoto) graphics window/screen captures keystrokes/mouse movements in both absolute and differential mode
normal smoothing: lighting between connected meshes (even if meshes have different textures and texcoords) blend together (note: this does not currently work with bezier patches.)
both normal-per-vertex (smooth) and normal-per polygon (faceted) rendering (selectable per-object)
untextured, colored polygons are supported
lighting can be turned on/off per triangle
state-sorted vertex array rendering (per object) display lists for static objects
hierarchical objects
fog

Sound Libarary:
Stereo Mixing
Buffering
Panning
Delay
Looping

Standard Libary:
file I/O
text I/O in user interaction window time and date (read only)



Features in Development
(They work, but are not finished.)
spring physics (need to change the integrator)
butterfly subdivision (need to implement modified butterfly, for the extraordinary vertices)
fractal generated terrain (need to add more features)
view dependent LOD (
skeletal transformations (posing)
cartoon outlining


Planned Features

Abstract Machine:
64 bit pointer support
16 and 64 bit integer support
64 bit double precision floating point
unsigned comparison
possible dyna-rec (lowest priority)

Graphics Library:
portal rendering
shadow volumes
state sorting per-scene instead of per-object
particle engine
bump mapping
complete cartoon lighting
transformation interpolation (animation)

Sound Library:
OpenAL based 3D sound

Standard Library
Network Support (sockets)

C)2004-2005 Mark W. Sherman, All Rights Reserved.  No part of this website may be reproduced without written premission by me.
* The name Asteroids is owned by Atari
** The name Tetris is owned by The Tetris Company.
***Dawn is owned by Nvidia.  I claim no rights to the model.  This model was extracted with  Dawn 3D Model Extractor.

Visitors since 6/13/2006: 1013