1. Field of the Invention
[0001] This invention relates to high resolution raster graphics image generating systems
and more particularly to such systems using subpixel addressing to improve spatial
resolution and reduce aliasing.
2. Discussion of the Prior Art
[0002] Graphical image display systems provide an array of discrete points known as pixels
at which emitted light intensities may be independently controlled. Each pixel may
represent a single intensity for a monochrome system or three different primary color
intensities for a three color system.
[0003] A display image is generated by effectively sampling light intensities at each point
of a source image which corresponds to a display pixel and then illuminating each
pixel in accordance with its corresponding sampled light intensity value. In the case
of a computer generated image the pixel light intensity values are generated by a
computer as a prediction of what the values would be if sampled from an actual image
of a selected object under selected light conditions.
[0004] Raster scan display systems typically provide a two dimensional rectangular array
of pixels arranged in rows and columns. A frame buffer stores intensity values for
each pixel in a location which may be addressably accessed in response to the row
and column position of the pixel within the array. As a controlled beam scant the
pixel array row by row, the corresponding illumination data is read from the frame
buffer and used to control the intensity of the scanning beam at each pixel and hence
the corresponding illumination intensity of the pixel.
[0005] Because the display pixels occupy discrete locations in an array (for example a 512
x 512 array), illumination intensities can be controlled only at these discrete positions.
Oftentimes lines or edges are present in an image which do not conform exactly to
the predetermined pixel locations. As a result the line or edge if displayed with
a jagged or staircase effect called aliasing. This aliasing problem is particularly
acute for lines and edges which are nearly, but not quite, parallel to one of the
dimensional (row or column) axes of the pixel array. These display systems and problems
are described in greater detail by J. D. Foley and A. VanDam, Fundamentals of Interactive
Computer Graphics, Addison-Wesley Publishing Co. (1982) pp. 431-503.
[0006] One solution to aliasing problem would be to increase the spatial resolution of the
display by increasing the number of pixels. However, present display systems approach
the limits of available resolution for economical systems and further increases in
resolution would require substantial increases in manufacturing cost. Furthermore,
each doubling of the number of pixels in each dimension requires the already expensive
frame buffer to be increased in size by a factor of four and requires an increase
in operating speeds and system bandwidth by the same factor.
[0007] A commonly used solution to aliasing is to pass the intensity values through a low
pass filter as discussed by Foley and VanDam supra pp. 436-437. However, this technique
requires lines to be at least two pixels wide and results in lines with blurred or
fuzzy edges. The technique does not work well or moderate with low resolution monochrome
or color mapped systems in which a high resolution range of continuous values is not
available for each color. Even with high dynamic resolution full color systems, an
averaging of intensities at intersecting boundaries of different colors results in
colors which do not relate to either of two intersecting colors.
[0008] As described in David A. Lien, Epson MK Printer Manual, Compusoft Publishing (1982)
pp. 3-4, 3-5, 4-8 to 4-11, 7-4 to 7-6 and 13-9, dot matrix printer systems are known
which decrease the apparent sampling effects of a displayed image by overstriking
an image one or more times with the print hammers offset by a subpixel distance for
each different overstrike pass. Because the same display pattern is used for each
pass, the display buffer storage requirements are not increased. This arrangement
results in thickened, boldface lines and does not really increase the resolution of
the displayed image. It is particularly unsatisfactory where narrow, high resolution
lines are desired. Furthermore, the operating speed is substantially decreased.
[0009] A single dimension vector generator is disclosed in U.S. Patent 3,996,585 to Hogan
et al. Integer steps are assumed in the vertical direction while the generator produces
horizontal dimension pixel data. A Z dimension cannot be accommodated and the vector
generator is used only for spatial information, not color or intensity information.
[0010] U.S. Patent 4,158,838, "On-Raster Symbol Smoothing System", Pruznick et al provides
a system analogous to the low pass filter systems. In this system a brightness control
code is stored for each pixel position. During refresh, as each pixel is displayed
in sequence, data from 8 surrounding pixels as well as data from the current display
pixel is used to develop the intensity value for-the current display pixel.
[0011] U.S. Patent 4,212,009, "Smoothing A Raster Display", Adleman et al teaches an arrangement
in which the width of the raster beam is varied in accordance with the data being
displayed.
[0012] U.S. Patent 4,386,349, "High Resolution Graphics Smoothing", Grandberg et al describes
an arrangement which uses subpixel addressing to reduce aliasing without increasing
the resolution of the display. The system provides for each pixel one bit of intensity
information and 3 bits of subpixel address information. Because deflection in both
the X and Y directions is achieved with special deflection coils, the pixels are physically
moved while maintaining a fixed shape. This results in overlaps at some locations
and gaps which appear as black spots in other locations. Furthermore, because correction
is provided in only one axis for each pixel an undesirable mismatch will occur at
mating line end points. In addition, the writing of an image to memory takes twice
as long because each pixel of a line vector must be defined both by the pixel location
itself and by direction information in the preceding pixel.
[0013] Video image data is typically provided to a digital vector generator as lists of
lines or polygons defined by end points and corners or line slopes. Visual characteristic
information is provided for each line or polygon as part of the test. The spatial
information is utilized to initialize digital vector generators which then proceed
to generate spatial address locations which define each line of a display as a plurality
of adjacent pixel points. The vector generators generate address information defining
X, Y and Z coordinates which locate the line in three dimensional display space.
[0014] A frame buffer store is provided having an address location corresponding to each
pixel location in a display image. Visual characteristic information defining the
visual display characteristics of each pixel must be stored at the address corresponding
to the pixel. The visual characteristic information may have different portions defining
intensity and hue, may have different portions defining Red, Green and Blue (RGB)
color intensities, or may have information which is to address a color map table to
produce the desired visual characteristic information.
[0015] While the digital vector generator determines the X, Y and Z coordinates for a next
point on a line, a central processing unit may also determine the visual characteristic
information for the next point. When both the visual characteristic information and
spatial address information are available, the spatial address information is used
to address the frame buffer and the visual characteristic information is written into
the selected address location.
[0016] Because of the large number of pixels which comprise a video displary, for example,
768 x 525 = 403,200, a considerable period of time may be required to generate all
of the pixel data for a display image. Several minutes may be required to generate
an image using sophisticated shading algorithms such as Phong shading or Gouraud shading.
Various shading and texturing techniques are described in the following references.
[0017] Smith, Alvy Ray, "Tint Fill", Computer'Graphics, (ACM) Vol 13, No 2, pp 276-283 (Aug
1979), discloses an algorithm for filling a bounded area. The algorithm is specially
adapted to handle graduated shading at line edges which is said to be introduced by
all antialiasing techniques.
[0018] US Patent 4,225,861, "Method and Means for Texture Display in Raster Scanned Color
Graphic System", Langdon, Jr. et al, discloses a graphic system including a color
map table and a texture RAM which is capable of producing a texturized surface. However,
the disclosed system does not provide the broad range of selectable operating modes
that are available with the present arrangement.
[0019] According to one aspect of the present invention there is provided a graphic image
generating system as defined by claim 1 hereinafter. According to another aspect of
the present invention there is provided a digital vector generator system as defined
by claim 14 hereinafter.
[0020] A graphic image generating system in accordance with the invention increases the
effective spatial resolution of a displayed image without increasing the number of
pixels used to display the image. The system includes a preferably rectangular array
of pixels, a frame buffer and a visible image generation device such as a cathode
ray tube (CRT) coupled to display an image defined by data stored in the frame buffer.
The frame buffer includes a storage location for each pixel in the video image and
at each storage location stores information indicating at least one visual characteristic
of the pixel including a spatial displacement from a normal background or zero displacement
position of the pixel within the array of display image defining pixels.
[0021] The visual image generation device receives the visual characteristic indicating
information from the frame store for each pixel in sequence and visually manifests
the pixel in response thereto. Each pixel is assigned a normal position within a uniformly
spaced rectangular array of pixels and is displaced from the normal position in accordance
with the spatial displacement information indicating the true location of the pixel.
[0022] In a raster scan display system a pixel boundary can be moved horizontally left or
right (in the raster scan dimension) by selectively varying the instant at which the
intensity of a pixel is communicated to the display device. As the raster sweeps the
display image from left to right at a uniform rate, an early presentation of the visual
intensity signal causes the pixel to move to the left while a later presentation causes
the pixel to move to the right.
[0023] In the vertical direction subpixel displacement is accomplished by adding a subpixel
vertical deflection mechanism to the conventional vertical deflection system for the
display. For example, in thee case of a CRT, a set of single turn, low inductance
subpixel deflection coils can be disposed between the CRT funnel and the existing
deflection coils. Both horizontal and vertical subpixel addressing can thus be superimposed
upon conventional CRT vertical and horizontal deflection circuits without modifying
either.
[0024] A high speed graphics display digital vector generator system in accordance with
the invention preferably includes a three dimensional spatial digital vector generator
as well as a three dimensional visual characteristic digital vector generator coupled
to operate synchronously therewith. A vector processing subsystem responds to the
generated visual characteristic vector information with a wide range of selectable
alternatives. The three visual characteristic vector generators operating synchronously
with spatial vector generators generate multi-dimensional visual characteristic vectors.
[0025] The vector processing system includes a normalizing circuit coupled to receive the
three visual characteristic vectors and generate a normalized intensity value suitable
for use in Phong shading in response thereto. A pattern shape multiplexer responds
to two of the visual characteristic vectors by generating an output signal that is
representative of a selected resolution of each of the received vectors. A writeable
pattern RAM is coupled to address by the output of the pattern shape multiplexer to
generate an output signal that may be advantageously used to represent hues in any
selected solid or textured pattern. Because the visual characteristic vector generators
hue patterns within the texture RAM may be readily correlated with spatial patterns
in the displayed video image.
[0026] A color intensity multiplexer is coupled to received output data from the pattern
RAM and from the normalizing circuit and combine the outputs into selected data patterns
for storage in a frame buffer for request output to a video display device. The color
intensity multiplexer is particularly advantageous when used to combine intensity
information from the normalizing circuit with hue information from the pattern RAM
to form a pixel display data word having a selected resolution for each of the two
constitutents.
Brief Description of the Drawings
[0027] A better understanding of the invention may be had from a consideration of the following
detailed description taken in conjunction with the accompanying drawings, in which:
Fig. 1 is a block diagram and schematic representation of a graphic image generating
system in accordance with the invention:
Fig. 2 is a block diagram and schematic representation of a video output and display
subsystem used in the system shown in Fig. 1;
Fig. 3 is a block diagram representation of a digital vector generator subsystem used
in the system shown in Fig. 1;
Fig. 4 is a block diagram representation of a single X dimension position digital
vector generator used in the digital vector generation subsystem shown in Fig. 3;
Fig. 5 is a block diagram representation of a single Z dimension digital vector generator
used in the digital vector generation subsystem shown in Fig. 3;
Fig. 6 is a block diagram representation of a single I dimension intensity digital
vector generator used in the digital vector generator subsystem shown in Fig. 3;
Fig. 7 is a block diagram representation of a DVG control circuit used in the system
shown in Fig. 1;
Fig. 8 is a detailed block diagram representation of a normalizing circuit shown more
generally in Fig. 3;
Fig. 9 is a block diagram representation of a color intensity multiplexer used in
the digital vector generator subsystem shown in Fig. 3;
Fig. 10 is a block diagram representation of a raster data processor (RDP) used in
the digital vector generator subsystem shown in Fig. 3; and,
Fig. 11 is a graphic representation of examples used to illustrate the operation of
the invention.
Detailed Description
[0028] Referring now to Fig. 1, there is shown a raster scan graphic image generating system
10 having an image generation and storage system 12 providing a source of images to
be displayed. The image generation and storage system 12 may be conventional in nature
and in a typical system includes a data base storing the display list for each image
to be displayed, communications interface circuits, and peripheral controller circuits
including data entry devices such as keyboards, data tablets, and joy sticks.
[0029] A digital vector generator system 14 receives lists of image definition data from
image generation and storage system 12 and converts such data to an array of pixels
defining a display image. The array of pixels is communicated to, and then stored
in, a frame buffer memory 16. In the present example, the frame buffer memory 16 includes
storage for a two-dimensional 768 x 576 array-of pixels which is deemed to have an
origin at the upper lefthand corner of a rectangular image with a Y axis extending
positive downward and an X-axis extending positive to the right. For each pixel location
within the buffer memory 16, there are stored 12 bits of video information as well
as two bits of subpixel X address information and two bits of subpixel Y address information.
[0030] Also contained within the frame buffer memory 16 is a Z-buffer 16a having a pixel
location corresponding to each pixel location of the video display buffer memory and
storing third dimension or Z-axis position information for each pixel position in
a display. The Z-axis is deemed to extend from the origin lying in the plane of the
display screen positively away from the viewer perpendicular to the X and Y axes.
Upon transfer of a pixel of information to the frame buffer memory 16, the current
Z or depth value is retrieved from the addressed pixel location within the Z-buffer
16a and compared to the Z value of the new data. Initially the Z buffer 16a is set
to a maximum positive value of 65, 535 (for 2
16-
1). If the
Z value of the new data has a selected functional relationship to pre-existing old
data such as being less than or equal to the Z value of the old data, indicating that
the new data is at least as close to the viewer as the old data, then the new data
is written into the frame buffer memory 16 with the Z coordinate value being written
into the Z buffer 16a and the video display intensity and X, Y subpixel address data
being written into the frame buffer 16. If the Z value of the new data is greater
than the previously stored Z value at the indicated pixel address, (indicating that
the new data is farther away from the viewer and hidden by a surface defined by the
previously stored data) then writing of the new data into the frame-buffer memory
16 is inhibited and the new data is discarded. In this way, only visible surfaces
are actually written into the frame buffer memory 16 and a separate operation is not
required to distinguish visible surfaces from hidden surfaces to complete the proper
assembly of an array of pixels for a visible image. The Z buffer inhibit function
may be selectively enabled or disabled in accordance with a desired operating mode.
[0031] Within the frame buffer there are 52 bit planes forming two display buffers and a
single Z buffer 16a. Each display buffer contains 12 intensity planes, 4 subpixel
address planes and 2 overlay planes for text or cursors. The single Z-buffer 16a stores
depth coordinates. Only a first frame buffer can be addressed by the DVGs, but either
buffer can be read by the video output subsystem. In normal operation, the second
frame buffer is continuously read to refresh the display subsystem while the first
buffer is updated. After the first buffer has been updated, the data is transferred
into the second buffer. During this transfer period, the video output subsystem reads
the first buffer.
[0032] To convert the data pixels stored by frame buffer memory 16 to a visible image, the
frame buffer memory 16 is accessed in raster scan order with the 12 bits of video
display data being communicated to a color map RAM 18 which performs a transformation
that converts the video data to a predetermined three color RGB representation with
8 bits maximum per color. Color map RAM 18 functions as a color look-up table that
is loaded from image generation and storage system 12. This allows a particular intensity
and hue to be assigned to a given pattern of bits at a selected address within frame
buffer 16.
[0033] An intensity control and horizontal subpixel deflection circuit 20 receives the RGB
color intensity information from color map RAM 18 and the X and Y subpixel address
information from frame buffer memory 16 for use in generating display control signals
including three visual characteristic signals representing the RGB color intensity
input to a cathode ray tube 22 which displays the stored image on the face 24 thereof
and a set of vertical displacement signals which command the vertical displacement
of a displayed pixel. CRT 22 has a precision in-line (PIL) gun that emits three parallel
electron beams that lie within a plane parallel to the horizontal raster scan direction.
The intensity control and horizontal subpixel deflection circuit 20 displaces each
pixel in the X or horizontal direction by quarter pixel increments according to the
magnitude of the two bits of subpixpl X address data received from frame buffer memory
16. Because the raster beam scans the face 24 of CRT 22 at a uniform velocity, subpixel
displacement of a given pixel can be controlled in the horizontal direction by varying
the time at which the 24 bits of RGB color information are actually applied to the
color intensity control of CRT 22. To move a pixel to the left of its normal position,
the data corresponding thereto is applied to the CRT 22 somewhat earlier than usual
and to move the pixel to the right, the data is applied to the CRT 22 somewhat later
than usual. A raster deflection control circuit 26 is coupled to drive CRT 22 with
a normal raster scan and is not affected by the X and Y subpixel addressing which
is superimposed upon the normal raster scan of the electron beams upon the face 24
of CRT 22.
[0034] Subpixel displacement of the scanning electron beam in the vertical direction is
accomplished by a small horizontal magnetic field. Four pairs of single turn windings
are placed beneath the conventional deflection coils of CRT 22. The first winding
of each pair (4 parallel single turn windings) is placed on one side of CRT 22 in
a coaxially wound relationship between existing deflection yoke and the CRT funnel,
while the second winding of each pair is similarly placed on the opposite side of
CRT 22. The connection of only two turns in series in each winding results in a very
low inductance fast response subpixel deflection system. The arrangement increases
sensitivity by enabling the low reluctance magnetic return path of the main vertical
deflection system to be used for the subpixel deflection system as well.
[0035] The nomenclature for subpixel addressing is complicated by a need to minimize the
bits of storage required to represent each subpixel address, the need to avoid negative
number representations and the need for a unidirectional subpixel vertical displacement
current with a small steady state value. To meet conflicting requirements, different
reference axes are used at different points in the image generating system 10.
[0036] Within the image generation and storage system 12 a world X Y Z coordinate system
is used with the origin at the center of the image. An image is stored as a display
list in which the image is represented by a list of individual line segments of standard
shapes such as straight lines and circular curves. Line segments are defined within
a three dimensional Euclidean space with a resolution of + bits on each axis.
[0037] Frequently only a portion or window within a display list will be displayed on the
face 24 of CRT 22. As a display list is transferred from the image generation and
storage system 12 to the digital vector generator 14, portions of the list outside
the selected display window are clipped or removed and a transformation is made by
the digital vector generator system 14 to a display coordinate system. The display
coordinate system places the origin at the upper lefthand corner of the display image
with the positive X axis extending to the right and the positive Y axis extending
downward. This convention conforms to the non-interlaced raster scan which is used
to paint the display image on the face 24 of CRT 22.
[0038] Use of two bits each to define the X and Y subpixel addresses results in 4 discrete
subpixel address locations in each dimension for each pixel. The four steps are numbered
in binary sequence 00, 01, 10, 11 from top to bottom in the Y direction and left to
right in the X direction. The value 10 is assigned to the normal or background subpixel
location. This enables a given pixel to be selectively shifted to the right (or upward)
by one or two quarter pixel increments or to the left (or downward) by one quarter
pixel increment.
[0039] In the X direction the subpixel address adjusts the starting time (or left edge)
of the pixel. The location is changed by starting the pixel display slightly earlier
or slightly later. However, in the Y direction, special subpixel deflection coils
must be added and driven with subpixel deflection currents.
[0040] However, it is expensive to implement bipolar deflection currents with a very high
frequency response. For this reason the subpixel deflection coils and currents are
implemented to deflect pixels vertically upward only 0, 1, 2 or 3 quarter pixel increments
from the normal raster scan position in response to binary commands of 00, 01, 10,
11, respectively.
[0041] In the absence of negative subpixel deflection currents a subpixel deflection of
1/4 is established as the normal or background position. The effect is to shift the
entire displayed image vertically upward by one-fourth pixel. This is not noticeable
to the viewer and requires a relatively small steady state current to drive the subpixel
deflection coils. From the background position each given pixel can be shifted down
1/4, up 1/4 or up 1/2 pixel position. These actual physical locations now match the
subpixel address commands, although a transformation is required between the addresses
and the subpixel deflection current commands. These states are summarized in Table
1 below.

