Vertex and spherical normalization circuit

Computer graphics processing and selective visual display system – Computer graphics processing – Graphic manipulation

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

Reexamination Certificate

active

06683621

ABSTRACT:

BACKGROUND
1. Field of the Present Invention
The present invention generally relates to computer graphics and more particularly to a circuit that generates normalized vectors (unit vectors) that are specified by a graphics interface.
2. History of Related Art
Graphics display subsystems are almost universally encountered in microprocessor based computer systems to facilitate a variety of graphics tasks and applications including computer-assisted drafting, architectural design, simulation trainers for aircraft and other vehicles, molecular modeling, virtual reality applications, and video games. Graphics processors, graphics adapters, and a variety of similarly designed computer products provide specialized hardware to speed the execution of graphics instructions and rendering of graphic images. These processors and adapters typically include, for example, circuitry optimized for translating, rotating, and scaling 3D graphic images. In a typical application, a graphical image that is displayed on a display terminal or other output device is composed of one or more graphic primitives. For purposes of this disclosure, a graphic primitive may be thought of as one or more points, lines, or polygons that are associated with one another, such as by being connected to one another. Typically, the displayed image is generated by creating one or more graphic primitives, assigning various attributes to the graphic primitives, defining a viewing point and a viewing volume, determining which of the graphic primitives are within the defined viewing volume, and rendering those graphic primitives as they would appear from the viewing point. This process can require a tremendous amount of computing power to keep pace with the ever increasingly complex graphics applications that are commercially available. Accordingly, designers of graphics systems and graphics applications are continuously seeking cost effective means for improving the efficiency at which graphic images are rendered and displayed.
Typically a software application program generates a 3D graphics scene, and provides the scene, along with lighting attributes, to an application programming interface (API) such as the OpenGL® API developed by Silicon Graphics, Inc. Complete documentation of OpenGL® is available in M. Woo et al.,
OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version
1.2 (Addison Wesley Longman, Inc. 1999) and D. Schreiner,
OpenGL Reference Manual, Third Edition: The Official Reference Document to OpenGL, Version
1.2 (Addison Wesley Longman, Inc. 1999), both of which are incorporated by reference herein.
A 3D graphics scene typically includes of a number of polygons that are delimited by sets of vertices. The vertices are combined to form larger primitives, such as triangles or other polygons. The triangles (or polygons) are combined to form surfaces, and the surfaces are combined to form objects. Each vertex is associated with a set of attributes. Vertex attributes may include a position, including three Cartesian coordinates x, y, and z, a material color, which describes the color of the object to which the vertex belongs, and a normal vector, which describes the direction to which the surface is facing at the vertex. Each vertex may also be associated with texture coordinates and/or an alpha (transparency) value. In addition, the scene itself may be associated with a set of attributes including, as examples, an ambient color that typically describes the amount of ambient light and one or more individual light sources. Each light source has a number of properties associated with it, including a direction, an ambient color, a diffuse color, and a specular color.
Rendering is employed within the graphics system to create two-dimensional image projections of a 3D graphics scene for display on a monitor or other display device. Typically, rendering includes processing geometric primitives (e.g., points, lines, and polygons) by performing one or more of the following operations as needed: transformation, clipping, culling, lighting, fog calculation, and texture coordinate generation. Rendering further includes processing the primitives to determine component pixel values for the display device, a process often referred to specifically as rasterization.
The OpenGL® API and other API's such as the DirectX® API from Microsoft define the allowed vertex and scene attributes and the equations used to determine attribute values. In a conventional graphics adapter, the calculations specified by a particular API are implemented in software. It will be appreciated that software calculations can adversely affect the performance of the graphics adapter, especially if the equations require complex, floating point calculations. It would therefore be desirable to implement, to the extent feasible, some or all of the calculations specified by a particular graphics API in dedicated hardware circuitry. Moreover, it would be desirable if the implemented solution balanced improved performance against cost by optimizing the hardware design to account for such factors as, the frequency with which the particular function or equation is invoked and the speed required of the particular equation.
Normalization of a vector or vertex is a calculation that is used extensively within 3D APIs for lighting and texture coordinate generation. Lighting uses units vectors to generate vertex color data. Texture generation employs normalization to generate spherical coordinates. The components of a unit normal vector N′ are calculated as follows:
N
x
40
=N
x
/(
N
x
2
+N
y
2
+N
z
2
)
0.5
N
y
40
=N
y
/(
N
x
2
+N
y
2
+N
z
2
)
0.5
N
z
40
=N
z
/(
N
x
2
+N
y
2
+N
z
2
)
0.5
where N
x
, N
y
, and N
z
define a normal vector N. Similarly, the components Ex′, Ey′, and Ez′ of a unit eye vector E′ pointing from the origin to a vertex (in eye coordinates) are calculated as follows:
E
x
′=E
x
/(
E
x
2
+E
y
2
+E
z
2
)
0.5
E
y
′=E
y
/(
E
x
2
+E
y
2
+E
z
2
)
0.5
E
z
′=E
z
/(
E
x
2
+E
y
2
+E
z
2
)
0.5
where E
x
, E
y
, and E
z
are the eye coordinates of the vertex.
The graphics adapter should have the ability to calculate these two sets of three equations independent of each other. In other words, the graphics adapter should be able to calculate the N′ and E′ values either independently or in parallel. Since each equation requires three floating point multipliers and two floating point adders, an implementation could include 18 floating point multipliers and 12 floating point adders to handle all six equations in parallel. The number of resources could be reduced if the same multipliers and adders are reused in each set (i.e., all N′ calculations as well as all E′ calculations use the same floating point units). Such an implementation, however, would still require three floating point multipliers and two adders for the N′ calculations and the same for the E′ calculations, thus requiring a total of six floating point multipliers and four floating point adders. Because each floating point unit is a relatively expensive circuit to implement, even the fewer resources required of the shared implementation includes an undesirably large number of units. It would, therefore, be highly desirable to introduce a graphics adapter with a dedicated normalization unit that required fewer floating point resources and performed without a significant performance penalty over more costly implementations.
SUMMARY OF THE INVENTION
A normalization circuit suitable for use in a graphics adapter is disclosed. The circuit is configured to receive vertex data and includes a set of multiplexer circuits, a set of functional units, and a control circuit. The outputs of the set of multiplexer circuits provide inputs to the set of function units and the control circuit is configured to control the select inputs of the set of multiplexer units to calculate a unit normal vector and a unit eye

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Vertex and spherical normalization circuit does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Vertex and spherical normalization circuit, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Vertex and spherical normalization circuit will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-3252717

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.