Uncategorized

Design and Implementation of 3D Graphics Systems


  • 1st Edition;
  • Theanine: Does it Work? (Supplements: Reviewing the Evidence).
  • Top Authors.
  • The PTSD Workbook for Teens: Simple, Effective Skills for Healing Trauma;
  • Happiness Quest East and West.
  • Vermont Bound (The Turk Donatelli series Book 3).

It could be through conference attendance, group discussion or directed reading to name just a few examples. We provide a free online form to document your learning and a certificate for your records. Already read this title? Please accept our apologies for any inconvenience this may cause. Exclusive web offer for individuals. Add to Wish List. Toggle navigation Additional Book Information.

Description Table of Contents Author s Bio. Summary Design and Implementation of 3D Graphics Systems covers the computational aspects of geometric modeling and rendering 3D scenes. Author s Bio Author. Request an e-inspection copy. The Bookshelf application offers access: Offline Computer — Download Bookshelf software to your desktop so you can view your eBooks with or without Internet access. The country you have selected will result in the following: Product pricing will be adjusted to match the corresponding currency.

It is usually required an accelerator to reduce the computational load of the main processor, if it is a general purpose processor. The software programming of a 3D graphics application represents another major issue; first of all, it has to deal with the target hardware. Since many different systems are based on different architectures, there is the risk that a new dedicated programming language should be developed for each of them.

If each of the systems would require its own programming language, the portability of the code is not possible. The problem gets even more complicated in systems including reconfigurable devices, because these devices according to their granularity require different programming styles. A possible solution consists in handling a system with reconfigurable device as a general purpose system, where possible. This means that the reconfigurability should be hidden from the programmer by using some built-in functions, provided by the system designer.

These built-in functions should be integrated in the operating system, if present, or used by an high level programming language.

Account Options

From this point of view, a common standard is possible and actually exists already: It is a subset of OpenGL, that creates a low-level interface between software applications and hardware or software graphics engines. The main problem from our point of view is that all the existing implementations of OpenGL ES are based on an operating system; in the same way the standard OpenGL, are strictly linked to the X Server, the Unix video server.

It provides a runtime compilation infrastructure that creates optimized code for the current graphics context settings. But currently it can only run on a limited number of operating systems and processors. It provides an efficient memory usage and high shading functionalities, but it requires the Kylobyte Virtual Machine, a Java Virtual Machine designed for system with low resources. Our approach is close to the OpenGL ES interface, in the sense that the developed C library presents similar transformation and shading functions, but differently from all the others it is not based on any operating system: The operating system requirement is a problem for a small SoC.


  • Design and Implementation of 3D Graphics Systems?
  • Recommended For You.
  • Design and Implementation of 3D Graphics Systems.
  • Irish Fairy and Folk Tales.
  • An Astrologers Journey.

The possibility to implement a 3D graphics application without using any operating system support is very convenient because leads to an increase of performance and a reduced usage of resources. This kind of approach is also convenient during the prototyping phase of a SoC, when a system does not usually have any software support for the application development, except for a cross compiler.

The libraries that we propose have been first developed and compiled under a Linux system, running on a desktop machine. This phase has been useful to perform the preliminary tests to evaluate their behavior and functionality. The details about this general purpose implementation are described in section II.

Then the libraries have been modified as explained below to be executed by a prototyped SoC based on the Coffee RISC core [4], that has been developed by the same project group. The Milk coprocessor [5] is included in order to provide floating-point support. The floating-point support is important for the implementation of the most complex rendering functions, as described below. Since it is provided with hardware, the implementation is particularly performing.

A description of the prototype development is given in section III. The 3D graphics functions provided by the library are split into several files, according to their functionality. One of these files handles the data types definitions. Arrays of 2, 3 and 4 elements are defined as basic types and matrices are defined as arrays of arrays.

This way no new struct variable is created, but the existing types are redefined in order to guarantee a standardized usage by the programmer. A RGB type is also defined as bit integer, and it contains the value of the three primary color components. In the general-purpose implementation each color component has been defined as 8-bit value. The definitions of the graphical primitives are in a second file. At present, only one primitive is fully functional and tested: It is a flexible object, because it is possible to modify at run time the number of vertices and edges of the defined polygon.

This is useful because some algorithms can modify these properties during the rendering phase. NURBS curves and surfaces can be defined as well, but they are not fully tested in the current version of the libraries. All the rendering functions are collected in a single file.

Bestselling Series

This file handles also the frame buffer and the z-buffer, allowing their initialization and reset. Frame buffer is a memory block that contains color data about each pixel of the screen.

Design and Implementation of 3D Graphics Systems

These data are read from this memory and sent to the display, according to the display refreshing frequency. Z-buffer is a memory block of the same size of the frame buffer. It contains depth value of each pixel. When a new pixel has to be drawn on the screen, the rendering function first checks its previous depth value: This way the back face removal is provided. The display resolution can be set at compile time by the programmer. It is strictly dependent on the system. The number of the pixels defines size of the frame buffer and the z-buffer.

In the general purpose implementation, the frame buffer is characterized by a bit integer value per pixel, the z-buffer by a bit floating-point value per pixel. If the resolution is x pixels reasonable for a mobile device , the memory has to be at least KBytes wide. A particular data type named "drawing list" is used to collect the primitives defined by the programmer. All the rendering functions apply to the drawing list. The transformation phase is the first stage of the graphic pipeline: Each vertex of a polygon and each control point of a NURBS curve or surface is multiplied by this matrix.

The mathematical functions that defines these transformations and the matrixvertex multiplication are collected in a separated file. The most interesting stage of the graphic pipeline is the rendering. It is based on a function that draws a segment line between two defined points, interpolating both the color and the coordinates. Each point is then scaled according to the viewport size and written to the frame buffer in the corresponding pixel position, using the z-buffer algorithm already described.

The color interpolation is quite useful, because it allows the shading of the pixel just calculating the light influence at the initial points. This segment drawing function is used for several purposes.

Design and Implementation of 3D Graphics Systems - CRC Press Book

Besides drawing a simple straight line, it is possible to render a NURBS curve according to the points calculated with the de Boor algorithm. But it is the core of the surface rendering. In fact a function that draws a triangle is defined. It uses a scan line algorithm to fill the triangle with the segment rendering function. The triangle rendering is used to draw a polygon with a generic number of edges, since it is always divisible in several triangles. Also NURBS surfaces are rendered using the triangle function, because the points on the surfaces, calculated with the de Boor algorithm, are considered as vertices of a polygon.

The segment drawing function, in case the segment is not aligned with the x or the y-axis, uses a fixed step to choose the next interpolation point.