[0042] It can be observed from Table 1 that the transformation from the subpixel address
to the current command turns out to be just a logical inversion. It will be remembered
that point zero in Table 1 actually corresponds to a displacement vertically upward
of 1/4 pixel relative to the normal deflection coil location of a pixel.
[0043] A vertical subpixel deflection circuit 28 receives the two bits of Y subpixel address
information from frame buffer memory 16 through the intensity control and horizontal
subpixel deflection circuit 20 and selectively drives the vertical subpixel deflection
coils in response thereto. The color map RAM 18, intensity control and horizontal
subpixel deflection circuit 20 and vertical subpixel deflection circuit 28 form a
display control system 30 which drives the CRT 22 to control the visual characteristics
and position of each visual picture element of a displayed video image. The intensity
control and horizontal subpixel deflection circuit 20 and the vertical subpixel deflection
circuit 32 within the display control system 30 form a video output subsystem 32.
The video output subsystem 32 operates to repetitively update CRT 24 with information
received from frame buffer 16 and color map RAM 18 to maintain a continuous visual
display.
[0044] At pixels defining lines and edges, the subpixel address may be changed from the
normal 2, 2 value as necessary to provide amoother edges and to reduce aliasing. Thus
a subpixel address value of 0, 0 would move the displayed pixel location one-half
of a pixel distance vertically higher and one-half of a pixel distance horizontally
to the left while a subpixel address value of 1, 2 would move the pixel by one-fourth
of a pixel distance horizontally to the left without changing the normal vertical
displacement. A value of 2, 2 is the normal display position and a value of 3, 3 moves
the pixel by one-fourth of a pixel distance horizontally to the right and one-fourth
pixel distance vertically downward relative to the normal background display position.
It will be appreciated that X and Y subpixel addresses independently control the horizontal
and vertical deflections so that each pixel may be selectively deflected by a selected
quarter pixel increment either horizontally or vertically or both.
[0045] Vector end-points are always located with a (2,2) bcas. Due to the nature of the
DVGs, addresses between end points are always (a,2) or (2,m) depending upon which
axis is the major axis. The major axis subpixel address is always selected to-be 2.
[0046] Referring now to Fig. 2, the intensity control and horizontal subpixel deflection
circuit 20 is represented in a somewhat simplified form. Frame buffer display architectures
are well known and therefore much of the conventional circuitry required to access
the frame buffer memory 16 in raster scan order, read out the pixel data, and cause
the face 24 of CRT 22 to be illuminated with the pixel data has not been explicitly
shown. Only that portion of the deflection circuit 20 which relates to horizontal
and vertical subpixel deflection of the normal pixel display position is illustrated
in detail.
[0047] A timing and control circuit 40 generates the master timing and synchronization signals
for operation of monitor 41 including CRT 22. These signals include a synchronization
signal which is communicated to the deflection control circuit 44 which controls the
raster scanning of a beam across the face 24 of CRT 22 in a conventional manner. In
the present example a set of magnetic deflection coils 46 produce a conventional raster
display pattern although alternative deflection means such as electrostatic deflection
plates or other display technology could be employed.
[0048] Timing and control circuit 40 generates a pixel rate clock signal 33 MHz/ which is
used to latch color intensity and subpixel address data received from color map RAM
18 and frame buffer memory 16. Timing and control circuit 40 also generates at the
33. MHz pixel clock rate a signal ECLK which is utilized to latch the intensity and
subpixel address data after processing in a pipeline type of arrangement. Timing and
control circuit 40 also generates at the pixel rate a set of four timing signals TO-T3
at the 33 MHz pixel rate, but having relative phase relationships displaced.at quarter
pixel time intervals (7.5 nanoseconds) to control the times at which color intensity
data is applied to CRT 22 and hence the exact quarter pixel horizontal position of
the corresponding video pixel image.
[0049] A V latch 48 responds to clock signal 33 MHz/ to latch the 24 bits of three color,
video intensity data while an X, Y latch 50 latches the four bits of X and Y subpixel
address data and a previous X, Y latch 52 latches the immediately preceding four bits
of X, Y subpixel address data.
[0050] A horizontal control ROM 56 receives the curent pixel and previous pixel subpixel
address information as address inputs and outputs horizontal displacement control
information defining the effective subpixel address commands in response thereto.
The Y subpixel information output by horizontal control ROM 56 represents a straight
passthrough of the current Y subpixel address information. However, the X subpixel
address information output by horizontal control ROM 56 represents a selected blending
of the previous and current X, Y subpixel address offsets so as to achieve a positional
averaging effect at line or edge boundary intersections.
[0051] Many existing systems handle discontinuities which occur as two intersecting lines
attempt to share a single pixel by displaying the pixel as a weighted average of the
two or more colors attempting to share the pixel in proportion to the portion of the
pixel theoretically occupied by each color. This color blending tends to degrade the
dynamic resolution of the display and is aesthetically unsatisfactory for color mapped
systems having a limited continuity of the various colors.
[0052] Instead of attempting to dynamically blend the different colors of two intersecting
lines or edges, the horizontal control ROM 56 uses subpixel addresses of adjacent
horizontal pixels to set the spatial boundary between the pixels so as to produce
an aesthetically pleasing image while retaining the full dynamic visual acuity and
resolution of the imaging system. As a general rule, line or boundary pixel edges
are treated as dominant and conflicting background pixel edges are moved to conform
to the subpixel deflection of line or edge pixels.
[0054] It will be recalled that a subpixel address value of 2 indicates a background or
fill pixel which is displayed at a normal pixel position. Such pixels thus tend to
indicate a background or fill position although a subpixel address of 2 can occur
at a line or edge boundary if the best position for defining the boundary coincidentally
happens to be the normal background position. In any event, the absence of a value
of 2 (Y1,Y0=1,0 binary) from the Y subpixel address of both the current and previous
pixel indicates that neither pixel is a background pixel and suggests an intersection
of two lines or edges.
[0055] In Tables 2A-2D the rows correspond in top to bottom order to current X subpixel
address values of 0-3 decimal respectively while the columns correspond in left to
right order to the previous pixel X subpixel address values of 0-3 decimal respectively.
Look at the major diagonal of the array shown in Table 2A. It will be noted that where
both the current and previous pixels have the same subpixel address, the output address
from control ROM 56 is the same as the inputs. Where the previous and current pixels
do not have the same subpixel X address, the current pixel effective X address is
output approximately as an averaging of the previous and current pixel subpixel X
addresses depending on the current and previous YlYO address.
[0056] It should be noted at this point that the subpixel X addresses define the point at
which the left edge of a pixel occurs by defining the time at which the corresponding
color intensity data is applied to the CRT display. Once a pixel starts it continues
until the occurrence of the next pixel by applying-the color intensity information
for the next pixel to the CRT display. There is consequently no gap between adjacent
pixels in the horizontal direction. The width of each pixel is inherently varied to
fill the allotted display space.
[0057] The X subpixel address output of horizontal control . ROM 56 (designated XR1, XRO)
is decoded by a binary decoder 58 and then latched by EX latch 60 in response to clock
signal ECLK. At the same time, EV latch 62 latches the corresponding 24 bits of video
color intensity information while an EY latch 64 latches the corresponding subpixel
Y address information Yl, YO which has been passed through horizontal control ROM
56 unchanged. A multiplexer 66 receives the decoded effective X subpixel address information
and the four sequentially phased timing signals TO-T3; and in response to these signals
generates a pixel start clock signal which effectively defines the time of occurrence
and hence the spatial positioning on the video display of the left edge of.each successive
pixel.
[0058] Upon the occurrence of the signal pixel start, three 8 bit digital-to-analog converters,
one for each of the R, G, B color components of the video signal, contained within
a circuit designated latching I DACs 68 receive and latch the color intensity signals
from EV latch 62. These latched color intensity signals are immediately converted
to corresponding analog voltages and applied to the color intensity control inputs
of the CRT 22 to immediately command the displaying of the latched video information.
Simultaneously, signal pixel start causes a Y deflection latch 70 to receive and latch
the Y subpixel address information from EY latch 64.
[0059] A digital-to-analog converter 71 responds to the digital Yl,Y0 subpixel offset signal
output by Y.deflection latch 70 to generate an analog signal on conductor 73 that
is indicative of the subpixel displacement. DA converter 71 inherently provides the
logic conversion that is required to convert the Y subpixel address signals to deflection
current command signals. An amplifier 72 with four output stages responds to the analog
deflection signal on conductor 71 and drives a current through the four coil pairs
in proportion thereto. A set of low inductance subpixel deflection coils 76 having
four single turn coils on each side of CRT 22 is driven by the current outputs of
buffer amplifier 72 to selectively deflect the scanning or electron beam vertically
upward from the normal raster scan position. The 8 coils generate a uniform horizontal
magnetic field across the three electron beams from the PIL gun of CRT 22. This causes
equal vertical deflection of the three beams. As noted previously, negative subpixel
address values are eliminated by utilizing a subpixel address value of 2 as the normal
horizontal background position and a subpixel address value of 2 as the normal vertical
background position. This background address value corresponds to a vertical offset
of 1/4 upward. The displayed pixel location can be moved vertically upward or downward
from this normal background position relative to the +1/4 pixel upward bias position.
[0060] In order for the vertical subpixel displacement of a given pixel to match the occurrence
of the left boundary of the pixel at the time the video data corresponding thereto
is latched by digital-to-analog converter 68 and becomes effective to control the
display, it is necessary that the response rate of the amplifier 72 and the deflection
coils 75 match the response rate of the color intensity controls of CRT 22. Because
this response rate is very fast, the single turn coils 76, are utilized to reduce
the inductance thereof and enable the response time of the subpixel vertical deflection
system to match this very fast response of the intensity control system. The amplifier
bandwidth can be trimmed at the time of manufacture to synchronize the subpixel vertical
deflection with the intensity control.
[0061] As shown in Figs. 1 and 3, the digital vector generator system 14 operates in response
to vector defining information received from the image generation and storage system
12 to generate multi-bit digital words of pixel data representing video image pixels
of vectors defined by the vector defining information. The digital vector generator
system 14 includes raster display processor (RDP) 110 having input and output data
buses RDPIN 90, and RDPOUT 92 which each carry 16 parallel data conductors along with
control conductors and couple to raster board buses RBOUT 15-0 96 and RBIN 15-0 100
respectively, which interconnect the major system components of the image generation
and storage system 12. The RDP input data bus 90 is coupled through a buffer 94 .
to bus RBOUT 96 while the RDP output bus 92 is coupled through a buffer 98 to bus
RBIN 100. A 16K x 16 data memory is included within raster data processor 110 to provide
storage of object and vector definition data as well as working operands. A message
bus with 16 data conductors and 8 control conductors provides communication between
the raster data processor 110 and the image generation and storage system 12. Through
the RDP input and output buses 90, 92 and their extensions RBOUT 96, RBIN 100 along
with control lines, the raster data processor 110 (see Fig. 3) has communication access
to the individual registers and memories of the visual characteristic pixel data generating
portion 112 of the digital vector generator 14.
[0062] The raster data processor 110 receives image defining lists from the image generation
and storage system 12 and processes these lists to obtain the data necessary to initialize
the pixel data generator 112, which in turn generates the actual pixel data containing
the dynamic color and intensity visual characterization for each line vector of a
display image. The pixel data generator 112 basically operates between only two end
points defining a single line vector at any one time. The raster data processor 108
breaks down complex image segments such as vertex defined, filled or unfilled polygons
into line vector representations. Typically each object is represented by a series
of boundary vectors defining the peripheral edges of the object and a series of fill
vectors which are coincident with raster scan lines and define the interior of an
object. The pixel data generator 112 is then utilized to generate the actual pixel
data values and their display position addresses for these line vector representations.
[0063] The pixel data generator portion 112 of the digital vector generator 14 includes
a digital vector generator control circuit 114 which generates the specific decoding,
timing signals and control signals for clocking and enabling the various registers,
memories and other circuit components of the pixel data generator 112 for the purpose
of transferring . data from one place to another. These data transfer techniques are
conventional and in the interest of clarity have not been described in detail. However,
the major control signals and the important timing relationships which enable the
proper operation of the vector generator 112 are described specifically.
[0064] The digital vector generator system 14 is coupled to frame buffer memory 16 by a
large bandwidth bus called the DVG bus 116. A set of 79 principal conductors comprising
DVG bus 116 is arranged to carry 34 data signals DVGDAT 33-0, 16 address signals DVGADDR
15-0, 24 chip select signals DVGCS 23-0 and 5 frame buffer memory select signals FBMSEL
4-0. All except the data signals are actually addressing signals. The frame buffer
memory select signals permit selection of the color components and two single bit
overlay components of frame buffer 16, Z buffer 16a or color map RAM 18. The data
signals include 16 bits of Z buffer 16a data DVGDAT 33-18, 2 bits of overlay memory
data DVGDAT 17-16, 4 bits of X,Y subpixel address data DVGDAT 15-12, and 12 bits of
main frame buffer memory 16 data DVGDAT 11-0. Conventional control and clock signals
are also passed along the DVG bus conductors.
[0065] Raster data processor 110 is coupled to the DVG bus 116 to provide RDP 110 with complete
control over the contents of the frame buffer 16, 16a for such functions as initialization
and diagnostic analysis. During video display generation the pixel data generator
112 communicates pixel spatial addresses and visual characteristic information over
the DVG bus l16 to frame buffer 16, 16a. Buses RBOUT 96 and RBIN 100 couple RDP 110
to the color map RAM 18 for initialization and diagnostic analysis.
[0066] The pixel data generator 112 includes six component digital vector generators 118-123
designated respectively
DVG X, DVG Y, DVG Z, DVG I, DVG J and DVG K. Spatial address generators X, Y and Z
l18-120 generate three dimensional positional address information while visual display
characteristic generators I, J, K 121-123 generate three dimensional color and video
intensity information. The two sets of . generators form a vector generator subsystem
126 with an X, Y,
Z spatial address portion 128 and an I, J, K dynamic color portion 130. The two portions
128, 130 are conceptually similar but have differences in their specific implementations.
[0067] Visual characteristic generator DVGs I,J and K 121-123 perform three primary functions.
During Gouraud shading DVG K 123 interpolates intensity data between two end points
Phong shading produces a quadratic interpolation between end points and uses DVGs
I,J and K. Texture is generated by slaving the
rI and J DVGs to the X,Y and Z DVGs and addressing the pattern RAM with the I and J
DVGs.
[0068] A dynamic intensity processing circuit 150 couples the generated visual characteristic
information to the DVG bus 116 with a large number of selectable combinations which
afford the system operator an extensive collection of selectable operating modes.
A pattern shape multiplexer 152 receives the 13 bits I 6-0, J 5-0 and selectively
outputs 12 of the 13 bits to a 4K x 12 pattern RAM 156. The output bits are selected
as I 5-0, J 5-0 when signal PATTSHPSEL from a mode control register 258 is 1 and I
6-0, J 5-1 when signal PATTSHPSEL is zero. This enables color selection signals to
be balanced between the I and J DVGs 121, 122 or to be weighted in favor of DVG I
121.
[0069] The selected 12 bits become address bits for the pattern RAM 156. If each work in
pattern RAM 156 stores the value of its address then the address input signal is output
to a color/intensity mixer 158 unchanged. Alternatively, the address input can be
made to recycle with a selected period. If a selected visual pattern is stored in
pattern RAM 158 at addresses corresponding to the repeating address pattern, pattern
RAM 156 will output the pattern on a repetitive basis to provide a textured surface
effect.
[0070] Further freedom in manipulating the visual characteristic pixel data is provided
by the color/intensity multiplexer 158 which selects either 8 bits, PR 7-0 from normalizing
circuit 154 or 12 bits COL 11-0, from pattern RAM 156, and outputs 12 bits, comprising
a selected combination onto data conductors DVGDAT 11-0 of DVG bus 116. This permits,
for example, a surface to be shaded or covered with a pattern.
[0071] DVG control circuit 114 includes a DVG pixel counter 148 along with functions such
as decoding of register selection and enable signals and generation of control signals
required for the operation of the pixel data generator 112. An address translate and
interleave circuit 146 receives the X, Y integer pixel addresses from X, Y DVG 118,
119 in X, Y coordinate representations and converts these to a set of linear addresses
that are compatible with data memories. A more detailed discussion of the various
components of the vector generator system 14 is provided below.
[0072] The digital vector generator X 118, is illustrated in greater detail in Fig. 4. DVG
X 118 includes a 12 bit X fraction register 134, a 12 bit X accumulator register 136
and a 12 bit X adder/subtractor 138 coupled to receive the output of X accumulator
136 as an A input, the output of X fraction register 134 as a B input, and to output
the result thereof to the X accumulator 136. A 12 bit up/down X pixel counter 140
is coupled to be selectively incremented or decremented when its count enable input,
GET, is enabled by a carry out output, C12, from adder/subtractor 138 which represents
a carry out from the most significant bit when adding, or a borrow when subtracting.
The C12 output of adder/subtractor 138 is exclusive OR-ed with the DELXSIGN/ signal
to insure that carries are propagated for ADDs and borrows are propagated for subtractions.
Counter 140 is coupled to be initialized with data from bus RBIN 11-0 100 under control
of signal load X counter LDXCTR/, which is decoded in DVG control circuit 114 from
a set of 5 binary RB destination control signals which are generated by RDP 110.
[0073] A 16 bit tristate X buffer 132 is coupled to place upon the RDP output bus 96 a 16
bit word when its output enable control is activated by a signal to read the X DVG,
RDXDVG, which is decoded from the RB control signals. The 16 bit word is comprised
of 12 bits from the X counter 140 and the most significant four bits, XACC 11-8; from
X accumulator 136 which are placed in the four least significant bit positions by
bus RBOUT 96. This coupling is useful for test and diagnostic purposes.
[0074] The X fraction register can be loaded from the RBIN 11-0 bus 100 under control of
a signal load X fraction register, LDXFRAC, which is decoded from the RB destination
select signals. The 12 bit adder/subtractor 138 is implemented from 74F382 integrated
circuits and has three control inputs S0, Sl and S2 which control the operation thereof.
With control input S2 tied to logic 0 the four available functions controlled by Sl,
SO are 00-output all zeros, 01-subtract B-A, 10-subtract A-B, and 11-add. By selectively
using these controls and transferring data over RBIN bus 100 the X fraction register
134 and X accumulator register 136 can be initialized with any desired data values
under the control of the raster data processor 110. For example, accumulator register
136

