Parsec
This is what I am currently working on
most of the time, together with some other very talented individuals. Parsec
is a 3-D space fight game specifically targeted at network game play. The
first playable version (released in the summer of 1996 for the computer
graphics 2 and 3 lab, held by our Institute
of Computer Graphics), supported four concurrent players connected
via an IPX network and was a purely DOS-based game supporting resolutions
up to 640x480 in 256 colors. Since then, much has changed. We have been
working on new graphics, integrated sound and music, and lots of new engine
features. Most of all, though, we are concerned with generally improving
game play and incorporating support for Internet game play in particular.
We are currently busy porting Parsec to multiple platforms and integrating
support for 3-D hardware accelerators. Win32, MacOS, and Linux versions
supporting the Voodoo Graphics accelerator by 3Dfx Interactive are already
up and running. Since Parsec has become quite a large and ongoing project,
we recently have created the official Parsec Homepage
which contains more detailed info on this very special project.
Parsec Networking
Architecture
Together with Andreas
Varga I am currently working on the design and implementation of the
networking architecture of Parsec.
This architecture subsumes a peer-to-peer protocol for game play on LANs
(using IPX or UDP) and a client-server protocol for game play on TCP/IP
networks, especially on the Internet. There are (currently not publicly
accessible, but this will change in the future) dedicated game servers
and a master server. Game servers register themselves at the master server
from where they can easily be accessed by players via dynamically generated
HTML pages. Players can connect to a nearby game server using Parsec (which
in this context is the client) and play with each other regardless of where
they are located geographically. The Documentation
of the Parsec Networking Architecture is available online.
BspLib
BspLib is a C++ class library from which
a BSP compiler for 3-D objects can be built very easily. It consists of
a class hierarchy for handling three-dimensional objects, together with
various processing functions, the most important of which is BSP compilation.
An I/O class hierarchy is provided for importing and exporting 3-D data.
Aside from proprietary formats, BspLib is capable of reading VRML V1.0
data files. The BspLib Documentation is
available online.
ViewBSP
ViewBSP is a graphical front end to BspLib,
combined with a simple object viewer. It runs on Windows 95/NT and uses
OpenGL for rendering purposes. ViewBSP is able to read and write all formats
supported by BspLib and display objects before and after BSP compilation.
A
simple tree view of the generated BSP tree is also available. You can view
the ViewBSP Documentation online.
Blubb²
Sound Card Project
This has been my biggest project combining
both hardware and software (with emphasis on hardware). Together with Andreas
Varga I developed an ISA soundcard capable of playing six independent music
channels, firmware for the card, and some demo software. We started work
in late 1992 and finished in mid-1994. Please have a look at the Blubb²
Info Page I wrote for Andreas Varga's SID
homepage.
Here you can download the text of some
of the papers I have written for seminars, as well as the transparencies for some
of the talks I have given. For some of them, images I showed during the talk
are also available. The titles are always linked to further web-pages if
available, or to a single PDF document containing the text of the respective
paper. Other accompanying material is listed below the corresponding abstract.
Developing for Multiple High-Performance Graphics APIs Simultaneously: A Case Study
by Markus Hadwiger.
Done for the Central
European Seminar on Computer Graphics (CESCG) '99 that took place from
April 26 to April 27, 1999, in Budmerice, Slovakia.
Abstract:
In today’s world of interactive computer graphics applications the choice of graphics API is crucial, but still
far from clear-cut. Especially when developing for consumer-level hardware the choice of API is very important,
since it will have a tremendous impact on the potential market share, as well as performance and flexibility.
Nevertheless, there is no single API that is definitely better in every respect than its competitors -
particularly when developing for multiple platforms.
The most important APIs, like OpenGL and Direct3D, support a multitude of graphics hardware via
vendor-supplied graphics drivers. There are also proprietary APIs supporting only the hardware of a specific
vendor. Although these are rapidly becoming more and more obscure, the Glide API by 3dfx Interactive is still
ubiquitous in the area of entertainment software.
This paper describes the process of simultaneously developing for multiple graphics APIs. We use Parsec, a
three-dimensional space-combat computer game we are currently working on, as a case study. Parsec transparently
supports OpenGL, Glide, and a proprietary software-renderer through an abstract interface layer encapsulating
the underlying graphics API, without compromising performance.
The HTML version
of this paper is available here.
The full text
of this paper is available in PDF format.
There
is also a GNU-ZIPPED POSTSCRIPT version of this paper available.
The PARSEC
Project
by Markus Hadwiger.
This is a talk I gave at the internal
workshop of the Institute of
Computer Graphics on September 28, 1998. There is no accompanying paper,
but a series of snapshots from the live demonstration
and the transparencies I used are available.
Abstract:
In the first part of my talk I am going to give an overview of the
Parsec project, its history and goals, with a focus on its current state.
I co-authored the first version of Parsec for the CG2&3 lab more than
two years ago. Parsec is a 3-D space-fight game that is specifically targeted
at network game play, that is, all opponent spacecraft are controlled by
humans and there is no enemy AI. Aside from the basic concept, the Parsec
of today has not much in common with this first version, though. There
are native DOS, Win32 (NT/95), and MacOS (PowerMac) versions, and, although
software-rendering is still supported, the current rendering subsystem
of choice is the Voodoo Graphics by 3Dfx Interactive. There are currently
five people working on Parsec in their free time and our next big goal
is Internet game play.
In the second part of my talk I am going to describe Parsec’s architecture.
The structure of its code-base is highly modular, making porting easy.
There are abstract subsystems for Audio, Input, Networking, System, Video,
Drawing (2-D graphics), and Rendering (3-D graphics). These have to be
implemented anew for each platform, but the bulk of the code need not be
changed. If two different platforms support the same graphics API (say,
Glide or OpenGL) Parsec may be ported to a new platform in under a thousand
lines of code.
At the end of my talk I will show a demo of Parsec running on a PC
and a Voodoo Graphics card. This demo also contains music composed especially
for this purpose.
I tried to
capture the flow of the live demonstration in a series of snapshots.
Transparencies
of the talk are available in PDF format.
PARSEC: Enhancing
Realism of Real-Time Graphics Through Multiple Layer Rendering and Particle
Systems
by Markus Hadwiger.
Done for the Central
European Seminar on Computer Graphics (CESCG) '98 that took place from
April 21 to April 22, 1998, in Budmerice, Slovakia.
Abstract:
One of the major goals in real-time computer graphics is to achieve
high realism of rendered images without compromising rendering speed too
much. Frame update rate requirements are especially demanding in the area
of entertainment software. Player immersion is directly related to both
the number of frames displayed per second and the visual quality of the
images rendered in each frame. Traditionally, these two goals have largely
excluded one another. In recent years, however, standard desktop hardware
has become powerful enough to make real-time rendering of convincing virtual
environments possible.
This paper describes the rendering engine of Parsec, a three-dimensional
computer game we are currently developing. In this, we are focusing on
those parts of the rendering process that are not part of the standard
transform-clip-draw pipeline for polygonal objects. We are rendering multiple
layers to achieve different effects with techniques specifically suited
to the nature of these effects. We use an image-based rendering approach
to render an infinitely far-away background. Particle systems are employed
to render effects that cannot easily be achieved with polygonal objects.
Our software-renderer also harnesses multi-layer rendering to decouple
specific rasterization tasks in order to gain significant speed-ups.
The HTML version
of this paper contains additional screenshots.
The full text
of this paper is available in PDF format.
There
is also a GNU-ZIPPED POSTSCRIPT version of this paper available.
Transparencies
of the talk are available in PDF format.
Visibility Culling
by Markus Hadwiger and Andreas Varga.
Done for the "Proseminar Wissenschaftliches
Arbeiten" in the winter-term of 1997/98. We tried to cover the most important
output sensitive visibility algorithms (visibility culling algorithms),
with an emphasis on basics and modern approaches.
Real-Time Special Effects
for a Computer Game Using Particle Systems
by Markus Hadwiger.
Done for the course "Special Topics in
Computer Graphics" held in the summer-term of 1997.
Abstract:
An implementation of a particle system as part of the rendering pipeline
of a 3-D computer game is described. Due to the interactive nature of such
a computer game one of the most important issues in this implementation
is the real-time rendering capability of the created special effects. A
short summary of the game’s rendering pipeline is given, restrictions on
special effects without a particle system’s being integrated are described
and used to show where tremendous improvements are possible with the deployment
of a particle system. The fundamental changes of the original rendering
pipeline necessary to accommodate the particle system are considered and
looked at in detail. As an example of a special effect made possible by
the introduction of a particle system the calculation and rendering of
a lightning stroke is presented. Due to the nature of the application the
emphasis is not on physically correct evaluation of a lightning beam but
instead on visual appearance, i.e., the aim is not so much to make it look
real, but to make it look like a typical special effect.
Have a look at some
screenshots I showed during the talk.
The full text of
this paper is available in PDF format.
Transparencies
of the talk are available in PDF format.