A Generic 3D Graphics Kernel (V1.5)
Current graphic systems (traditional or object-oriented) offer a
certain amount of functionality but also prescribe a lot of impli-
cations, constraints and may not fit a given task. The result is
that in many cases people start from scratch, implement the basic
graphics stuff again and again.
The objective of the announced project is to develop a generic 3D
graphics kernel "G" that may be used to implement an own
system by deriving the generic one. By aggregation and inheritance the
interfaces and implementations of the generic kernel may be used.
The generic kernel shall offer a wide functionality consisting of
unrelated classes that may adaptively be integrated into a specialized
system without run-time and memory overhead.
The principal functionality of the system will be [is]:
- basic parametric aggregates and related operators
[parametric fix-sized vector, dl list, dynamic list, for-each iterators]
- elementary graphical data types: vector (2D, 3D, generic), matrices,
colors, vertex, etc. and related operators
[2D, 3D, nD Vector, 4x4, nxn Matrix, "Phong" Surface, RGB color,
different vertex types]
- essential scene collections (DAG, tree, binary tree, linear list)
- basic graphical design patterns such as PHIGS' CSS, or a CGRM
environment with its components
- basic topological classes with covariant extensibility
[1D, 2D, Polyhedron, parametric curve and surface]
- abstract and concrete rendering classes (rendering interfaces,
camera models, specific rendering primitives, i.e., Quadric for
ray-tracing)
[ray-tracing and shading interface, perspectivic and orthographic
camera model, shader, ray-tracer, quadric, polygon, shading and
ray-tracing iterators to be used for cameras and composites, to
be platform-independent, the specific shading stuff is encapsulated
in a "device driver" with following realizations until now:
- OpenGL and X11 R4 - R6
- OpenGL and Tk 3.6 - 4.1 (both UNIX and Windows/NT)
NOTE: OpenGL compatible public domain library Mesa has been
tested successfully as replacement for OpenGL]
- pixel-based output devices [Pixmap, ImageFile]
- rendering-independent mathematical stuff, e.g., Splines and free
form surfaces [solid textures, bump mappings, interpolated spline curves and surfaces]
- basic interaction classes (abstract and concrete, e.g., low-level
event types) [2D mouse and spaceball events, socket encapsulation,
pixmap update event, callbacks, abstract input device featuring
feedback access and hierarchical organization, input server,
timer and file input devices]
- utility classes (identification, file formats, user interface
integration, generic format converters) [string, SGI-, Targa-,
RGBA-file format, Tcl language binding (optional), interpretative
class system, generic DeltaBlue constraint solver]
The generic kernel is provided with all sources and documentation,
and may be used for both commercial and non-commercial projects without restrictions.
For papers discussing the concepts of the G kernel see
The generic kernel itself is available via ftp:
Derived kernels until now are:
-
GX - an extended ray-tracing kernel by Nguyen Duc Cuong
- GT - an NFF compatible ray-tracing kernel for test purposes
basing on GX
- GG - a prototype GIS kernel by AED Graphics GmbH
-
EGR GF - an object-oriented commercial semantic kernel for
European furniture industry
-
EGR MAF - a distributed Multimedia application framework
-
EGR TIGER - an interpretative OpenGL environment including Motif-like GUI
functionality and hi-level OpenGL-based kernel for education
Kernels in work:
- GY - a reimplementation of former 3D graphics kernel
YART
- PRIMA - a sample implementation of ISO PREMO by DIN
To join the G mailing list send a mail
with subject "subscribe GENERIC mailing list".
Special thx goes to Nguyen Duc Cuong (TU Dresden, Germany),
Frank Wicht, Jochen Pohl, Michael Bauroth, Heiko Fischer, Mario Ruebsam,
Christian Martin (all EasternGraphics, Germany), Pavol Michalik,
Thomas Petzke (both TU Ilmenau), Malte Zoeckler, Roland Wunderling
(both ZIB Berlin) and
EasternGraphics GmbH.
Comments, extensions and discussions are always welcome.
Copyright 1996 Ekkehard 'Ekki' Beier.