be cleared using the all zeros output state of adder/sub- facactor 138 and then any
value can be passed through bus 100 to the X fraction register, added to zero and
stored in the accumulator register 136. After initializing the X accumulator 136,
any desired value can be loaded into the X fraction register 134 from RBIN bus 100.
Pixel counter 140 can be directly set with data from bus RBIN 11-0 100.
[0075] The binary point is deemed to lie between the most significant bit position of accumulator
register 136 and the least significant position of X pixel counter 140. Thus, during
operation, X pixel counter 140 stores integer X address values while X accumulator
136 stores fractional X address values. The two most significant fractional address
bits, designated X
1 and Xo are communicated to frame buffer 16 for use in subpixel addressing the individual
pixels of the displayed image.
[0076] A set of logic gates 141-143 receives control signals clear accumulators (CLRACCS/)
and load X accumulator (LDXACC/), decoded from the RB control signals; and signals
delta X sign, (DELXSIGN), and DVG run (DVGRUN/) to control . the operation of the
X DVG 118. Signal DELXSIGN is generated by RDP 110 as the sign of the difference between
X dimension ending and starting points for a vector to be generated. The sign of the
difference is output to DVG control circuit 114 as a control signal RBDXSIGN which
is latched to generate signal DELXSIGN. The signals are L (logic 0) for a plus sign
(add) and H (logic 1) for a negative sign (subtract). Signal DVGRUN/ is generated
by DVG control circuit 114 in response to a control signal STARTDVG that is decoded
from signals received from the RDP 110 over bus RBIN 100 and continues until a pixel
counter 148 within DVG CTRL circuit 114 indicates that all points of a vector have
been generated. The SO input to adder/subtractor 138 is generated as Signal XSO =
CLRACCS/ (LCXACC + DELXSIGN/). Signal XS0 is thus forced low to produce its zero output
for clearing accumulator register 136 by signal CLRACCS/. Subsequently signal LDXACC
may be asserted to place adder/subtractor 138 in the add mode so that the contents
of the previously loaded fraction register 134 can be added to zero and transferred
to accumulator register 136. Signal DELXSIGN is a direction signal. When L (positive
sign) adder/subtractor 138 is placed in an add mode and counter 140 counts up. When
B (negative sign) adder/subtractor 138 is placed in a subtract mode and counter 140
counts down.
[0077] The Y DVG 119 is identical to X DVG 118 except that it is controlled by Y dimension
control signals corresponding to the X dimension control signals. The Z DVG 120 is
similar to the X and Y DVGs 118, 119 with some small variations. (See Fig. 5).
[0078] Referring now to Fig. 5, Z DVG 120 includes a Z fraction register 134A, a Z integer
register 134B, a Z 12 bit fraction adder/subtractor 138A, a Z 16 bit integer adder/subtractor
138B, a Z 12 bit fraction accumulator 136A, a
Z 16 bit integer accumulator 142 to 144. The operation of a Z DVG 120 is essentially
the same as X and Y DVGs 118, 119 except that the arithmetic capability is expanded
to 16 integer bits. This increases the resolution in the Z dimension to 16 integer
bits and permits stepping by multiple integer distances in the .
Z dimension as the digital vector generator system is operated to create video data
pixel representations of vectors.
[0079] Z integer register 134B may be loaded for initialization from bus RBIN under control
of decoded control signal LDZINT/ while Z fraction register 134A may be loaded from
bus RBIN in response to decoded control signal LDZFRAC/.
[0080] The DVG Z circuit 120 which is shown in Fig. 5, is not constructed with the overflow
adder-counter configuration shown for DVDG X circuit 118 in Fig. 4. In order to better
resolve small angles and distances in the Z dimension, DVG Z 120 has been provided
with a 12 bit fraction portion and a 16 bit integer portion. The fraction portion
includes a Z fraction register 134A, a Z adder/subtractor 138A and Z fraction accumulator
136A. The 16 bit integer portion operates synchronously with the fraction portion
to process the more significant bit positions and includes a Z integer register 134B
coupled to receive initializing data from bus RBIN 15-0, an integer accumulator 136B
and an integer adder/subtractor 138B. The 16 available integer bits can be scaled
by a the user in a known manner so as best to represent the range of Z dimension distances
for any given application.
[0081] While the selection of intializing data varies somewhat with the particular mode
of operation for the vector generator system 126, the mechanics of the operation of
each of the digital vector generators 118-123 always remains essentially the same.
Using X DVG 118 as the specific example, the integer portion of the starting vector
coordinate for each DVG 118-123 is loaded into the integer counter or register 140
from data memory 106 over bus RBIN 100. The fraction register 134 for each DVG is
similarly loaded. Then the accumulator registers 136 are cleared by asserting signal
CLRACCS/ to force a zero output from adder/subtractors 138 while clock signal DVGCLK
is asserted. Next, the load accumulator signals (LDXACC/) go active low to add zero
to the starting vector coordinate and store the sum in the accumulator register 136.
[0082] For the digital vector generators assigned to the minor spatial axes (X, Y or Z)
a roundoff value of 1/8 (binary .001) is then loaded into the fraction register and
subsequently added to the fractional starting coordinate value for the initial pixel
stored by the accumulator. This 1/8 pixel value creates an offset which automatically
rounds the 1/4 pixel resolution represented by the two most significant bits to the
nearest 1/4 pixel value. That is, as soon as the accumulated incremental value in
the accumulator passes the 1/8 point, the two most significant accumulator bits will
indicate a value of 1/4 and continue to indicate 1/4 until the accumulated actual
values pass the 3/8 point at which time the two most significant bits will indicate
a value of 1/2. Rounding is thus automatically effected to the nearest 1/4 pixel value.
[0083] Next, the slope of the vector with respect to the X or Y major axis is loaded into
the fraction register 134. The major axis is the X or Y axis to which the vector being
displayed is most nearly parallel. This is, the axis to which the angle between the
axis and vector is less than or equal to 45°. If the vector lies at exactly 45°, the
X axis is treated as the major axis.
[0084] For the DVG corresponding to the major axis a delta value of all 1's (I-2
-12) is loaded into the corresponding fraction register. If DELSIGN is L (increment accumulator),
a carry bit is entered into adder/subtractor 138. If DELSIGN is H (decrement accumulator),
a borrow (L) bit is entered into the adder/subtractor 138. This process sets the increment
along the major axis to unity.
[0085] After the DVGs are stepped to generate a next point, the resultant values are written
into the frame buffer 16. The value stored in the fraction register of each DVG is
thus added to the corrresponding accumulator 136 for each DVG to enable the correct
value for each axis to be indicated at the DVG output as the system steps along a
line vector in one pixel increments. As the adder/subtractor 138 overflows, the counter
140 is incremented (or decremented) so that for each DVG 118-119 the counter 140 indicates
the integer portion of the pixel address and the accumulator 136 indicates the frac-
. tional portion. Each DVG 118-123 includes an adder/subtractor 138A, 138B and an
accumulator 136A, 136B which extends to the integer portion of the resultant vector
coordinate.
[0086] Referring now to Fig. 6, the dynamic value DVGs I, J, K 121-123 operate in the same
general manner as the spatial DVGs 118-120, but have a somewhat more flexible hardware
configuration.
[0087] DVG I, J. and K 121-123 are similar to DVG X, Y and 1 118-120 except that DVG I,
J and K 121-123 operate upon three dimensional normal intensity vectors rather than
positional vectors.
[0088] The dynamic value DVGs I, J, K 121-123 develop information which defines the visual
manifestation characteristics corresponding to the pixels whose addresses are being
concurrently generated by the X, Y Z spatial DVGs 118-120. AS illustrated by DVG I
121 shown in Fig. 6, the hardware of the dynamic value DVGs provides more flexibility
in the selection of operating modes than the spatial DVGs but the basic principle
of operation is essentially the same.
[0089] A 8 bit I fraction register 134C, an 8 bit I fraction adder/subtractor 138C and an
8 bit I fraction accumulator 136C operate in substantially the same manner as the
fraction portion of the X and Y DVGs 118, 119 except that the resolution is decreased
from 12 to 8 bits. For each step of the DVGs il8-123, a delta value stored by fraction
register 134C is added to an accumulated value stored by I fraction accumulator 136C.
However, whereas pixel spatial addresses are determined by pixel locations in a predetermined
pixel display array and can at most change by a value of one, the visual characteristics
depend on subject lighting conditions and can change by values greater than one at
each step. The integer portion of DVG I 121 is thus implemented with an 8 bit I integer
register 134
D, an 8 bit I integer adder/subtractor 138D and an 8 bit I mask register and accumulator
136D which performs the corresponding accumulator function of I fraction accumulator
136C. I DVG 121 is thus capable of accommodating non-fractional delta increments.
[0090] Within the I and J DVGs 121-122, mask register and accumulator 136D enables a selected
number of most significant integer bits to be effectively frozen or fixed at a value
which can be preset into accumulator 136D while the less significant bits are allowed
to accumulate and repetitively overflow as a sequence of pixel definition steps is
executed. A mask register within I mask register and accumulator 136D receives and
stores a mask control byte from bus RBIN 7-0 100 in response to a decoded register
load signal LDSHDMSK 1. Each bit of the mask control byte enables the loading of a
corresponding bit position in the accumulator register. By disabling the loading of
a given accumulator register bit it is "frozen" and no carries can be passed through
to higher order bit positions. All values at the masked bit position and above thus
remain constant while lower ordered positions the able to increment and overflow as
the integer delta value and carries from the fractional portion are added thereto
at each DVG step.
[0091] This elective bit freezing function is particularly useful in conjunction with DVG
I 121 and DVG J 122 when they are coupled through the pattern shape multiplexer 152
to address pattern RAM 156. In this mode of operation, a pattern stored within a selected
number of address locations in pattern RAM 156 can be repetitively outputted every
2
n pixels in each dimension where n is the number of bits which are allowed to vary
within the I and J outputs. By placing the same delta values in the I, J DVGs 121,
122 as the X, Y DVGs 118, 119 respectively, and freezing selected bits in the I, J
accumulator registers, a corresponding pattern can be stored in pattern RAM 156 which
will be repetitively accessed synchronously with the incrementing of DVGs X and Y
(118, 119) to produce a repetitive display pattern.
[0092] For example, if the I output corresponds to the X dimension, and 3 bits are allowed
to vary while the remaining bits are frozen, the address input to pattern RAM 156
will repeat itself and thus cause the dynamic output thereof to - repeat every 2
3 = 8 pixels while stepping in the X direction. Similarly, if the DVG J 122 generates
the Y dimension pattern output with three pixels allowed to change states, the Y address
input to pattern RAM 156 and hence the corresponding pattern output will repeat every
2
3 = B steps in the Y dimension.
[0093] The size and repetition rate of the pattern stored in pattern RAM 156 thus may be
controlled by the mask control signals or, alternatively, by changing the incremental
values stored in the I and J fraction registers 134C, the relative pattern sizes may
be controlled while I and J mask registers 136D continue to control the repetition
rate. The more significant bits of the accumulator register 136D may be masked and
used as page address inputs to pattern RAM 156 to selectione of a plurality of pages,
each storing a different texture pattern within pattern RAM 156.
[0094] An I absolute value circuit 147 receives the 8 most significant bits from accumulator
register 136D as well as the signal most significant fractional bit from fraction
accumulator 136C. Sign bit 17 is used as a control bit while the seven least significant
integer bits and the most significant fractional bit are outputted as an 8 bit unsigned
number. When enabled, I absolute value circuit outputs the signals received if the
sign bit is positive (zero) and the one's complement of the bits received if the sign
bit is negative (one). For the I and J DVGs the absolute value.circuit is permanently
enabled.. For K DVG 123, the enable input is controlled by a decoded control signal
BACKLITE which selectively enables a backlighting effect. During normal operation
either the absolute value of K is selected for backlight, or K is set equal to zero.
[0095] Referring now to Fig. 3, the output of pattern shape multiplexer 152 is enabled in
response to mode control signal PATTERN while select signal PATTSHPSEL from the mode
control register determines which intensity signals may be passed to pattern RAM 156
as-address inputs. If PATTSHSEL = 0, signals 15-10 and J5-JO are selected. Otherwise
signals 16-10 and J5-Jl are selected.
[0096] Fig. 7 illustrates the DVG control circuit 114 in somewhat greater detail. DVG control
circuit 114 includes the DVG pixel counter 148, the mode control register 258, a control
decoder 252, a run control flip-flop 254, and a direction control register 256.
[0097] To start the generation of a vector the RDP, 110 initializes the DVG circuits 118-123
as described above, loads the number of pixel points to be plotted into a pixel counter
148 within DVG control circuit 114 (see Fig. 7) under control of a decoded control
signal, LDDVGCTR/, and asserts a start signal. STARTDVG/ which is decoded from the
DVG control signals by a destination decoder 252.
[0098] Signal STARTDVG/ sets DVG run/hold flip-flop 254 which generates at its Q/ output
a run signal, DVGRUN/. Signal DVGRUN/ enables operation of each of the DVGs 118-123
as well as a count enable input, CET, of 12 bit DVG pixel counter 250. The digital
vector generator system then proceeds automatically to step along a display vector
in single pixel increments with respect to the major axis under control of clock signal
DVGCLK. After each step a current pixel is written to the frame buffer 16 using the
position address and dynamic intensity data developed by the digital vector generators
118-123.
[0099] As soon as the vector has been plotted, DVG pixel counter 148 counts down to zero
to activate its RC output which operates to reset the run control flip-flop 254 and
terminate the run signal DVGRUN/. The digital vector generator system 14 must then
be reinitialized with data for the next vector and signal STARTDVG/ must be reasserted
to initiate plotting of the next vector.
[0100] If a next vector has a first point coincident with an immediately preceding vector,
then the first point will already have been output to the frame buffer 16, and the
accumulator registers and counters will contain the initial coordinate values. Only
the delta or step values and the DVG pixel counter 250 need be updated to generate
the next vector.
[0101] A direction control register 256 operates in response to signal STARTDVG/ to store
6 direction control signals RBDKSIGN-RBDXSIGN and product signals DELKSIGN-DELXSIGN
in response thereto. These signals determine whether the DVG adder/subtractor of each
DVG 118-123 operates in an add or a subtract mode. This in turn determines whether
for a given dimension, a vector extends in a positive or a negative direction.
[0102] A mode control register 258 is implemented as an addressable latch having its data
input connected to bus signal RBIN 3 and the three address inputs connected to bus
signal RBIN 2-0. Mode control latch 258 is enabled by a decoded control signal LDMODREG/
to store a data input signal in any addressable register location. The eight output
control signals may thus be set by RDP circuit 108 to any desired state.
[0103] DVG/VTC decoder 252 receives from bus RBIN 100 six control signals RBDEST 0-2, 4-6
which are in essence register address signals. These signals are decoded so long as
the reset signal is not asserted to produce twenty-one active low selection signals
as follows: LDXYCNTL, SETBRDFLT, LDCLT, LDMODEREG, LDPATT, STARTDVG, CLRACCS, LDDVGCTR,
LDSHDMSK, LDKACC, LDDELK, LDJACC, LDDELJ, LDIACC, LDDELI, LDYCTR, LDYACC, LDYFRAC,
LDXCTR, LDXACC, LDXFRAC.
[0104] A fault flip-flop 262 controls a fault circuit 204 in response to a decoded control
signal SETBRDFLT/, to generate a warning signal, BROKE,/, and illuminate an LED 266
when DVG system 14 is not properly operating.
[0105] It will be appreciated that the contents of the XDVG integer pixel counter 140 and
the X accumulator 136 can be concatenated at any given time to provide the complete
X dimension pixel address for any current point (see Fig. 4). The integer portion
of the address will be in the counter 140 with the 12 bit fractional address portion
being in the X accumulator 136. Whenever the addition of the delta value in the X
fraction register 134 to the fractional value in the X accumulator 136 results in
a sum greater than one, the carry output, CR, of adder/subtractor 138 becomes active
high to increment (decrement) the X counter 140 and indicate a next pixel address
location. The fractional value stored in X fraction register 134 continues to be added
to (subtracted from) the fractional value stored in X accumulator 136. After each
DVG update or step the integer portions of the X and Y addresses stored in the X or
Y counters are communicated to an address translate and interleave circuit 146 (see
Fig. 3) while the two most significant fractional bits for each Y and X are output
to the frame buffer memory data bus 116 at DVGDAT 15-12. Address translate and interleave
circuit 146 (Fig. 3) then converts the integer X and Y values to memory chip addresses
for the frame buffer memory 16. At the X and Y address location indicated by these
address values, dynamic intensity video information derived from the contents of the
I, J and K digital vector generators 121-123 is stored in the main portion of the
frame buffer memory 16 along with the X and Y subpixel values. In addition, the integer
and subpixel values of the Z dimension taken from the DVG Z circuit 120 are stored
in the Z buffer portion 165a of the buffer memory 16 at the indicated pixel address.
If hidden surface processing is activated, then the intensity data is only stored
if the Z coordinate value of the pixel is deemed closer to the origin than data previously
written into that pixel X, Y location. After the data has been stored in frame buffer
memory 16, vector generator circuits 118-123 are incremented. The next sample intensity
and subpixel address values are then stored in frame buffer memory 16 at the next
pixel address.
[0106] In order to determine when the generation of pixel data for a line vector has been
completed, the raster data processor 110 (Fig. 3) calculates the number of pixel sample
points to be generated and stores this value in the 12 bit DVG pixel counter 148 (Fig.
7). For each occurrence of signal DVGCLK a pixel data point is sampled and stored
in the frame buffer memory 16 and the pixel counter 148 is decremented until it reaches
a count of 0 at which time an RC output generates a count complete signal which resets
run control flip-flop 254 to terminate signal DVGRUN and thus end processing for the
current line vector.
[0107] Referring now to Fig. 3, a dynamic intensity or visual characteristic processing
circuit 150 is coupled to receive visual characteristic information from the visual
characteristic vector generators I, J, K 121-123 and process this information to generate
information defining the visual characteristics at each spatial pixel point along
a display vector that is being generated. Processing circuit 150 includes a pattern
shape multiplexer 152 coupled to receive seven bits from the DVG I circuit 121 and
6 bits from the DVG J circuit 122, a normalizing circuit 154 coupled to receive six
bits each from the DVI 121 and DVG J 122 circuits and eight bits from DVG K 123, a
4K by 12 pattern RAM 156, and color/intensity multiplexer 158.
[0108] Selected background color patterns, such as dashed line patterns or background color
windows for insertion of separate data can be generated by initializing frame buffer
16 to a background color before vector generation begins. A pattern of zero's is then
written into pattern RAM 156 at pattern locations at which it is desired that the
background color be displayed. Zero detect circuit 166 detects this zero value output
data and responds by terminating the active state of signal DVG Write Enable, DVGWE.
This prevents the background color stored in frame buffer 16 from being overwritten
.
[0109] Normalizing circuit 154 is shown in greater detail in Fig. 8 and operates during
Phong shading operations to convert the three normal magnitudes generated by the I,
J and K DVGs 121-123 to a single normalized value that is representative of pixel
intensity. During this mode signal PATTEN from mode control register 258 constrains
the pattern shape multiplexer 152 to produce a zero address input to texture RAM 156
to assure a constant color output.
[0110] Referring now to Fig. 8, normalizing circuit 154 includes a B ROM 190, an A ROM 192
and an adder 194. Adder 194 sums ABSK 7-0 with the AR7-ARO output from A ROM 192 and
outputs PR7-PR0. Normalizing circuit 154 responds to the outputs of the I, J and K
digital vector generators 121-123 to approximate the magnitude of a Phong shading
algorithm while making optimum use of economically available precision by the formula:

[0111] N is the corrected intensity component parallel to the K axis. N is computed from
the interpolated IJK values. The initial term in parentheses is a correction value
to be algebraically added to the interpolated value of K.
[0112] Within normalizing circuit 154 all values are treated as unsigned positive fractional
values with the decimal point immediately to the left of the most significant bit.
B ROM 190 receives the 6 most significant bits of the absolute value output signals
from DVG I 121 and DVG J 122 as address inputs and outputs 1
2 + J
2 in response thereto. This output, BR7-BR2, is limited to a maximum value of 0.999
regardless of the input values in order to maintain a combination of a maximum number
of significant digits and simple hardware.
[0113] A ROM 192 receives as its 6 most significant address inputs 6 data bits D5-0 from
B ROM 190 which represent the 6 most significant bits BR7-2 of the B ROM function.
A ROM 192 also receives as its 6 least significant address bits the output of an AND
gate 191 which receives K intensity signals ABSK7-2 and a single gating signal from
mode control register 160, PHONGSHD. A ROM 192 generates the correction term (K I
2 + J
2 + K
2 - K) as output AR7-ARO. Eight bit adder 194 adds the outputs ABSK7-0 and the output
of a ROM 192 and as the sum thereof generates output N/, represented by binary signals
PR7-PRO.
[0114] Referring now to Fig. 9, color intensity multiplexer . 158 receives signals COL 11-0
from pattern RAM 156 and signals
PR7-0 from normalizing circuit 154 and selectively combines these signals in one of
6 modes defined by binary counts 0-5 of a mode control signal, MIXMODE 3-0. A buffer
340 receives a selected group of twelve of these signals and outputs them as signals
DVGDAT 11-0. Buffer 340 also receives the four X and Y subpixel address signals and
outputs them as DVG data signals DVGDAT 15- 12 to the frame buffer 16, 16a.
[0115] A quad 2:1 multiplexer 350 receives signals COL 11-8 as a B input and signals PR7-4
as an A input. Multiplexer 350 selects one of these inputs as an output in response
to a control signal SEL2 and the output signal is connected to buffer 340 to supply
bits DVGDAT 11-8.
[0116] A decoder 352 receives signals MIXMODE 3-0 and generates the color intensity multiplexer
158 control and selection signals in response thereto. Signal SEL2 is decoded to go
low and select the PR7-4 A input only during mode 5. Signal DVGDAT 11-8 thus represents
COL 11-8 in modes zero to four and PR7-4 in mode 5.
[0117] Signals DVGDAT 7-4 are generated as the output of one of two tri-state multiplexers
342, 357. Multiplexer 357 is a quad 4:1 multiplexer and multiplexer 342 is a quad
2:1 multiplexer. The output enable input to multiplexer 357 is connected to signal
MIXMODE 1 while the output enable input to multiplexer 342 is connected to signal
MIXMODE 1/. Multiplexer 342 is thus active during modes 2 and 3 while multiplexer
357 is active during modes 0, 1, 4 and 5.
[0118] Decoder 352 generates signal SEL0 low during mode 2 to provide signals COL 7, PR7-5
for signals DVGDAT 7-4. During mode 3 signal SELO is generated high to select the
B input and couple signals PR7-4 to DVGDAT 7-4.
[0119] Decoder generates signals SEL 3, 4 to select one of 4 inputs A-D to multiplexer 357
during modes 0, 1, -4 and 5. During mode zero input A is selected to couple COL 7-5,
PR7 to DVGDAT 7-4. During mode 1 input B is selected with signals COL 7-6, PR 7-6.
During mode 4 input C is selected with signals COL 7-4 and during mode 5 input D is
selected to provide signals PR3-0.
[0120] The four least significant bits DVGDAT 3-0 are coupled to buffer 340 by a quad 2:1
multiplexer 348 having a B input connected to receive signals COL 3-0 and an A input
coupled to the output of a 4 bit shifter 344. The SEL B input to multiplexer 348 is
decoded to go high to select the B input and signals COL 3-0 during modes 4 and 5.
During modes zero to three signal SEL 5 remains low to select the output of shifter
344.
[0121] Shifter 344 receives as inputs signals PR6-0. The shift control inputs to shifter
344 are responsive to signals MIXMODE 1, 0 to output during mode 0, PR6-3, during
mode 1, PRS-2, during mode 2, PR4-1 and during mode 3, PR3-0.
[0122] The various modes and signal combinations are summarized in Table 3.

[0123] Referring now to Fig. 10, there is shown the raster data processor (RDP) 110 along
with data memory 106. Master control for the RDP 110 as well as the digital vector
generator system 12 is provided by a 2910 microcode control unit 270 which is arranged
in a conventional manner and includes a 2910 controller and a 4K x 64 microcode memory
with conventional decoding. Microcode control 270 provides six mode control signals
MODCNTL 5-0 which are used to control several different functional circuits throughout
the digital vector generator system 12. The signals are communicated in a manner analogous
to a data bus. For example, during execution of a clock generator initialize routine
a selected set of clock speed control signals is placed on the MODCNTL lines and loaded
into a clock generator control register. In a similar manner an . RDP mode register,
a box test control register, a shift control register and a multiplier control register
can all be sequentially loaded to provide selectable control by RDP 110. Most of these
mode control registers are used in a conventional manner and have not been explicitly
shown in the drawings.
[0124] Direction control register 256 (Fig. 7) is an example of such a control register.
In this case following a computation within RDP 110, the three least significant bits
MODCNTL 2-0, are used as bit selection addresses to load the ALU 272 (Fig. 10) output
sign bit, ALUDAT 15, into a selected bit position of a direction control decode register
255. Each bit position generates an output driving one of the RBDSIGN control signals
which are in turn stored by direction control latch 256 (Fig. 7).
[0125] Microcode control 270 also outputs a set of source select signals, DATAMEMSRCSEL
7-0 and a set of destination select signals DEST 5-0. These signals generate RBSRCSEL
2-0, RBDST 2-0 and RBDESTEN 6-4 which are decoded by control decoder 252 (Fig. 7)
to generate the source and destination select signals for the pixel data generator
112. These signals are typically used during a bus transfer to designate the register
or memory which is to be enabled to place data onto the bus as well as the destination
register or memory which is to be strobed to take data off of the bus. By applying
the 6 destination signals in a two step sequence, first to select one of a plurality
of decoders and then to supply a code to be decoded by the selected decoder, more
than 64 destination select signals can be generated from signals DEST 5-0.
[0126] Other control signals include ALU functions select 5-0 (ALUFNSEL 5-0) which control
the function performed by an arithmetic logic unit 272, signals ALU source select
27-0 (ALUSRCSEL 27-0) which control the sources of data for A and B ALU data buses
274, 276, signals data memory source select 7-0 (DATAMEMSECSEL 7-0) which define the
source of data applied to the input of the A and B portions of data memory 106, and
signals data memory control 6-0 (DATAMEMCTRL 6-0) which control the operation of data
memory 106.
[0127] In addition to the A and B ALU data buses 274,276 the RDP 110 main bus structure
includes a memory A data bus 278 connected to the input/output port of the A portion
of data memory 106 and a MEM B data bus 280 connected to the input/output port of
the B portion of data memory 106.
[0128] A message bus output interface circuit 282 provides an output coupling between the
memory B data bus 280 and a message bus which connects digital vector generator system
14 to the image generation and storage system 12. A memory buffer input interface
circuit 284 provides an input connection between the message bus and the memory A
data bus 278. The message bus includes 15 data lines designated MBD 15-0 and 8 control
lines designated MBC 7-0. The A ALU data bus 274 connects through the RDP output data
bus 90 to RDP input buffer 94 to provide a connection to bus RB OUT 15-0 96 which
services the pixel data portion 112 of digital vector generator 14. In a similar manner,
the MEM B data bus 280 connects through RDP input data bus 92 to RDP output buffer
98 which provides connection to RB IN 15-0 bus 100 for the pixel data generating portion
112 of digital vector generator system 14. A digital vector generator input/output
interface 286, which includes refresh control for the frame buffer memory 16, is coupled
to transfer data from a digital vector generator bus DVGBUS 78-0 to the A ALU data
bus 274 and to transfer data from the MEM B data bus 280 to DVGBUS 78-0. DVGBUS 78-0
includes a data portion DVGDAT 15-0 which connects to the output of color/intensity
mixer 158 as well as to frame buffer memory 16 and an address portion DVGADDR 15-0
which connects to the output of address translate and interleave circuit 146 as well
as to frame buffer memory 16. Data for Z buffer 16a, subpixel addressing and two overlay
stores within frame buffer 16 are carried by data lines DVGDAT 33-16.
[0129] An arithmetic logic unit 272 has its A input connected to the A ALU data bus 274,
its B input connected to the B ALU data bus 276 and its Y output connected to the
MEM B data bus 280. A 16 x 16 multiply circuit 290 has its Y input . and least significant
product output connected to the A ALU data bus 274, its X input connected to the B
ALU data bus 276 and a most significant product output connected to the MEM A data
bus 278. Together, the multiplier 290 and ALU 272 provide the programmed ALU control
circuit 108 with a sophisticated, high speed arithmetic capability for rapid manipulation
and transfer of vector data. A divide lookup ROM 292 provides a high speed division
capability and has its address input connected to MEM A data bus 278 with its outputs
connected to the A ALU data bus 274. A 16 bit data register 294 provides a connection
between the MEM A data bus 278 and the A ALU data bus 274. Similarly, a buffer 296
provides a connection from the B ALU data bus 276 to the MEM B data bus 280. A 16
bit register 298 provides a data connection in the opposite direction from the MEM
B data bus 280 to the B ALU data bus 272. An immediate data buffer 300 provides a
connection for 16 bits of data from the 2910 microcontrol 270 to the B ALU data bus
272 to enable the microcode control 270 to directly place data onto the B ALU data
bus 276. A clock generator 302 receives mode control signals MODCNTL 5-0 from the
microcode control circuit 270 and in response thereto generates the master system
control clock signals, frame buffer memory clock, FBMCLK, digital vector generator
clock, DVGCLK, and raster data processor clock RDPCLK. A buffer 304 provides bidirectional
communication directly between the MEM A data bus 278 and the MEM B data bus 280.
[0130] An A address control circuit 306 receives address data from MEM B data bus 280 and
in response thereto generates the address signals for addressing the A portion of
data memory 106. Similarly, the B address control circuit 308 receives address information
from MEM B data bus 280 and in response thereto provides address signals for accessing
the B portion of data memory 106. A message bus DMA circuit 310 is coupled through
control signals not explicitly shown to microcode controller 270 and to the address
output of A address control circuit 306 to provide for direct memory access data transfers
from the message bus to RDP 110 in a conventional . manner.
[0131] A shift circuit 312 has inputs connected to A ALU bus 274 and B ALU bus 276 and an
output connected to the 16 bit MEM B data bus 280. Shift circuit 312 in effect concatenates
the 16 bit A ALU bus signals 274 as the most significant word and the 16 bit B ALU
bus signals on bus 276 as the least significant word and shifts a selected group of
16 of these signals to the output in response to a 4 bit shift command SHFNUM 3-0
when enabled by an enable shift signal, ENSHIFT/. If SHFNUM 3-0 equal 0, the contents
of A ALU bus 274 are shifted through to the memory B data bus 280. Each increase in
the shift control number represented by signal SHFNUM 3-0 in effect shifts the concatenated
bus signals left by one position up to a maximum of 15 at which point signal ALU A
0 from the A ALU bus 274 is output in the most significant bit position and signals
ALU B 15-1 are output in the less significant bit positions. Shift circuit 312 thus
provides a mechanism for converting independent signals on the A and B ALU buses 274,
276 to a selected group of a concatenated combination thereof.
[0132] A normalizing circuit 314 facilitates hardware adjustment of the binary point as
a means of improving operating speed. It detects the number of leading zero's in a
signal on ALU A bus 274 and generates shift control signals SHFNUM 3-0 in response
thereto. These shift control signals are communicated to shift circuit 312 and may
also be coupled onto MEM A data bus 278.
[0133] A box test circuit 316 receives the most significant ALU output data bit, ALUDAT
15, which is the output sign bit as well as mode control signals MODCNTL 2-0 and enable
signals and operates to determine whether or not a set of values is within a certain
range. It is particularly useful in determining very rapidly whether or not a vector
is within a selected spatial volume.
[0134] Below are described several examples that clarify the execution of the invention.
[0135] Example 1: PRIOR ART -- Conventional integer pixel addressing. Consider the line
vector 200 shown in Fig. 11 in an X, Y, Z Cartesian coordinate grid representing the
face 24 of CRT 22. Line vector 200 has a start point (3.40, 2.75, 1) and an end point
of (8.85, 4.22, 1). An integer X value is deemed to define the left boundary of a
column of base or background pixel positions while an integer Y value is deemed to
define a lower boundary of a row of base or background pixel positions. In other words,
each pixel is identified by the location of the upper lefthand corner thereof in Fig.
11.
[0136] RDP 110 first rounds off the start and end points to (3,3,1) and (9,4,1), and then
initializes the DVGs as follows. By comparing the differences between rounded-off
X and Y coordinates, X is determined to be the major axis because delta X is greater
than delta Y. Then the distance 9 - 3 - 6 along the X axis is calculated and stored
in pixel counter 148 (see Fig. 7). X counter 140 (see Fig. 4) is initialized at 3,
X accumulator 136 is initialized at 0.000 and X fraction register is initialized at
0.999. Since DVGXMAJOR is active, the carry into adder/subtractor 138 is activated,
and the X DVG steps in increments of unity.
[0137] Delta X is calculated as X = 9.00 - 3 = 6 and Y is calculated as 4.00 - 3.00 = 1.00.
The initial fractional Y value (0.000) is then stored in the Y accumulator and the
slope delta Y/delta X = 0.167 is stored in the Y fraction register. The initial integer
number Y pixel value of 3 is stored in the Y counter.
[0138] Similarly, the initial integer Z value (1) is stored in the Z integer accumulator
136B, the initial fractional Z value (0) is stored in the Z fraction accumulator 136A
and the Z slope Z/ X = 0 is stored in the Z fraction register 134A and Z integer register
134B. This 0 slope value will preclude incrementing of the Z counter and cause a Z
value of 1 to be output at each pixel location along the line 170.
[0139] Table 4 below lists the values that are generated as DVGs X, Y, Z 118-120 are stepped
along line vector 200. The fractional values contained in the accumulators are not
used in establishing the pixel locations but are included for ease of reference. It
can be seen from Table 4, that the value of Y stays at 3, and then jumps to 4 at the
end point of the vector. As the counter 250 counts down to zero the operation is complete
and the system is ready to reinitialize for generation of the next line vector.

[0140] Example 2: Subpixel addressing in accordance with the invention. Consider a line
vector 202 which is similar to line vector 200 except that it is translated by 10
pixel locations along the X axis. Line vector 202 extends from (13.40, 2.75,1) to
(18.85, 4.22,1). At a quarter pixel resolution these points become (13,50, 2.75,1)
and (18.75, 4.25,1). The RDP 110 calculates these initial point pixel values along
with the visual characteristic values (shading in this example) and stores them in
the DVGs 118-123.
[0141] The actual display coordinates for the line end points are determined by rounding-off
the end points to the nearest integer pixel -location in the display. Then 0.625 =
1/2 + 1/8 is added to the rounded-off integer values. The 1/2 component of this value
assigns the background subpixel address value of 2 quarters to the end points while
the 1/8 component enables the fractional values to be rounded to the nearest quarter
pixel by simply truncating the less significant fractional address bits. Assignment
of line vector end points to integer pixel locations with 2,2 subpixel address values
assures proper matching of mating line segments with no visual discontinuities.
[0142] In the present example the rounded-off end points . are determined as:
X initial = INT(13.40+0.5)=13
Y initial = INT(2.75+0.5)=3
Z initial = 1.0
K initial = INT(27+0.5)=27
X final = INT(18.85+0.5)=19
Y final = INT(4.22+0.5)=4
Z final = 1.0
K final = INT(17+0.5)=17
[0143] Note that Z dimension values retain their exact integer and fractional values.
[0144] The difference values are then calculated from the end point display locations as:
Delta X = 19-13=6
Delta Y = 4-3=1
Delta Z = 1.0-1.0=0
[0145] Delta X is clearly the larger value so the X axis is selected as the major spatial
axis.
[0146] Let it be further assumed that Gouraud shading is to be used in this example with
the intensity at the initial point being 29 and the intensity at the final point being
17. For this shading mode DVG K 123, is used to generate the visual intensity values
and with signal PHONGSHD at logic zero AND gate 191 of normalizing circuit 154 (Fig.
8) is disabled so that zero is presented to the B input of adder 194 and the output
is simply PR7-0 equals ABSK 7-0. Pattern shape multiplexer 152 is disabled by signal
PATTEN = 0 so that address zero is presented to pattern RAM 156. Any desired hue may
be stored at this location. Color intensity multiplexer 158 is preferably, set t mode
5 so that the 12 bits of visual characteristic information stored in frame buffer
16 comprise PR7-0 col. 11-8. For Gouraud shading a linear interpolation is made between
the starting and ending intensity values of the vector being generated. It is determined
that Delta K = 17 - 29 = -12. Delta X remains 6.0 and the color intensity . slope
Delta K/Delta X = -2.00.
[0147] At initialization pixel counter 148 is set to the major axis (X) delta value of 6.
The initial display X location is written iunto DVG X 118 with 13 being written into
counter 140 and 0.625 being written into accumulator 136. Since X is the major axis,
a delta value of 0.999 is written into the fraction register 134. DVG Y 119 is initial--ized
with 3 being written into the counter and 0.625 being written into the accumulator
register, and Delta Y/Delta X = 1/6 = 0.1667 being written into the fraction register.
DVG Z is initialized at 1 with a fraction value of zero which maintains the indicated
value constant at one. The K accumulator is initialized with the rounded-off actual
K value = 29. The K fraction register is initialized with the color intensity slope
of -2.0.
[0148] The successive values generated by vector generator subsystem 126 are illustrated
in Table 5 with the initial -values shown in step 1.
[0149] At step 7 pixel counter 148 decrements to zero to signal the end of processing for
the current line vector. Looking at the vector 202 in Fig. 11, it can be seen that
the subpixel addressing representation of vector 202 is much less jagged than the
integer pixel addressing representation of corresponding line vector 200.
[0150] Throughout the vector processing operation address zero is applied to pattern RAM
156 so that the four most significant bits of color stored at word location zero drive
color bits Cll-C8 while the eight absolute value bits from DVG K 123, K7-KO drive
frame buffer memory bus DVGDAT 11-4. The resultant effect is a constant hue with a
varying intensity. The X and Y quarter pixel values are of course placed on frame
buffer memory bus 116 conductors DVGDAT 15-12 as the visual characteristic data for
each pixel point is stored.
[0151]

[0152] Example 3: A polygon 210 is to be displayed and filled with a pattern as shown in
Table 6 in accordance with the invention.

[0153] The pattern shown in Table 6 begins at display coordinates 0,0 and repeats vertically
and horizontally every 8 pixels with 0 representing a selected first color and 1 representing
a selected second color different from the first color. The signal PATTSHPSEL will
be set to 1 so that pattern shape multiplexer 152 supplies the 12 address inputs to
pattern RAM 156 as 15-0, J5-0. Only bits 12-0 and J2-0 are used to control pattern
RAM 156. Bits 15-13 and J5-J3 are set and masked in the I and J DVGs 122 and 123.
In addressing the pattern RAM, I and J determine the spatial frequency and phase of
the data generated by the pattern RAM, 156.
[0154] To allow different patterns to be retained in different locations within texture
RAM 156 the current pattern will be stored in texture RAM 156 starting at address
3640 (H E38). This address corresponds to setting the masked bits 15-13 and J5-J3
equal to logic ones. The top or Y = 0 row of the pattern is written into the eight
sequential word locations beginning at address 3640 (H E38). The background color
corresponding to "0" in the pattern is written into word locations 3640-42 (H E38-E3A)
and 3645-47 (H E3D-E3F) while the foreground color corresponding to "1" in the pattern
is written into address word locations 3643-4 (H E3B-E3C). The next 63 memory address
word locations are skipped and row Y = 1 is written starting at word address 3704
(H E78). Row Y = 2 is written starting at address 3768 (H EB8) and the process continues
until the top, Y = 7, row is written starting at word address 4088 (H FF8).
[0155] It will be assumed that color intensity multiplexer 158 is set to mode 1 so that
the 12 bit visual characteristic words stored in the frame buffer 16 are derived as
COL 11-6, PR 7-2.
[0156] Gouraud shading will be employed, and the initial values for the polygon 210 are
set forth in Table 7 as defined tor the four corner points 212, 213, 214 and 215.
The Table information is given as source data or calculated by RDP 110 with the vertex
display locations indicated in parentheses.

[0157] X, Y and Z are the spatial coordinates of the vertices of the quadrilateral. I and
J define the start and stop locations of data to be selected from the pattern RAM.
K is the magnitude of the surface normal intensity component pointing at the observer
in a direction parallel to the Z axis.
[0158] To fill the quadrilateral, the RDP proceeds as follows. First of all the highest
vertex is located. If there are two, the leftmost is selected. Next the RDP executes
a software DVG function that picks pair of points with the same ordinate until the
next highest vertex is reached. Then the software DVG proceeds to the next lower vertex
and finally . to the lowest vertex. For both points of each pair, the X, Y, J, Z,
I, J and K values are computed by interpolation.
[0159] Following the computation of each pair of points, the X DVG, 118 interpolates the
pixel data between the points to generate one horizontal fill line. I DVG 121 is stepped
synchronously with X DVG to generate the I bits that address the pattern RAM. Thus
the quadrilateral is filled with a series of horizontal lines.
[0160] Visual Attribute data is stored in frame buffer memory 16 as a function of the IJ
data supplied to the pattern RAM 156. In this example, I DVG, 121 is incremented in
tandem with the X DVG, 114, and J DVG, 121 is incremented in tandem with Y DVG 119.
Table 8 shows the data interpolated to generate the first line.

[0161] Data for the second line is generated in a similar fashion with the software interpolated
values of X, Y, Z, I, J and K being inserted as the end points of the DVGs. Note that
for the second line Z=l and J=l.
[0162] At the termination of the fill procedure it will be apparent that the edges of the
quadrilateral are jagged. This is due to the rounding off of the end point subpixel
addresses to the (2,2) bias value. To eliminate this effect the boundary of the quadrilateral
is redrawn using the X, Y, Z, I, J, K DVGs. Now the subpixel address bias is overwritten
with the correct offset.
[0163] Example 4: A line vector 220 is generated using a combination of subpixel addressing
and Phong shading. Let the initial point be represented by X, Y, Z = 25.6, 19.4, 4.2
with three normal light vector components determined to be I, J, K = 66, 125, 82.
Let the final point be represented by X, Y, Z = 28.4, 6.5, 1 with the three normal
light vector components determined to be I, J, K = 116, 88, 45.
[0164] Color/intensity multiplexer 158 is set to mode 1 to output 6 bits of color (hue)
from texture RAM 156 (COL 11-6) and 6 bits of intensity from normalizing circuit 154
(PR 7-2). Pattern shape multiplexer 152 is disabled by signal PATTERN = 0 so that
address zero is continuously presented to pattern RAM 156. Color bits COL 11-6 are
loaded into the pattern RAM 156 from the RBIN bus. COL 11-6 bits are continuously
outputted to color/intensity multiplexer 158.
[0165] The individual digital vector generators 119-123 are initialized as shown for step
1 in Table 9. The initial X pixel display location 26.625 is written into X counter
140 and into the X accumulator 136. The X increment value Delta X/(Delta Y)(Y INC.)
- 2.0/(-12.0)(-1) - 0.1667 is placed in the fraction register. The (-1) coefficient
in this calculation accounts for the Y counter decrementing.
[0166] DVG Y 119 is initialized by placing the initial integer Y value, 19, in the counter
and the fractional value of 0.625 in the accumulator. The -0.999 stepping distance
is placed in the fraction register.
[0167] DVG Z 120 is initialized by placing the initial integer Z value, 4 in the integer
accumulator register and the fractional value 0.7 (0.2 plus a roundoff value of 0.500)
in the fraction accumulator register. The slope (Delta Z/Delta Y) (Y INC) - (-3.2/-12.0)(-1)
- -.2667 is placed in the Z fraction register. The Z output MUX is set to bypass the
Z absolute value generator although no negative Z values will be encountered in this
particular example.
[0168] DVG I 121 is initialized by placing the initial I vector value, 66 plus 0.500 roundoff,
in the accumulator 174 and the slope Delta I/Delta Y - 50/(-12.0)(-1) - 4.167 in the
integer and fraction registers 134D, 134C.
[0169] The DVG J 121 is initialized by loading the initial value plus a 0.500 roundoff -
125.500 into the accumulator and the slope (Delta J/Delta Y)(INC. Y) - (-37/12.0)(-1)
--3.083 into integer and fraction register.
[0170] DVG K 122 is initialized by loading the initial value plus a roundoff value of 0.5
= 82.500 into the accumulator register and the slope (Delta K/Delta Y) (INC Y)1 -
(-37/12.0) (-1) - -3.083 into the integer and fraction registers of DVG K 122.
[0171] The pixel counter 148 is set to an initial value of INT(AABST (Delta Y)) - 12 to
count major axis pixel steps.
[0172] The steps encountered by the pixel data generator 112 while generating the line vector
220 pixel information are set forth in Table 9 beginning with initialization at step
1.

[0173] The 6 bit dynamic intensity value normal is generated by normalizing circuit 154
(Figs. 3 and 8) which treats the most significant 6 bit I, J and K output values as
fractional values and thus in effect divides them by 64 at the input to the circuit
and then multiples the result PR7-0 by 64 at the output. The normal values N/ presented
to color/intensity mixer 158 on signals PR7-0 can readily be calculated using the
normalization formula described previously at each DVG step.
[0174] An even more sophisticated graphic representation can be generated by using two or
more passes of the vector generator 112 for each vector. During the first pass Gouraud
type shading is employed to generate a desired color or hue pattern using texture
RAM 156. During the second pass the vector generator 112 is operated in a PHONG shading
mode and the more sophisticated PHONG generated intensity vector N is substituted
in frame buffer memory 16 for the previously generated Gouraud shading value.
[0175] Comments on examples: The above examples of operation of the raster scan graphic
image generating system 10 are merely illustrative of the many operating modes which
are available. The various mode control options may be combined in any reasonable
combination to produce a desired effect. It will be appreciated that in the representative
examples certain options were selected such as moving DVG output values in a negative
direction by adding negative delta values instead of subtracting positive delta values,
and by obtaining the pixel counter starting value as the integer of the major axis
delta value instead of rounding u
p or down, always rounding up or using some other acceptable algorithm. The flexibility
of the present system makes a wide range of choices available to the system user.
[0176] It is thus apparent that while there has been shown and described a particular example
of the raster scan graphic image generating system 10 in accordance with the invention
for the purpose of enabling a person skilled in the art to . make and use the invention,
the invention should not be limited thereto. Accordingly, any modifications, variations
or equivalent arrangements within the scope of the attached claims should be considered
to be within the scope of the invention.
1. A graphic image generating system for generating an array of pixels defining an
image, the system comprising: a frame buffer (16) having an array of elements with
each element corresponding to a pixel of the image and storing information indicating
at least one visual characteristic of the pixel and a multi-dimensional spatial displacement
from a normal position of the pixel within the array of pixels; and a visible image
generation device (22) coupled to receive from the frame buffer (16) said visual characteristic
indicating information and generating in response thereto the array of pixels defining
the image with each pixel having a normal position within a uniformly spaced array
of pixels and being displaced from that normal position in accordance with the spatial
displacement information corresponding to the pixel.
2. A graphic image generating system according to claim 1, characterised by a digital
vector generator (14) receiving image defining information and coupled to provide
the visual characteristic information to the frame buffer (16) in response thereto
with at least the visual characteristic information corresponding to a pixel lying
on any boundary within an image which boundary is nonparallel to an axis of the array
of pixels including information defining a spatial displacement of the pixel from
the normal position thereof which tends to reduce aliasing of the generated image
at the edge.
3. A graphic image generating system according to claim 1, characterised by a vector
generator (14) coupled to receive vector defining information and in response thereto
to generate and communicate to the frame buffer (16) visual characteristic indicating
information in the form of pixel data defining video image display pixels representing
at least one vector defined by the vector defining information with each display pixel
being defined by at least one bit of visual information and for each displaceable
dimension at least one bit of spatial displacement information.
4. A graphic image generating system according to claim 3, characterised in that each
video image pixel is defined by video data including at least two bits of subpixel
displacement information for each displaceable dimension.
5. A graphic image generating system according to claim 3, characterised in that each
video image pixel is defined by video data including exactly two bits of subpixel
displacement information for each of at least two different displaceable dimensions.
6. A graphic image generating system according to claim 5, characterised in that the
visible image generation device (22) responds to the subpixel displacement information
for a given pixel as the given pixel is being displayed to displace the pixel from
the normal display position thereof by a distance n each displaceable dimension indicated
by the subpixel displacement information.
7. A graphic image generating system according to claim 1, characterised in that background
portions of an image are assigned a predetermined background displacement characteristic
and wherein the image generation device (22) is operable to resolve a positional conflict
between two adjacent pixels wherein one pixel has a background displacement characteristic
and the other one has a non- background displacement characteristic by positioning
the pixel having the nonbackground displacement characteristic in accordance with
the displacement information therefor.
8. A graphic image generating system according to claim 1, characterised in that background
positions of an image are assigned a predetermined background displacement characteristic
and wherein the image generation device (22) is operable to resolve a positional conflict
between a current non-background pixel and an adjacent previously displayed pixel
having a non-background displacement by displaying the current pixel with a displacement
approximating the average of the displacements of the current and adjacent previously
displayed pixels.
9. A graphic image generating system according to claim 1, characterised in that the
at least one visual characteristic includes a maltibit displacement value for each
of a plurality of dimensions.
10. A graphic image generating system according to claim 1, characterised in that
the at least one visual characteristic includes a multibit displacement value for
a vertical dimension and for a horizontal dimension and wherein the system further
comprises a vector generator (14) coupled to receive vector defining information and
to generate in response thereto visual characteristic indicating information defining
a video display vector having edges defined by pixels having a displacement value
equal to a predetermined background value in a dimension most nearly parallel to the
display vector and a displacement value best representing the desired pixel location
in a dimension which is most nearly perpendicular to the display vector.
11. A graphic image generating system according to claim 1, characterised by a vector
generator (14) coupled to generate the visual characteristic indicating information
for communication to and storage by the frame buffer (16), the visual characteristic
information for pixels along a line edge having a multibit displacement equal to a
predetermined background value in a first dimension most closely parallel to the line
edge and a value most closely representing the position of a given pixel in a second
dimension when the pixel is located at a background position indicating by the background
value in the first dimension.
12. A graphic image generating system according to claim 11, characterised in that
the vector generator (14) generates the visual characteristic information for a pixel
occurring at an intersection between an edge and background of an image with a displacement
value which best defines the edge and with a given intensity value corresponding to
the edge, and wherein the vector generator (14) generates the visual characteristic
information for a pixel occurring at an intersection between two edges of an image
with a displacement best representing an average of the positions of the two edges
and with a dynamic value representing an edge of an object which most closely conforms
to the position of the pixel.
13. A graphic image generating system according to claim 1, characterised in that
the visible image generation device (22) has a given spatial resolution and wherein
each pixel defining an edge boundary is defined by visual characteristic indicating
information indicating a dynamic intensity of the edge and a subpixel displacement
value enabling the pixel to be displayed at a selected variable position most accurately
defining the edge to enable the edge to be displayed with a full dynamic contrast
and an apparent spatial resolution greater than the given spatial resolution of the
visible image generation device.
14. A digital vector generator system comprising: a plurality of spatial vector generators
(114, 119, 120) coupled to generate a sequence of pixel coordinate points defining
a line within a display image; and at least one visual characteristic vector generator
(121) coupled to operate synchronously with the spatial vector generators (114, 119,
120) to generate visual characteristic vector information corresponding to each pixel
coordinate point generated by the spatial vector generators (114, 119, 120).
15. A digital vector generator system according to claim 14, characterised by a vector
processing circuit (150) coupled to receive the visual characteristic vector information
for each pixel coordinate point and generate in response thereto a visual characteristic
data representation having a selectable format.
16. A digital vector generator system according to claim 14, characterised by at least
two visual characteristic vector generators (121, 122) and further comprising a normalizing
circuit (154) coupled to receive the generated visual characteristic vector information
and generate normalized intensity information representative of the magnitude of the
received vector information in response thereto.
17. A digital vector generator system according to claim 16, characterised in that
normalized intensity information represents the square root of the sum of the squares
of the received visual characteristic vector information.
18. A digital vector generator system according to claim 14, characterised by at least
two visual characteristic vector generators (121, 122) and a writeable pattern store
(156) coupled to receive the visual characteristic vector information from at least
two of the visual characteristic vector generators (121, 122) as address inputs and
generate as an output hue data defining a desired pattern of visual color data in
accordance with data stored in the pattern store (156).
19. A digital vector generator system according to claim 18, characterised by a normalizing
circuit (154) coupled to receive visual characteristic vector information from each
of the visual characteristic vector generators (121, 122, 123) and generate in response
thereto intensity data representative of the resultant magnitude of the received visual
characteristic vector information.
20. A digital vector generator system according to claim 19, characterised by a color
intensity multiplexer (158) coupled to receive the intensity data from the normalizing
circuit (154) and the hue information from the pattern store (156) and generate pixel
data commanding the visual characteristics of each pixel as a combination of the hue
and intensity data with each having a selectable resolution determined by a mode control
signal.
21. A digital vector generator system according to claim 14, characterised in that
at least one visual characteristic vector generator (121) includes an absolute value
circuit (147) coupled to receive each generated vector value and generate as the vector
generator output signal the absolute value of the generated vector value.
22. A digital vector generator according to claim 14, characterised in that at least
one visual characteristic vector generator (121) includes a masking circuit (136)
coupled to latch a selected number of most significant digits of a vector output signal
generated thereby at a predetermined selected value.
23. A digital vector generator system according to claim 18, at least two of the digital
vector generators each include a masking circuit coupled to latch a selected number
of most significant digits of a vector output signal generated thereby at a predetermined
selected value.