FR2595486A1 - Processeur geometrique pour un systeme d'infographie - Google Patents

Processeur geometrique pour un systeme d'infographie Download PDF

Info

Publication number
FR2595486A1
FR2595486A1 FR8702636A FR8702636A FR2595486A1 FR 2595486 A1 FR2595486 A1 FR 2595486A1 FR 8702636 A FR8702636 A FR 8702636A FR 8702636 A FR8702636 A FR 8702636A FR 2595486 A1 FR2595486 A1 FR 2595486A1
Authority
FR
France
Prior art keywords
data
processor
segment
memory
bus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
FR8702636A
Other languages
English (en)
Inventor
Walter Robert Steiner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
General Electric Co
Original Assignee
General Electric Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by General Electric Co filed Critical General Electric Co
Publication of FR2595486A1 publication Critical patent/FR2595486A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)

Abstract

L'INVENTION CONCERNE L'INFOGRAPHIE. UN PROCESSEUR GEOMETRIQUE 136 EST CONNECTE A UNE MEMOIRE DE BASE DE DONNEES GRAPHIQUES A STRUCTURE HIERARCHISEE 116, A UN PROCESSEUR SPECIALISE 132 DESTINE A PARCOURIR LA BASE DE DONNEES ET A UN PROCESSEUR DE VISUALISATION 140. LE PROCESSEUR GEOMETRIQUE COMPORTE DES REGISTRES D'ENTREE, DES BUS DE DONNEES SPECIALISES POUR LA LIAISON AVEC LE PROCESSEUR DE PARCOURS DE BASE DE DONNEES ET AVEC LA MEMOIRE DE BASE DE DONNEES, UN MODULE ARITHMETIQUE RAPIDE, UN REGISTRE DE SORTIE ET UN SYSTEME DE COMMANDE MICROPROGRAMMABLE. APPLICATION A LA CONCEPTION ASSISTEE PAR ORDINATEUR.

Description

La présente invention concerne des systèmes électro-
niques de traitement de données, et elle porte plus particu-
lièrement sur un système électronique destiné à manipuler des
données représentant des objets géométriques et une informa-
tion connexe, dans un système d'infographie. La synthèse de scènes visuelles par l'utilisation d'ordinateurs (infographie) est un domaine de l'informatique en plein développement. Il existe d'innombrables applications de l'infographie, parmi lesquelles la conception assistée par ordinateur (CAO), la synthèse de diagrammes d'illustration, la création de titres et d'autres visualisations graphiques
pour l'utilisation en télévision, et la simulation d'événe-
ments physiques.
Pour faciliter'la génération par ordinateur d'une scène comprenant un ou plusieurs objets, la première étape
consiste normalement à créer une description tridimensionnelle
des objets à visualiser, et à enregistrer cette description
sous forme mathématique dans une base de données graphiques.
On traite et on manipule les données de façon à pouvoir re-
présenter la scène sur un écran de visualisation.
On peut considérer que le traitement de l'informa-
tion provenant d'une base de données graphiques fait interve-
nir quatre fonctions fondamentales: 1. L'extraction dans la base de données graphiques de données correspondant à une certaine partie d'un objet graphique; 2. La détermination des zones de l'objet graphique qui doivent être visibles sur l'écran de visualisation;
3. La transformation de la description tridimension-
nelle de l'objet graphique en une description bidimensionnelle
dans des coordonnées d'écran de visualisation; et
4. La sélection des pixels de l'écran de visualisa-
tion qui doivent être activés pour visualiser l'objet, la dé- finition de leur couleur et de leur intensité, et l'activation
de ces pixels pour former l'image graphique désirée.
L'invention concerne les seconde et troisième étapes
de traitement.
Un format pour l'enregistrement d'une base de don-
nées graphiques correspond à ce qu'on appelle une "liste de
visualisation hiérarchisée", dans laquelle des données graphi-
ques décrivant divers objets (ou morceaux d'objets) sont enre-
gistrées par "segments". On peut considérer que chaque segment représente un objet graphique. A chaque segment peuvent être
associés un ou plusieurs segments qui présentent avec le seg-
ment précité une relation "parent-enfant". Le segment enfant
d'un segment parent peut à son tour être associé à un ou plu-
sieurs segments enfants. Cette relation parent-enfant entre des segments conduit à une structure hiérarchisée en "arbre" inversé. Chaque segment d'une base de données graphiques hiérarchisée contient de façon caractéristique une information de structure qui comprend des "pointeurs" qui désignent des segments parents, enfants et "frères". Des segments frères sont des segments qui ont le même segment parent. Un pointeur désignant un segment identifie la position de départ de ce segment dans une mémoire ou un dispositif d'enregistrement d'un système informatique. En plus des données de structure
hiérarchisée, chaque segment peut également contenir une pri-
mitive graphique et des attributs de la primitive. Une primi-
tive graphique est de façon caractéristique un objet plan sim-
ple, tel qu'un polygone ou un vecteur, défini par une liste de
coordonnées dans un système de coordonnées tridimensionnel com-
mode pour la primitive graphique particulière considérée. Des
données d'attributs pour une primitive graphique peuvent défi-
nir la couleur ou d'autres caractéristiques de la primitive,
et elles peuvent également comprendre une matrice de transfor-
mation qui spécifie la position spatiale et l'orientation de la primitive graphique du segment considéré, par rapport au
système de coordonnées de son segment parent. Une caractéris-
tique d'un type de base de données graphiques hiérarchisée con-
siste en ce que dans le cas o l'information d'attribut n'est
pas différente de celle du segment parent, il n'est pas néces-
saire qu'elle soit définie dans le segment enfant, et peut à
la place être "héritée" du segment parent.
Les systèmes informatiques comprennent souvent des processeurs périphériques destinés à augmenter la vitesse de calcul du système d'ensemble. Les processeurs périphériques
sont de façon caractéristique des systèmes de calcul spéciali-
sés qui sont conçus pour accomplir efficacement.une ou plu-
sieurs fonctions. Un processeur périphérique de ce type con-
siste en un processeur graphique qui est conçu de façon à
accepter des données provenant d'une base de données graphi-
ques, à sélectionner des parties de ces données devant faire
l'objet d'un traitement supplémentaire, à accomplir le traite-
ment supplémentaire, et à transférer les données traitées vers un autre processeur spécialisé, pour la présentation sur un
écran de visualisation.
On utilise de tels processeurs graphiques dans di-
verses applications. Par exemple, les systèmes de CAO inter-
actifs utilisent souvent des processeurs graphiques en asso-
ciation avec un ordinateur hôte pour enregistrer et visualiser un modèle du ou des objets à concevoir. Un concepteur commande le fonctionnement du système au moyen de divers dispositifs
d'entrée, pour créerY'le modèle, souvent élément par élément.
Les divers éléments du modèle forment une base de données gra-
phiques qui est enregistrée dans le processeur graphique et qui est visualisée à la demande. Lorsque le concepteur apporte
des changements au modèle, le système modifie la base de don-
nées et met à jour l'information présentée sur l'écran de vi-
sualisation pour montrer le modèle modifié.
Sous la dépendance d'ordres provenant d'un ordina-
teur hôte, un processeur graphique conçu de façon appropriée peut créer, copier ou supprimer des segments d'une base de
données hiérarchisée, qui est de façon caractéristique enre-
gistrée dans une mémoire séparée du processeur graphique. Le
processeur graphique peut en outre supprimer, ajouter ou mo-
difier diverses données graphiques (telles que les attributs, des primitives graphiques et une matrice de transformation dans chaque segment de la base de données graphiques), sous la dépendance d'ordres du niveau hôte. Une fois que la base
de données hiérarchisée a été entièrement établie, le proces-
seur graphique lit et traite cette base de données graphiques en produisant sur un écran de visualisation des images des objets représentés par la base de données graphiques, tels qu'ils sont vus à travers une "fenêtre d'observation" définie par l'utilisateur. Pour lire la base de données graphiques,
le processeur graphique "parcourt" la base de données en li-
sant des données dans un premier segment de la base de données et en passant ensuite à un segment connexe (parent, enfant ou
frère), identifié par les pointeurs du premier segment, con-
formément à un algorithme de parcours. De cette manière, le processeur graphique parcourt "l'arbre" de segments, jusqu'à
ce que les données contenues dans la base de données graphi-
ques aient été traitées.
Du fait que le traitement graphique est une tâche de traitement qui représente une charge de calcul extrêmement importante, un processeur graphique périphérique peut employer
un certain nombre de sous-processeurs spécialisés pour accom-
plir des parties séparées de la tâche globale, dans le but de
traiter la base de données graphiques en un temps raisonnable.
Un processeur géométrique constitue un exemple d'un tel sous-
processeur.
Un processeur-géométrique perfectionné peut accom-
plir un certain nombre de fonctions de traitement sur la base de données graphiques des segments. Une fonction importante consiste à tester les primitives graphiques de chaque segment pour déterminer si les primitives sont contenues dans le champ visuel qui est défini par la fenêtre d'observation. Dans la négative, le segment, et tous ses segments enfants,
peuvent être ignorés en ce qui concerne la suite du traite-
ment, ce qui augmente la vitesse de traitement globale.
Des fonctions supplémentaires d'un processeur géomé-
trique peuvent comprendre la concaténation de matrices de transformation, pour produire pour chaque segment une matrice
de transformation capable de transformer le système de coor-
données de primitive graphique du segment de façon à donner le système de coordonnées du segment de fenêtre d'observation se trouvant au "sommet" de la structure en arbre inversé. De plus, le processeur géométrique peut "couper" des primitives graphiques partiellement visibles, de façon que les parties de primitives qui s'étendent à l'extérieur du champ de vision
ne soient pas traitées.
Des primitives graphiques qui sont définies en trois dimensions doivent être projetées dans le plan image
bidimensionnel du dispositif de visualisation. Les deux prin-
cipales techniques de projection sont la projection parallèle
et la projection en perspective. On peut effectuer une pro-
jection parallèle en ignorant simplement la troisième coor-
donnée (profondeur) du système de coordonnées tridimension-
nelles. On peut effectuer une projection en perspective en
divisant les composantes des deux premières coordonnées (hau-
teur et largeur) par la troisième composante (profondeur),
pour donner l'effet d'une diminution de taille pour les pri-
mitives qui sont "plus loin" de l'observateur.
Une fois qu'une primitive graphique a été coupée,
projetée et/ou transformée de toute autre manière, un proces-
seur géométrique peut convertir les coordonnées de la primi-
tive, pour donner les "coordonnées de matériel" qui sont uti-
lisées pour présenter les primitives sur un écran de visuali-
sation. A partir des coordonnées de matériel, les primitives sont converties en un format de balayage par trame, par un processeur de visualisation qui convertit les coordonnées de matériel des primitives en un ensemble de pixels. Une fois qu'une primitive a été convertie en un format de balayage par
trame, on supprime des surfaces cachées qui résultent de pri-
mitives en chevauchement.
Ce qui précède permet de voir qu'un volume de cal-
cul considérable est souvent nécessaire pour traiter et vi-
sualiser la primitive graphique d'un segment. Des modèles complexes peuvent faire intervenir une base de données de plusieurs milliers de segments. Il en résulte qu'un processeur graphique peut nécessiter un temps considérable pour convertir les données contenues dans la base de données graphiques, en une image sur un écran. Il est donc souhaitable de concevoir une architecture de processeur graphique ayant une vitesse de traitement graphique très élevée. Il est en outre souhaitable
de concevoir une architecture de processeur graphique qui uti-
lise une multitude de sous-processeurs pour diviser la tâche complexe consistant à traiter une base de données graphiques pour la transformer en une image, afin d'obtenir une meilleure efficacité et une plus grande vitesse de traitement. Il est
donc souhaitable de concevoir un processeur géométrique gra-
phique rapide capable de se charger d'une partie de la tâche
consistant à traiter une base de données graphiques.
L'invention atteint ces buts, ainsi que d'autres, au moyen d'un processeur géométrique ayant une architecture de traitement interne et une architecture de système originale, permettant de traiter une base de données graphiques de façon rapide et efficace, avec une conception simple mais néanmoins puissante. Un but de l'invention est de procurer un processeur géométrique original qui améliore notablement la vitesse de traitement de données graphiques dans un système de traitement graphique. On parvient aux buts et avantages précités grâce à un processeur géométrique ayant une architecture interne et de système exclusive qui facilite le traitement d'une base de données graphiques. Il y a trois caractéristiques hautement souhaitables dans un processeur géométrique. La première ca- ractéristique est une vitesse de transfert de données élevée en entrée et en sortie du processeur géométrique. La seconde caractéristique consiste dans la possibilité d'effectuer un grand nombre d'opérations mathématiques différentes, comme la
multiplication, la division, les produits scalaires de matri-
ces, les produits vectoriels de matrices, l'extraction de ra-
cines carrées, etc. On appellera algorithme une suite de ces calculs mathématiques. La troisième caractéristique consiste en une excellente aptitude à la programmation, pour permettre
l'incorporation de nouveaux algorithmes et traitements.
La plage d'applications potentielles d'un processeur
géométrique est d'autant plus étendue que la précision utili-
see dans une opération mathématique est élevée. Certaines ap-
plications exigent des nombres en virgule flottante à 32 bits, tandis que d'autres peuvent nécessiter seulement une précision correspondant à des nombres en virgule fixée à 16 bits. On doit parvenir à un compromis entre une précision plus élevée (qui conduit à un système plus coûteux), une plus
grande souplesse pour accomplir divers algorithmes, et la vi-
tesse de traitement du système. Il est très souhaitable d'exe-
cuter divers algorithmes et de transférer des données aussi rapidement que possible, de façon à procurer à l'utilisateur un système graphique fortement interactif. Cependant, de façon générale, le système sera d'autant plus coûteux que la vitesse
est élevée.
Un système--comprenant des processeurs répartis pour accomplir les opérations nécessaires pour visualiser une base
de données graphiques présente donc de nombreux avantages.
Dans le mode de réalisation qui est représenté, le processeur géométrique de l'invention est connecté à (a) un
processeur de terminal destiné à créer et à entretenir une ba-
se de données graphiques sous la dépendance d'ordres provenant de l'ordinateur hôte, (b) un processeur de parcours d'arbre,
qui parcourt indépendamment la base de données, en lisant ra-
pidement les segments de données graphiques à une cadence op- timisée pour le traitement géométrique, et (c) un processeur de visualisation destiné à convertir en une image visuelle des
segments de base de données traités.
Le processeur de parcours d'arbre adresse rapidement
la mémoire du processeur graphique dans laquelle est enregis-
trée la base de données graphiques, et il fournit un train de segments de données graphiques au processeur géométrique, par
un bus rapide de mémoire de liste de visualisation. Le proces-
seur géométrique élimine les segments qui ne seront pas visi-
bles sur l'écran de visualisation, et il transfère les données d'attributs des segments "visibles" sur un second bus de pile direct, reliant le processeur géométrique à une mémoire à structure de pile qui réside dans le processeur de parcours d'arbre.. On a trouvé qu'une telle configuration augmentait nettement la cadence à laquelle il est possible de lire et de traiter des données graphiques provenant de la base de données graphiques.
Une fois que le dernier segment d'un chemin de par-
cours a été atteint, le processeur de parcours d'arbre inverse
sa direction, et il repasse par les segments visibles du che-
min en extrayant de sa mémoire à structure de pile les segments ayant subi le traitement d'6imination.Pendant le parcours inverse, les données d'attributs des segments visibles sont retransférées de la mémoire à structure de pile du processeur de parcours d'arbre vers le processeur géométrique, par le bus de pile. De plus, le processeur de parcours d'arbre adresse les primitives graphiques associées des segments visibles enregistrés dans la base de données graphiques, et il transfère les primitives
graphiques vers le processeur géométrique, par le bus de mémoi-
re de liste de visualisation, pour un traitement ultérieur. On
a trouvé qu'une telle configuration augmentait considérable-
ment le taux d'utilisation du processeur géométrique et la cadence de traitement de données du système de processeur graphique, considéré dans son ensemble. Il en résulte qu'on peut mettre à jour très rapidement des images présentées sur
un écran de visualisation, sous l'effet de modifications ap-
portées à la base de données graphiques.
Le processeur géométrique de l'invention qui est décrit ici fait partie d'un système de traitement graphique décrit de façon plus détaillée dans la demande de brevet française déposee le même jour par la demanderesse sous le
titre "Processeur graphique perfectionné".
Le mode de réalisation préféré du processeur géomé-
trique est capable d'accepter des cadences de transfert de
données dépassant 100 mega-multiplets par seconde, et des vi-
tesse de calcul de 100 millions d'instructions par seconde, ou 30 millions d'instructions à virgule flottante à 32 bits par seconde, avec commande microprogrammée du matériel du processeur géométrique, pour procurer une grande souplesse
dans la réalisation de divers algorithmes de traitement géo-
métrique. Le processeur géométrique de l'invention comporte une structure spéciale d'accumulateur à virgule flottante à 32 bits, prévue pour calculer très efficacement une somme de produits. Cette structure est décrite de façon plus complète dans la demande de brevet française 87 00481, déposée par la demanderesse. Le processeur géométrique comprend également un circuit original de transformation mathématique à virgule flottante à 32 bits, qui accomplit des opérations de division
et d'extraction de racine carrée, ainsi que des calculs d'ap-
proximation de courbe, avec une cadence de données élevée. Ce circuit de transformation est décrit de façon plus complète dans la demande de brevet française n 87 00480, déposée par
la demanderesse.
La présente demande fait également intervenir un circuit d'unité arithmétique et logique multifonction ayant un matériel de décision spécial qu'on utilise pour accélérer
les algorithmes d'élimination et de coupure ainsi que d'au-
tres algorithmes programmés dans le processeur géométrique.
Ce circuit est décrit de façon plus complète dans la demande
de brevet française n 87 00635, déposée par la demanderesse.
Dans son mode de réalisation préféré, le processeur géométrique consiste en un processeur arithmétique à virgule
fixée ou à virgule flottante, programmable, à structure pipe-
line et réalisé sur une seule carte, qui est spécialement adapté pour l'exécution d'algorithmes géométriques qui sont
utilisés pour des applications graphiques.
La suite de la description se réfère aux dessins
annexés qui représentent respectivement: Figure 1: un schéma d'un système de processeur
graphique comprenant le processeur géométrique de l'invention.
Figure 2: un exemple schématique de la base de données hiérarchisée à structure en arbre inversé qui est
utilisée en association avec l'invention.
Figure 3: un exemple schématique de deux objets
graphiques avec différents systèmes de coordonnées.
Figure 4: une représentation schématique de l'en-
semble des circuits du processeur géométrique.
Figure 5: une représentation schématique du circuit
de commande interne du processeur géométrique.
Figure 6: une représentation schématique du circuit
arithmétique pipeline interne du processeur géométrique.
Figure 7: un schéma synoptique des chemins de don-
nées possibles dans le circuit arithmétique pipeline du pro-
cesseur géométrique.
Figures 8a et 8b: des schémas des circuits logiques
de retard du processeur géométrique.
Les éléments similaires sont désignés par des réfé-
rences similaires dans les divers dessins.
Exposé général de l'environnement fonctionnel
La figure 1 montre un schéma d'un système de proces-
seur graphique 100 dans lequel est incorporé le processeur géométrique de l'invention. Le système de processeur graphique comprend un processeur de terminal 112 qui exécute des ordres de niveau hôte reçus à partir d'un ordinateur hôte (non représenté), par l'intermédiaire d'une interface d'ordinateur hôte 114. La majorité des ordres de niveau hôte portent sur la construction et la gestion d'une base de données graphiques, sous la forme d'une liste de visualisation hiérarchisée qui est enregistrée dans une mémoire de liste de visualisation ("MLV") 116. Le processeur de terminal 112 communique avec la MLV 116 par un bus de système universel 118 qui, dans le mode de réalisation représenté, est un bus à 32 bits standard du type "VMEbus". On peut trouver les spécifications du standard VMEbus dans le document VMEbus Specification Manual, Rev. B,
août 1982, VMEbus Manufacturers Group.
Des ordres de niveau hôte sont émis par un programme d'application d'ordinateur hôte qui réside dans l'ordinateur hôte. L'utilisateur du programme d'application d'ordinateur hôte peut également introduire directement des données dans le
système de processeur graphique 100 en utilisant divers dispo-
sitifs d'entrée graphiques, tels qu'une tablette graphique
, un clavier alphanumérique 122 ou divers autres disposi-
tifs d'entrée tels que des manches à balai, des souris, et des dispositifs à boutons ou à billes (non représentés). On
peut utiliser l'information d'entrée provenant de ces disposi-
tifs pour émettre des ordres graphiques dans le but de modi-
fier la base de données graphiques, de changer des paramètres
d'observation et d'effectuer des transformations de déplace-
ment panoramique ou de zoom sur l'image graphique que fournit
un dispositif de visualisation 126. De cette manière, des ap-
plications telles que des systèmes de CAO disposent d'une com-
mande locale interactive du dispositif de visualisation 126.
Un sous-système de traitement géométrique 130 est connecté au processeur de terminal 112 par l'intermédiaire du bus de système 118. Le soussystème de traitement géométrique comprend un processeur de parcours d'arbre 132 destiné à lire rapidement la liste de visualisation hiérarchisée qui est enregistrée dans la MLV 116. Le processeur géométrique 136 de l'invention est connecté au processeur de parcours
d'arbre 132 par un bus de pile bidirectionnel 138.
Le processeur géométrique 136 accomplit tous les
calculs graphiques pour le sous-système de traitement géomé-
trique 130. Le processeur de parcours d'arbre 132 parcourt la
base de données enregistrée dans la MLV 116, segment par seg-
ment, en adressant séquentiellement les données de chaque segment au moyen d'un bus de MLV 134. Ce parcours convertit la structure d'arbre de la MLV 116 en un train de données qui
est transmis par le bus de MLV 134 vers le processeur de par-
cours d'arbre 132 et vers le processeur géométrique 136. Le
processeur géométrique 136 accomplit les fonctions de traite-
ment qui comprennent l'élimination, la coupure, la projection
et la concaténation de matrices de transformation. Les fonc-
tions d'ensemble du sous-système de traitement géométrique
130 sont expliquées plus complètement dans la demande préci-
tée, intitulée "Processeur graphique perfectionné".
Comme on l'expliquera ci-après de façon.plus dé-
taillée, le processeur géométrique 136 ne traite pas complè-
tement chaque primitive graphique avant de passer à la primi-
tive suivante. A la place, le processeur géométrique 136 transfère directement des données d'attributs graphiques
(comme des attributs de couleur) et des données de transforma-
tion vers le processeur de parcours d'arbre 132, par le bus
de pile 138 si, pendant le processus d'élimination, le proces-
seur géométrique 136 détermine que la primitive graphique as-
sociée est potentiellement visible. Le processeur de parcours d'arbre 132 enregistre dans une mémoire à structure de pile
interne, selon un mode "premier entré/dernier sorti", les don-
nées d'attribut et de transformation qui proviennent du pro-
* cesseur géométrique. Par une communication permanente avec le processeur de parcours d'arbre 132, le processeur géométrique 136 fait en sorte que seules les données d'attributs et de
transformation concernant des segments visibles soient enre-
gistrées dans la mémoire à pile du processeur de parcours d'arbre. Une fois que le processeur de parcours d'arbre 132
a atteint le dernier segment d'un parcours, il inverse sa di-
rection, en parcourant à nouveau les segments potentiellement "visibles" (c'est-à-dire les segments ayant des primitives graphiques potentiellement visibles), qui sont indiqués par
les données enregistrées dans la mémoire à pile de proces-
seur de parcours d'arbre. Pendant que le processeur de par-
cours d'arbre 132 suit le chemin de parcours en sens inverse,
de segment en segment, il retransfère vers le processeur géo-
métrique 136, par le bus de pile 138, les données graphiques
relatives à chaque segment qui sont enregistrées dans sa mé-
moire à structure de pile. Simultanément, le processeur de
parcours d'arbre 132 adresse des données graphiques supplé-
mentaires enregistrées dans la MLV 116, qui constituent la
primitive graphique associée au segment courant qui est re-
transféré vers le processeur géométrique 136. La primitive graphique est transférée vers le processeur géométrique 136 par le bus de MLV 134. Le processeur géométrique 136 utilise les données provenant de la mémoire à structure de pile de processeur de parcours d'arbre et provenant de la MLV 116, pour effectuer ce qu'on appelle un traitement de "face", qui transforme les données graphiques pour la visualisation. Dans
le mode de réalisation qui est considéré, le processeur géo-
métrique 136 coupe et projette la primitive graphique d'un
segment visible, et il effectue une partie des calculsdegeda-
tion appropriés. Lorsque le processeur géométrique 136 a ter-
miné, il transmet la primitive graphique accompagnée des at-
tributs hérités, sous le format d'un "paquet de bord", vers un processeur de visualisation 140, par le bus de système
118. En association avec une mémoire tampon Z 146 et une mé-
moire tampon d'image 142, le processeur de visualisation 140 accomplit la conversion sous un format de balayage par trame, la suppression des surfaces cachées et le reste des calculs de gradation.La fonction duprocesseur de visualisation 140 est décrite de façon plus complète dans la demande de brevet
française n0 87 01846, déposée par la demanderesse.
Ainsi, l'architecture du sous-système de traitement
graphique 130 réalise un compromis entre la rapidité du trai-
tement et le coût du système, par l'utilisation du processeur
géométrique 136 pour les fonctions d'élimination et de trai-
tement de face, et du processeur de parcours d'arbre 132 pour
les fonctions de parcours en sens direct et inverse.
Structure de base de données hiérarchisée Pour permettre de mieux comprendre la conception et le fonctionnement du système de processeur graphique 100, la
figure 2 montre un exemple simplifié d'une liste de visualisa-
tion hiérarchisée du type en arbre. La liste de visualisation
de la figure 2 représente et décrit les objets qui sont repré-
sentés sur la figure 3, comprenant une tasse et une soucoupe, 150, et un cube 152. Ces objets simples n'ont été sélectionnés
que dans un but d'illustration. Dans la pratique réelle, les-
objets qui peuvent être modélisés peuvent être notablement
plus complexes.
On peut considérer le cube 152 comme un ensemble de six faces 1-6, dans lequel chaque face est représentée par un
polygone à quatre côtés ayant une couleur et une gradaion parti-
culières, et une relation spatiale particulière avec le cube
considéré dans son ensemble. De cette manière, on peut modé-
liser des objets complexes en décomposant l'objet en formes simples (primitives graphiques) auxquelles est associée une
information d'attribut.
L'élément de base dans la lise de visualisation de la figure 2 est le segment. Chaque segment peut comporter une primitive graphique (telle qu'un polygone, un vecteur, etc), des attributs (tels qu'une couleur de polygone, une matrice de transformation, etc) et une information de structure (telle que des pointeurs désignant des segments connexes). Chaque segment de données est divisé en deux tampons: un tampon d'élimination et un tampon de données de primitives.Le tampon d'élimination contient des données d'attributs et une informa- tion nécessaire pour déterminer si la primitive associée est visible dans un champ de vision défini. Le tampon de données de primitive contient les données nécessaires pour définir la
primitive graphique elle-même.
Le segment racine ou segment supérieur A de la figu-
re 2 est le segment de définition de "fenêtre d'observation",
qui définit l'angle d'observation sous lequel les objets gra-
phiques sont observés, et le volume de l'espace visible à
l'observateur. A ce segment est associé un système de coordon-
nées de référence qu'on appelle un système de coordonnées
"'terrestres" et qui est représenté par les trois axes orthogo-
naux 154 sur la figure 3. La relation spatiale entre la tasse et la soucoupe 150, et le cube 152, est définie au moyen de
leurs coordonnées terrestres.
Un point oculaire 156 et un point de visée 158 (spécifiés en coordonnées terrestres), associés à un angle d'inclinaison 9, définissent un second système de coordonnées, à savoir le système de coordonnées "oculaires". L'origine du système de coordonnées oculaires se trouve au point oculaire 156, avec l'axe Z dirigé le long de la ligne de visée, dans la direction du point de visée 158. L'angle d'inclinaison 9 définit l'angle de rotation des axes X et Y autour de l'axe Z. Le volume d'observation est défini par six "plans de coupure" qui forment de façon caractéristique un tronc de pyramide. De cette manière, le système de coordonnées oculaires identifie l'angle d'observation sous lequel les objets doivent être observés.
On définit un système de coordonnées connexe, à sa-
voir le système de coordonnées oculaires pondérées, dans le-
quel les coordonnées X et Y du système de coordonnées oculai-
res sont pondérées pour simplifier le processus de coupure.
Le segment de définition de fenêtre d'observation A comporte une matrice de transformation destinée à transformer des coordonnées dans le système de coordonnées terrestres en coordonnées dans le système de coordonnées oculaires, et une seconde matrice de fenêtre d'observation pour convertir les
coordonnées oculaires de façon à donner le système de coor-
données oculaires pondérées.
Au-dessous du segment de définition de fenêtre d'observation A de la figure 2 se trouve un second segment de la liste de visualisation, qu'on appelle le segment B. Le segment B est un segment enfant du segment parent A, et il
représente l'ensemble tasse-soucoupe 150. Un système de coor-
données de "modèle" 160 est associé à l'ensemble tasse-sou-
coupe 150, et on définit le système de coordonnées de modèle en plaçant son origine à un emplacement convenable et en
alignant les axes avec certaines des données de primitive.
Toutes les données de primitive qui sont contenues dans un
segment sont rapportées à son système de coordonnées de modè-
le associé. Le segment B comporte une matrice de transforma-
tion qui transforme des points dans le système de coordonnées de modèle du segment B pour les faire correspondre au système de coordonnées de son parent, c'est-a-dire le segment A (qui
est dans ce cas le système de coordonnées terrestres).
Le segment B comporte également des pointeurs diri-
gés vers l'un de ses segments enfants, c'est-à-dire le seg-
ment D, et vers l'un de ses segments frères, c'est-à-dire le
segment C (qui représente le cube 152). Le segment C est éga-
lement un segment enfant du segment parent A, et il comporte son propre système de coordonnées de modèle 162, qui comporte dans ce cas une origine placée à l'un des sommets du cube
, et trois axes alignés avec des arêtes du cube. Le seg-
ment C comporte à son tour six segments enfants F-K pour les six faces de cube 1-6 respectives. Les segments F-K sont
tout à fait similaires. A titre d'exemple, le segment F com-
porte des pointeurs dirigés vers le segment parent C, le seg-
ment frère G et un segment enfant (s'il en existe un). Le segment F possède son propre système de coordonnées de modèle dans lequel les quatre sommets de la face de définition de polygone 1 sont spécifiés. Ce polygone à quatre côtés est la
primitive graphique du segment F. Le segment F définit en ou-
tre la couleur et d'autres attributs de la primitive graphi-
que. Chaque segment de la liste de visualisation est
présenté sous un format comprenant un certain nombre de tam-
pons de données qui contiennent les données graphiques, et un
bloc de commande qui comporte des pointeurs désignant les po-
sitions de mémoire dans la MLV 116 auxquelles se trouvent les tampons. Chaque bloc de commande comprend un certain nombre de mots (de façon caractéristique seize mots) qui comprennent
des pointeurs, des indicateurs et d'autres données de comman-
de. L'un de ces blocs de commande, à savoir le bloc de
commande de segment, contient un pointeur dirigé vers le tam-
pon d'élimination du segment, qui enregistre les attributs de la primitive graphique associée. Parmi ces attributs figure un "volume de limitation" que le processeur géométrique 136
utilise dans le processus d'élimination. Le volume de limita-
tion est un ensemble de huit points de coordonnées qui défi-
nissent un volume contenant entièrement la primitive graphi-
que pour un segment et toutes les primitives graphiques de tous les segments enfants. Le volume de limitation permet au processeur géométrique 136 d'éliminer rapidement des segments
qui sont complètement à l'extérieur du champ de vision défi-
ni, au moyen de tests de comparaison simples.
Chaque fois que le processeur de terminal 112 in-
troduit de nouvelles données graphiques pour un segment, ou
modifie une matrice de transformation, ce processeur de ter-
minal met à jour les volumes de limitation pour la totalité
de la liste de visualisation. Par exemple, si un nouveau po-
lygone est introduit dans un segment, cette opération peut
augmenter la taille du volume de limitation pour ce segment.
Si le volume de limitation du segment augmente, il peut être nécessaire d'augmenter la taille du volume de limitation de son segment parent, pour faire en sorte que le volume de li-
mitation su segment parent englobe le nouveau volume de li-
mitation du segment enfant. Ainsi, des changements effectués dans un segment peuvent remonter progressivement dans l'arbre de la liste de visualisation, jusqu'à ce qu'on arrive à un
segment qui n'est pas affecté par le changement. Un mot d'in-
dicateur est instauré dans chaque segment lorsque le segment a été modifié, pour indiquer que le volume de limitation pour
le segment parent du segment considéré peut également néces-
siter une mise à jour.
Outre le volume de limitation, le tampon d'élimina-
tion contient également des données d'attribut qui définis-
sent certaines caractéristiques de la primitive graphique du
segment. Si une caractéristique particulière n'est pas défi-
nie dans le tampon d'élimination d'un segment, la définition de cette caractéristique est héritée du segment parent. Par exemple, si le segment C indique que sa primitive graphique associée (s'il y en a une) possède la couleur "rouge", tous ses enfants (les segments de face F-K) qui ne définissent pas localement la couleur de la primitive graphique hériteront la
couleur "rouge" pour la primitive graphique.
Le tampon d'élimination contient également la ma-
trice de transformation destinée à transformer le système de
coordonnées local du segment pour donner le systèmede coor-
données de son segment parent. Une information de source lu-
mineuse peut également être enregistrée dans le tampon d'éli-
mination. Un mot du bloc de commande de segment définit un pointeur dirigé vers le tampon de données qui contient les données de primitive du segment. La primitive graphique est définie dans le système de coordonnées de modèle local du segment. La structure de liste de visualisation qu'utilise le système de processeur graphique 100 permet la "mise à disposition" de segments. Ainsi, une fois qu'un seul segment a été créé, d'autres segments dans la structure de liste de
visualisation peuvent faire référence un nombre de fois quel-
conque à ce segment. Par exemple, un seul segment définissant une face de cube pourrait être appelé par chacun des segments
F-K de la figure 2, au lieu de dupliquer l'information cor-
respondante pour chaque enfant du segment C. Chaque référence au segment "mis à disposition" peut modifier les attributs de ce segment, du fait que des attributs peuvent être hérités pendant le parcours de l'arbre. Ainsi, chaque segment F-K
aurait une matrice de transformation différente pour position-
ner la face "mise à disposition" à l'emplacement correct pour
former le cube 160.
Dans le mode de réalisation qui est representé, toutes les quantités se trouvant dans les tampons de liste
de visualisation (y compris les blocs de commande) sont enre-
gistrées en paquets de longueur fixe de seize mots ou de
trente-deux mots, dans lesquels chaque mot comprend trente-
deux bits, Ces paquets de longueur fixe facilitent les tâches d'accès en mémoire, d'affectation d'espace de mémoire et de
libération d'espace de mémoire.
Pour un paquet caractéristique de tampon d'élimina-
tion ou de tampon de données de primitive, on utilise des
mots de remplissage en quantité nécessaire pour emplir le pa-
quet de façon qu'il comporte seize ou trente-deux mots. Des quantités qui auraient normalement une longueur supérieure à trente-deux mots (comme c'est le cas pour de nombreux types de données de primitive) sont décomposées en paquets de seize mots, et enchainées ensemble par l'intermédiaire de pointeurs de "paquet suivant". Un pointeur de "dernier paquet de tampon
de données" du bloc de commande supprime la nécessité de par-
courir la totalité de la liste enchainée pour trouver le der-
nier paquet du tampon de données afin d'ajouter des données
de segment.
Les segments décrits ci-dessus forment une liste de visualisation hiérarchisée que le processeur de terminal 112 crée et enregistre dans la MLV 116 d'une manière classique.
Le processeur de terminal 112 accède à la MLV 116 par l'in-
termédiaire du bus de système 118. Une fois que la liste de visualisation a été enregistrée dans la MLV 116, elle peut être parcourue et traitée pour produire les images désirées
des représentations d'objets enregistrées.
Algorithmes de transformation du processeur géométrique Le processeur géométrique 136 accomplit toutes les opérations matricielles et vectorielles et les opérations d'élimination, de coupure, de projection et de définition
d'échelle sur l'écran en projetant des données tridimension-
nelles de liste de visualisation dans un espace d'écran bi-
dimensionnel. Comme indiqué ci-dessus, l'élément de base dans la mémoire de liste de visualisation est le segment, et chaque
segment peut comporter facultativement une matrice de trans-
formation. Cette matrice reçoit des données dans le système de coordonnées du segment et les transforme pour les faire
correspondre au système de coordonnées du parent. Par exem-
ple, sur la figure 2, lorsque la matrice de transformation du segment D est appliquée aux données se trouvant dans le tampon de données du segment D, elle les transforme pour les
exprimer dans le système de coordonnées du segment B. De fa-
çon similaire, la matrice de transformation du segment B transforme les données de ce segment pour les exprimer dans le système de coordonnées du segment A. Ces transformations sont accomplies par rotation, pondération et translation de
composantes dans chaque matrice de transformation.
Dans le mode de réalisation préféré de l'invention,
les termes de pondération, rotation et translation sont en-
registres dans une matrice de transformation de dimensions
4 x 3. La convention utilisée dans la représentation de la ma-
trice est la suivante: moO mol m02 m10 mil m12 m20 m21 m22 m30 m31 m32
Des points d'une primitive graphique sont représen-
tés par leurs valeurs de coordonnées X, Y et Z, plus un terme constant, avec la représentation suivante point P = (Px Py Pz) Le fait de multiplier un point par une matrice de
transformation donne en sortie le point dans le nouveau sys-
tème de coordonnées défini par la matrice de transformation.
Par exemple:
P' = P*M = (Qx Qy Qz), avec Qx = Px*mOO + Py*mlO = Pz*m20 + m30 Qy = PxmmOl + Py*mll + Pz*m21 + m31 Qz = Pxxm02 + Pyxm12 + Pz*m22 ± m32 Une rotation autour de l'un quelconque des trois axes de coordonnées peut être effectuée à l'aide des matrices suivantes (dans lesquelles 9 est l'angle de rotation): Rotation autour de l'axe X:
1 0 0
0 cosO -sinO 0 sin@ cosO
0 0 0
Rotation autour de l'axe Y: cose -sing
0
sin9 cose Rotation autour de l'axe Z: cose sin9 -sing cos9 o0 On peut effectuer une pondération quelconque des trois axes de coordonnées en termes de pondération désirés (désignés par trice suivante: Sx Sy On peut accomplir une translation termes de translation désirés (désignés par trice suivante: Ty Ty portant sur l'un incorporant les
"S")dans la ma-
o Sz en fixant des
"T") dans la ma-
Tz Comme indiqué ci-dessus, le segment de plus haut
niveau dans la hiérarchie de la structure en arbre de l'in-
vention est le segment de définition de fenêtre d'observa-
tion. Le système de coordonnées pour le segment de défini-
tion de fenêtre d'observation est appelé le système de coor-
données terrestres. C'est dans le système de coordonnées terrestres que sont spécifiées les valeurs du point oculaire 156 et du point de visée 158. La spécification d'un point
oculaire et d'un point de visée, ainsi que d'un angle d'in-
clinaison 9, définit le système de coordonnées oculaires.
On introduit le système de coordonnées oculaires pondérées pour simplifier le processus de coupure. Dans le système de coordonnées oculaires, les équations des plans de coupure sont les suivantes: Plan droit: Plan gauche: Plan supérieur Plan inférieur Plan proche: Plan lointain: X = Z * tg(angle X) X = -Z X tg (angle X) Y' = Z * tg (angle Y) Y' = -Z * tg (angle Y) Z' = valeur proche (constante)
Z' = valeur lointaine (constante).
En pondérant de façon simple les points X et Y au moyen de leurs termes de cotangente respectifs, on simplifie considérablement les tests de coupure. Plus précisément, si on pose: X' = X * cotg(angle X), et Y' = Y * cotg(angle Y), les équations pour les six plans de coupure deviennent: Plan doit: Plan gauche: Plan supérieur: Plan inférieur: Plan proche: Plan lointain:
X = Z
Y" = -Z
Y" = Z
Y" = -Z
Z" = valeur proche Z" = valeur lointaine
En effectuant une pondération de la manière ci-des-
sus, la détermination du fait qu'un point quelconque d'un vo-
lume de limitation est du côté intérieur ou extérieur d'un plan de coupure ne nécessite qu'un test de comparaison simple
de deux valeurs numériques. Le système de coordonnées résul-
tant obtenu en pondérant les coordonnées X et Y est appelé le système de coordonnées oculaires pondérées. On enregistre commodément les termes de pondération dans une matrice de transformation qui est mémorisée dans un paquet de fenêtre d'observation, dans le segment de définition de fenêtre d'observation. Pour la projection en perspective, on utilise la matrice de transformation suivante: cotg(angle X) O O 0 cotg(angle Y) O
O O -1
O O O
Pour une projection parallèle (orthogonale), l'uti-
lisateur définit explicitement une matrice qui fixe les six plans de coupure. La matrice de transformation de projection
parallèle est la suivante (avec R = plan droit, L = plan gau-
che, T = plan supérieur et B = plan inférieur):
2/(R - L) 0 O
0 2/(T - B) O
0 0 -1
-(R + L)/(R - L) -(T + B)/(T - B) O
Avec ces matrices et les plans de coupure définis,
tous les points sont soumis à une pondération et une transla-
tion les faisant rentrer dans le volume d'observation défini.
Organisation du matériel La figure 4 montre le processeur géométrique 136 sous la forme d'une combinaison de blocs de registres à double
tampon et à accès multiples et d'une unité arithmétique pipe-
line, interconnectés par des bus internes et commandés par un
micro-séquenceur, avec des éléments de commande périphériques.
L'interface de système 200 connecte le processeur géométrique 136 au bus de système 118. L'interface de système réagit à des ordres provenant du processeur de terminal
112 (représenté sur la figure 1) en adressant tous les regis-
tres et indicateurs d'état dans le processeur géométrique 136
par la sélection de l'adresse de lecture ou d'écriture appro-
priée. Le processeur de terminal 112 utilise également l'in- terface de système 200 pour transférer des instructions de
microprogramme de l'ordinateur hôte vers une mémoire de mi-
croprogramme 202, à l'initialisation du processeur géométri-
que 136. Un micro-séquenceur 204 utilise ses sorties d'adres-
se pour sélectionner une instruction de microprogramme dans
la mémoire de microprogramme 202. L'instruction de micropro-
gramme sélectionnée est enregistrée temporairement dans un
registre pipeline 206.
Une partie de l'instruction de microprogramme pro-
venant du registre pipeline 206 est renvoyée vers les entrées
d'adresse de branchement et les entrées d'instruction du mi-
cro-séquenceur 204 pour commander le fonctionnement ultérieur
du micro-séquenceur. D'autres bits de l'instruction de micro-
programme enregistrée dans le registre pipeline 206 sont di-
rigés vers des registres de code de condition et de code opé-
ration 208, et vers un circuit logique de retard 210. Le cir-
cuit logique de retard 210 achemine des instructions de com-
mande vers une unité arithmétique pipeline 212, après un re-
tard qui peut être sélectionné. L'unité arithmétique pipeline 212 effectue des calculs séquentiels. Un bus X et un bus Y amènent des données dans l'unité arithmétique pipeline 212, et un bus Z achemine les résultats de l'unité arithmétique pipeline 212 vers un registre de destination qui est indiqué par l'instruction de microprogramme active. Quatre blocs de registres à accès multiples sont connectés aux bus X, Y et Z. Le bloc de registres-de MLV 214 enregistre des paquets de données qui proviennent de la MLV 116 par l'intermédiaire du bus de MLV 134, sous la commande du processeur de parcours d'arbre 132. Un bloc de registres de pile 216 enregistre des données qui proviennent du processeur de parcours d'arbre 26: 132 par le bus de pile 138. Un bloc de registres de travail 218 (qui peut être constitué par un ou plusieurs sous-blocs de registres) enregistre des résultats intermédiaires pendant
des calculs effectués en série. Un bloc de registres de sor-
* tie 220 enregistre les résultats finals de calculs de l'unité arithmétique pipeline. Le contenu du bloc de registres de sortie 220 peut être placé directement sur le bus de pile 138, ou bien il peut être émis vers le processeur de terminal
112 et/ou le processeur de visualisation 140 par l'intermé-
diaire de l'interface de système 200 et du bus de système 118.
Le processeur géométrique 136 est connecté au pro-
cesseur de parcours d'arbre 132 au moyen du bus de pile bidi-
rectionnel 138. Le processeur géométrique 136 est connecté au bus de MLV 134 pour recevoir de l'information uniquement à
partir de la MLV 116. Pour réduire le nombre de lignes de si-
gnal d'entrée/sortie qui sont connectées au processeur géomé-
trique 136, le bus de MLV 134 et le bus de pile 138 sont des
bus à 16 bits avec multiplexage temporel dans le mode de réa-
lisation qui est représenté. Pendant la première moitié d'un transfert sur un bus, les seize bits de fort poids d'un mot de données sont présents sur le bus, et pendant la seconde moitié du transfert sur le bus, les seize bits de faible
poids du mot de données sont présents sur le bus.
Le bus de pile 138 communique avec le bloc de re-
gistres de pile 216 et le bloc de registres de sortie 220, pour écrire des données dans le bloc de registres de pile 216 et pour lire des données dans le bloc de registres de sortie 220. Le bus de MLV 134 transfère des adresses et des données à partir d'une seule source, à savoir la MLV 116, et dans une seule direction, c'est-à-dire vers le processeur de parcours d'arbre 132 et le processeur géométrique 136. Par
conséquent, le bus de MLV 134 ne comporte aucun retard d'ar-
bitrage ou d'établissement de liaison de bus Pet il peut donc
fonctionner avec des vitesses de transfert de données extrême-
ment élevées. Dans le mode de réalisation qui est representé, le bus de MLV 134 peut transférer 40 mégamultiplets de données par seconde, alors que la vitesse du bus de système 118 est de 6 mégamultiplets par seconde.
Le bus de système 118 communique avec tous les re-
gistres et avec la mémoire de microprogramme 202 dans le pro-
cesseur géométrique 136. Le bus de système 118 est capable de remplacer fonctionnellement le bus de MLV 134 et/ou le bus de pile 138. Ceci permet de faire fonctionner et de tester le
processeur géométrique 136 en n'utilisant que le bus de sys-
tème 118.
Le bloc de registres de MLV 214 est une mémoire à
structure en tampon double, ce qui signifie qu'elle est divi-
sée en deux moitiés. Pendant que le processeur géométrique 136 travaille sur des données se trouvant dans une moitié du bloc de registres de MLV 214, des données sont écrites dans l'autre
moitié à partir du bus de MLV 134. Lorsque le processeur géo-
métrique a terminé le traitement des données se trouvant du
premier côté, et lorsque le bus de MLV 134 a terminé le trans-
fert de données vers le second côté, les deux côtés sont per-
mutés. L'utilisation d'une structure en tampon double permet au bus de MLV 134 de transférer des données pendant que le
processeur géométrique 136 travaille sur des données internes.
Le bloc de registres de pile 216 et le bloc de registres
de sortie 220 ont également une structure en tampon double.
L'accomplissement d'un transfert sur un bus exige la connaissance de l'état du bloc de registres avec lequel le bus
doit communiquer. Lorsque le processeur géométrique 136 a ter-
miné le traitement de données dans une moitié d'un bloc de re-
gistres, cette moitié du bloc de registres est allouée au bus.
A chacun des blocs de registres d'entrée et de sortie 214, 216
et 220 est associé un indicateur "Mémoire Disponible", qui in-
dique le moment auquel le bloc de registres associé est dispo-
nible pour une opération d'entrée. A chaque bloc de registres
est également associé un indicateur "Mémoire Chargée", qui in-
dique le moment auquel un transfert de bus vers le bloc de re-
gistres est terminé. Ainsi, l'utilisation des indicateurs
"Mémoire Disponible" et "Mémoire Chargée" selon un mode d'éta-
blissement de communication,permet la commande de la circula-
tion des données en entrée et en sortie de chaque bloc de re-
gistres à structure en tampon double. Le processeur géométri-
que 136 utilise également trois signaux d'interruption (un pour chacun des éléments comprenant le processeur de parcours
d'arbre 132, le processeur de visualisation 140 et le proces-
seur de terminal 112), qu'on emploie pour signaler à d'autres processeurs que des données sont prêtes à être transférées
vers l'autre processeur à partir du bloc de registres de sor-
tie sur lequel porte l'interruption. Le processeur géométrique
136 génère également un signal "Objet Visible" qui est appli-
qué au processeur de visualisation 140.
En considérant maintenant la figure 5, on note que le processeur géométrique est commandé par le micro-séquenceur 204 en association avec divers dispositifs périphériques. Dans le mode de réalisation de l'invention qui est représenté, le micro-séquenceur 204 est un microséquenceur de la marque
Integrated Device Technology, portant la référence IDT39C10B.
Au démarrage du système, l'ordinateur hôte transfère des instructions de microprogramme par l'interface de bus de système 200 vers la mémoire de microprogramme 202, qui est une mémoire de 4096 x 80 bits dans le mode de réalisation qui est représenté. Lorsque le micro-séquenceur 204 reçoit un ordre
par l'interface de système 200, l'instruction de microprogram-
me appropriée est prélevée dans la mémoire de microprogramme 202 et estplacée dans le registre pipeline à 80 bits 206, de façon que différentes zones de l'instruction de microprogramme
puissent être envoyées simultanément vers différents disposi-
tifs dans le processeur géométrique. Le micro-sequenceur 204 reçoit une instruction de micro-séquenceur à 4 bits extraite
de l'instruction de microprogramme, et il l'exécute, en utili-
sant une adresse de branchement qui est fournie par le registre
pipeline 206. Pendant l'exécution de l'instruction, le micro-
séquenceur 204 obtient une information d'état en examinant des
bits qui se trouvent dans l'un des différents registres d'in-
dicateur et de code de condition (226, 228 et 230), au moyen d'un multiplexeur de code de condition 232. Un registre de code opération 222 et un registre de compte de mots224 mémorisent des mots de commande issus d'un segment pendant le traitement
de données graphiques.
Une zone de l'instruction de microprogramme courante peut être acheminée à partir du registre pipeline 206 vers les
circuits d'interface de processeur géométrique, l'unité ari-
thmétique pipeline 212 ou les entrées d'adresse et la logique de commande de lecture/écriture des divers blocs de registres
à accès multiples 214, 216, 218 et 220, pour commander la cir-
culation des données dans le processeur géométrique et les
opérations accomplies sur ces données.
Au moment de l'initialisation, le processeur géomé-
trique 136 est placé dans les conditions suivantes: son comp-
teur de microprogramme est mis à zéro, tous les indicateurs "Mémoire Disponible" sont instaurés (ce qui indique que les blocs de registres sont disponibles), et tous les indicateurs "Mémoire Chargée" sont restaurés (ce qui indique que les blocs de registres ne sont pas charges). Le processeur géométrique 136 attend ensuite que le bloc de registres de MLV 214 soit chargé. Le processeur de parcours d'arbre 132 contrôle l'état
de l'indicateur"Mémoire Disponible" de MLV. Lorsque l'indica-
teur "Mémoire Disponibld'de MLV indique que le bloc de regis-
tres de MLV 214 est disponible, le processeur de parcours
d'arbre 132 provoque l'émission d'un mot de commande, accompa-
gné de mots de données en un nombre allant jusqu'à trente et un, par la MLV 116 vers le processeur géométrique 136, sur le bus de MLV 134. Lorsque le bloc de registres de MLV 214 est complètement charge, l'indicateur "Mémoire Chargée" de MLV est
instauré. -
Les seize bits de fort poids du mot de commande con-
sistent en indicateurs. La zone de 8 bits suivante consiste en un code opération, et la zone de 8 bits suivante est un compte de mots. A la réception de l'indicateur "Mémoire Chargée" de MLV, le micro-séquenceur 204 charge le mot de commande dans
les registres de code de condition et de code opération, 208.
Le code opération, qui est chargé dans le registre de code opération 222, sera utilisé en tant qu'adresse de saut par le micro-séquenceur 204, pour effectuer un branchement vers une
séquence particulière d'instructions de microprogramme enre-
gistrée dans la mémoire de microprogramme 202, pour déterminer ainsi les opérations à accomplir sur les données chargées dans
le bloc de registres de MLV 214. Le micro-séquenceur 204 uti-
lise les seize bits d'indicateurs pour prendre des décisions
supplémentaires concernant la manière de traiter les données.
Le compte de mots, chargé dans le registre de compte de mots 224, indique au micro-séquenceur 204 combien de mots ont été chargés dans le bloc de registres de MLV 214. Pendant que le micro-séquenceur 204 travaille sur des données enregistrées d'un côté du bloc de registres de MLV 214, le processeur de parcours d'arbre 132 peut charger un nouveau jeu de données dans l'autre côté du bloc de registres de MLV 214. Lorsque le microséquenceur 204 a terminé sa tâche en cours, son côté du
bloc de registres de MLV 214 est désigné comme étant disponi-
ble, au moyen de l'indicateur "Mémoire Disponible" de MLV. Le processeur géométrique 136 effectue ensuite un contrôle pour déterminer si une nouvelle tâche a été chargée dans l'autre côté du bloc de registres de MLV 214; dans l'affirmative, la
nouvelle tâche est accomplie.
Un fonctionnement similaire a lieu en ce qui con-
cerne les données enregistrées dans le bloc de fichiers de pile 216, que le processeur de parcours d'arbre 132 transmet directement au processeur géométrique 136 par le bus de pile 138. De façon similaire, le bloc de registres de sortie 220 enregistre dans une structure en tampon double les données que génère le processeur géométrique 136, et il transmet les données traitées soit vers le processeur de parcours d'arbre 132, par le bus de pile 138, soit vers un processeur externe
par le bus de système 118.
Les registres de code de condition et de code opé-
ration 208 comprennent deux registres qui mémorisent des in-
dicateurs de commande provenant de paquets de données qui ont été écrits dans le bloc de registres de MLV 214 pendant le parcours de l'arbre. L'un des registres d'indicateurs 226
contient des indicateurs qu'on considère comme étant les in-
dicateurs locaux pour chaque segment dans l'arbre. L'autre registre d'indicateurs 228 mémorise des indicateurs globaux liés à la fenêtre d'observation. Les indicateurs locaux et
globaux commandent un traitement conditionnel lié à la ren-
contre de différents types d'objets pendant le parcours de l'arbre.
En plus des registres d'indicateurs 226, 228, di-
vers signaux d'indicateurs indépendants sont appliqués à un registre de code de condition 230. Ces signaux d'indicateurs indépendants comprennent le signal "Mémoire Chargée" du bloc de registres de MLV, qui est activé par le processeur de parcours d'arbre 132 lorsque le bloc de registres de MLV 214
contient des données valides, et le signal "Mémoire Disponi-
ble" du bloc de registres de sortie, qui est activé par le processeur de parcours d'arbre 132 lorsque des données ont été lues dans le bloc de registres de sortie 220. L'unité arithmétique pipeline 212 génère un indicateur "Signe"
d'UAL (unité arithmétique et logique), un indicateur "Dépas-
sement de capacité" d'UAL, un indicateur "Comparaison de Ré-
sultats" d'UAL, et un indicateur "Objet Visible" d'UAL, et
elle permet au micro-séquenceur 202 d'effectuer un branche-
ment conditionnel basé sur des résultats de calculs pendant
le traitement graphique.
Un multiplexeur de code de condition à 40 bits, 232, peut sélectionner un indicateur ou un code de condition
sous la commande de signaux de sélection de condition qui pro-
viennent du registre pipeline 206.
Les modules fonctionnels du processeur géométrique sont interconnectés par trois bus internes principaux qui transmettent des données arithmétiques de module en module. Ces bus sont le bus X, le bus Y et le bus Z qui, dans le mode de réalisation représenté, sont tous des bus à 16 bits avec multiplexage temporel qui sont attaqués par les seize bits de fort poids d'un mot de données à 32 bits pendant la première moitié d'un cycle d'horloge de système, et par les seize bits
de faible poids pendant la seconde moitié du cycle d'horloge.
Tout l'acheminement des données par le bus X, le bus Y et le bus Z est commandé par des instructions de microprogramme qui sont temporairement enregistrées dans le registre pipeline 206. La fonction principale du bus X est de transmettre des données d'entrée vers l'entrée A d'un multiplicateur dans l'unité arithmétique pipeline 212. La fonction principale du
bus Y est de transmettre des données vers l'entrée B du mul-
tiplicateur dans l'unité arithmétique pipeline 212.
Le bus Z transmet les signaux de sortie de l'unité
arithmétique pipeline 212 vers les entrées du bloc de regis-
tres de sortie 220 ou vers les entrées du bloc de registres de travail 218. Le bloc de registres de sortie 220 reçoit des résultats de calculs finals, qui peuvent être transmis vers le bus de pile 138, ou dirigés vers le bus de système 118, en vue de la transmission vers le processeur de terminal 112 ou le processeur de visualisation 140. Les résultats d'un calcul
intermédiaire peuvent être enregistrés dans le bloc de regis-
tres de travail 218, et une instruction de microprogramme suivante peut prélever les résultats intermédiaires par le
bus X ou le bus Y, pour les utiliser dans des calculs ulté-
rieurs.
La figure 6 montre les circuits de l'unité arithmé-
tique pipeline 212, qu'on utilise pour tous les calculs liés à des travaux graphiques dans le processeur géométrique. Toutes les données introduites dans l'unité arithmétique pipeline 212 sont appliquées à un multiplicateur à virgule flottante à 32 bits, 600, qui peut être par exemple le circuit multiplicateur WTL 1032 fabriqué par WEITEK Corporation. Le multiplicateur 600 comporte deux entrées, A et B, qui sont respectivement connectées au bus X et au bus Y.
La sortie du multiplicateur 600 est directement con-
nectée à l'entrée d'un circuit accumulateur 602. Dans une uti-
lisation caractéristique, l'accumulateur 602 accumule la somme de tous les nombres présentés sur ses entrées, et il présente la somme en sortie. L'accumulateur 602 comporte deux signaux de commande, qui sont reçus par l'intermédiaire du circuit
logique de retard 210, à partir de l'instruction de micropro-
gramme qui est enregistrée dans le registre pipeline 206. Un signal "Premier Terme" restaure l'accumulateur à zéro avant l'accumulation de nombres d'entrée. Un signal "Changement de
Signe" commande à l'accumulateur de soustraire le nombre d'en-
trée de la somme accumulée, en changeant le signe du nombre d'entrée avant d'effectuer l'addition. L'accumulateur 602 est
décrit de façon plus complète dans la demande de brevet fran-
çaise n0 87 00481 précitée.
Le signal de sortie de l'accumulateur 602 est tou-
jours la somme accumulée, comprenant le nombre d'entrée le plus récent. Dans le mode de réalisation qui est représenté, la somme est valide après quatre cycles d'horloge. La sortie de l'accumulateur 602 est connectée aux entrées d'un circuit d'unité arithmétique et logique (UAL) multifonction 604, d'un circuit de transformation 606, d'un circuit tampon de bus Z 608 et d'un ensemble de circuits de mémoire morte (MEM) de
consultation de table, 610.
L'UAL multifonction 604 peut convertir un nombre en virgule fixée à 32 bits en un nombre en virgule flottante à 32 bits, et inversement, ou comparer des nombres d'un type
ou de l'autre. Les entrées de commande du circuit d'UAL mul-
tifonction sont attaquées par une mémoire morte (MEM) de com-
mande 612 qui reçoit ses adresses à partir du circuit logique
de retard 210. La sortie de l'UAL multifonction 604 est con-
nectée au bus Z, lorsqu'elle est validée par des signaux de commande provenant de la MEM de commande 612. Les fonctions spécifiques de l'UAL multifonction 604 sont décrites de façon
plus complète dans la demande de brevet n 8700635 précitée.
Le circuit de transformation 606 peut calculer la racine carrée ou l'inverse d'un nombre en virgule flottante à 32 bits, et générer des courbes, en utilisant un algorithme d'approximation linéaire par morceaux. Les MEM de consultation
de table 610 sont connectées aux entrées du circuit de trans-
formation 606. Les MEM de consultation de table 610 sont adressées par des données provenant des bits 11 à 22 de la sortie de l'accumulateur 602. Les données d'entrée adressent les MEM de consultation de table 610, qui fournissent pour la transformation une valeur d'ordonnée à l'origine et une valeur
de pente correspondantes- et qui les transfèrent vers le cir-
cuit de transformation 606. Avec ces deux informations d'en-
trée et les bits restants de la sortie de l'accumulateur 602, le circuit de transformation 606 peut accomplir la fonction sélectionnée. Des signaux provenant de la MEM de commande 612
sélectionnent le mode de fonctionnement du circuit de trans-
formation 606. Le circuit de transformation 606 est décrit de façon plus complète dans la demande de brevet n 87 00480 précitée.
La MEM de commande 612 commande également la conne-
xion au bus Z de l'UAL multifonction 604, du circuit de
transformation 606 et de l'accumulateur 602. La MEM de com-
mande 612 commande également deux compteurs à 8 bits, A et B, qu'on utilise pour le comptage de calculs et d'éléments de
données. Les deux compteurs peuvent être mis à zéro, incré-
mentés ou connectés au bus Z, de manière indépendante, con-
formément à la sélection effectuée par des signaux de commande
spécifiques provenant de la MEM de commande 612.
L'unité arithmétique pipeline 212 peut effectuer
des calculs combinés, avec des données circulant dans un che-
min parmi trois au cours d'un calcul quelconque. Les trois
chemins de données possibles dans l'unité arithmétique pipe-
line 212 sont représentés sur la figure 7. Dans le Cycle Abrégé, les données sont dirigées uniquement vers I'UAL multifonction 604, et elles ne passent pas par le multiplicateur 600 ou l'accumulateur 602. Dans le
mode de réalisation qui est représenté, un Cycle Abrégé né-
cessite cinq cycles d'horloge.
On utilise le Cycle Court lorsque des nombres doi-
vent être multipliés et/ou accumulés, mais ne nécessitent pas
un traitement ultérieur, et peuvent être appliqués directe-
ment de la sortie de l'accumulateur 602 au tampon 608, pour l'application au bus Z. Dans le mode de réalisation qui est
représenté, le Cycle Court exige onze cycles d'horloge.
Le Cycle Long est le mode qui est pris par défaut,
et il exige quatorze cycles d'horloge dans le mode de réali-
sation qui est représenté. Dans le Cycle Long, les données passent par le multiplicateur 600, puis par l'accumulateur 602 et ensuite par l'UAL multifonction 604 ou le circuit de
transformation 606.
Du fait que les circuits qui constituent l'unité arithmétique pipeline 212 exigent un nombre différent de
cycles d'horloge pour fonctionner dans chaque mode, un cir-
cuit logique de retard 210 est placé entre le registre pipe-
line 206 et l'unité arithmétique pipeline 212 pour retarder l'exécution d'instructions de microprogramme jusqu'à ce que des données valides soient présentes aux entrées de l'unité
arithmétique pipeline 212.
Les figures 8a et 8b montrent l'organisation du
circuit logique de retard 210 pour l'unité arithmétique pi-
peline. Pour certains signaux, comme les signaux "Premier Terme" et "Changement de Signe", on utilise des registres attaqués par un signal d'horloge pour produire le retard,
qui est toujours égal à un nombre spécifique de cycles d'hor-
loge. Par exemple, les signaux de commande pour l'accumulateur 602 sont toujours retardés de sept cycles d'horloge pour tenir compte des deux cycles d'horloge nécessaires pour accéder aux données dans le bloc de registres source, et des cinq cycles
d'horloge qui sont nécessaires pour un calcul dans le multi-
plicateur 600. Comme le montre la figure 8a, le signal "Pre-
mier Terme" est simplement appliqué à un registre à 8 bits 800 qui est attaqué par un signal d'horloge, et ce signal est
renvoyé six fois dans le même registre, ce qui produit un re-
tard de sept cycles d'horloge. On utilise le même type de cir-
cuit pour le signal "Changement de Signe".
La figure 8b montre une représentation simplifiée du circuit logique de retard qui retarde des instructions de microprogramme pour l'UAL multifonction 604 et le circuit de
transformation 606. On produit le retard en enregistrant tem-
porairement les bits de commande de chaque instruction de mi-
croprogramme dans un bloc de registres de dimensions 16 x 4, portant la référence 802, qui est continuellement adressé par des adresses de lecture et d'écriture décalées. Un compteur
modulo 16, portant la référence 804, est continuellement in-
crémenté par l'horloge de système, et il génère une adresse à 4 bits qui est appliquée aux entrées d'adresse d'écriture du bloc de registres, et aux bits d'adresse de faible poids d'une MEM de retard 806. La MEM de retard 806 contient un
ensemble d'adresses à 4 bits décalées par rapport à leurs po-
sitions de mémoire d'une quantité égale au retard désiré,
exprimé en cycles d'horloge. Par exemple, si on désire un re-
tard de 5 cycles, le mot de données se trouvant à l'adresse
"2" dans la MEM 806 contiendra la valeur "7", en hexadécimal.
Les deux bits de fort poids des entrées d'adresse de la MEM de retard 806 sont connectés de façon à recevoir un signal "Sélection de Retard" provenant du registre pipeline 206, de façon à permettre la sélection de différents retards par la
sélection de différentes zones d'adresse dans la MEM de re-
tard 806.
Les lignes de données de sortie provenant de la MEM de retard 806 sont connectées aux entrées d'adresse de lecture du bloc de registres. Les entrées de validation de lecture et de validation d'écriture du bloc de registres sont alternati- vement attaquées par le signal d'horloge et son inverse. Une adresse de MEM de commande, qui représente un ordre appliqué à l'unité arithmétique pipeline 212, est introduite dans le bloc de registres 802 à partir du registre pipeline 206. Le signal de sortie du bloc de registres reste non significatif jusqu'à
ce que le nombre correct de cycles d'horloge se soient écou-
lés, et à ce moment l'adresse de lecture du bloc de registres 802 aura la même valeur que l'adresse d'écriture au moment de
l'enregistrement initial de l'adresse de la MEM de commande.
L'information de sortie du bloc de registres 802 (c'est-à-dire l'adresse appropriée de la MEM de commande) est appliquée aux entrées d'adresse de la MEM de commande 612, qui fournit la combinaison spécifique de signaux de commande
individuels qui est enregistrée à l'adresse appliquée en en-
trée. L'information de sortie de la MEM de commande 612 est
une combinaison de signaux de commande de lecture et d'écritu-
re, de valeursde pondération, de signaux de sélection de mode pour l'UAL multifonction 604 et le circuit de transformation
606, et de signaux de sélection de fonction de compteur.
Les signaux de validation d'écriture pour le bus Z sont retardés d'un nombre variable de cycles (toujours 5, 11 ou 14 cycles dans le mode de réalisation qui est représenté), en retardant les signaux dans trois ensembles de registres,
d'une manière similaire à celle représentée sur la figure 8a.
Les trois ensembles de sorties de registres de retard sont connectés à un multiplexeur (non représenté) qui est commandé
par les bits "Sélection de Retard" de l'instruction de micro-
programme courante, provenant du registre pipeline 206.
Grâce à l'utilisation de la logique de retard, une seule instruction de microprogramme qui déclenche un calcul dans l'unité arithmétique pipeline peut également commander
le cycle complet de cette unité.
Au cours d'une opération arithmétique caractéristi-
que, des données sont transmises à l'unité arithmétique pipe-
line 212 à partir du bloc de registres de MLV 214 ou du bloc
de registres de pile 216, dans l'ordre dans lequel elles ap-
paraissent. Pendant le traitement, les données passent par
l'unité arithmétique pipeline 212 sous la commande du micro-
séquenceur 204 et du circuit logique de retard 210, grâce à quoi l'unité arithmétique pipeline complète peut fonctionner à la manière d'un module auto-commandé et peut effectuer un calcul combiné complet, sans intervention supplémentaire du
micro-séquenceur 204.
Pour commencer le traitement de données, le micro-
séquenceur 204 du processeur géométrique provoque simultané-
ment l'émission d'une instruction de micro-programme d'unité arithmétique pipeline vers le circuit logique de retard 210, et le transfert des données à traiter sur le bus X et/ou le bus Y, pour commencer un calcul. Dans le Cycle Long ou le Cycle Abregé, le circuit logique de retard 210 transmet des signaux de commande à l'accumulateur 602 après sept cycles
d'horloge, de façon que des données soient présentes aux en-
trées de l'accumulateur au moment o les signaux de commande
* sont appliqués à l'accumulateur 602.
Dans le Cycle Long ou le Cycle Court, le circuit logique de retard 210 transmet des signaux de commande à l'UAL multifonction 604, au circuit de transformation 606, au tampon de bus Z 608 et/ou au compteur A ou au compteur B après le nombre exigé de cycles d'horloge (qui varie selon les fonctions accomplies), de façon que les données à traiter soient présentes aux entrées de ces dispositifs au moment o
les signaux de commande sont présents aux entrées des dispo-
sitifs considérés.
Dans tous ces cycles de traitement, les résultats
que produit l'unité arithmétique pipeline 212 deviennent va-
lides sur le bus Z après le nombre total final de cycles d'horloge nécessaires pour le cycle arithmétique complet. Le circuit logique de retard 210 émet une combinaison d'une adresse de destination de bloc de registres et d'un signal de validation d'écriture approprié au moment o les données
traitées sont présentes sur le bus Z. Ainsi, une seule ins-
truction de microprogramme peut commander la totalité du
chemin des données dans l'unité arithmétique pipeline, spéci-
fier la fonction arithmétique à mettre en oeuvre sur ces don-
nées, et spécifier la destination des résultats du calcul.
Le processus de parcours d'arbre Le processus de parcours d'arbre fait intervenir la
séquence d'opérations qui prélève des données dans la struc-
ture en arbre de la MLV, traite ces données et les visualise sur l'écran d'observation. Les deux sous-processus de base intervenant dans le parcours d'arbre qui sont accomplis par le processeur géométrique sont le processus d'élimination et
le traitement de face.
On entend par "élimination" un tri qui supprime des
objets graphiques invisibles et enregistre des objets graphi-
ques visibles dans une mémoire à structure de pile, dans le circuit de parcours d'arbre. On entend par "traitement de face" l'opération consistant à extraire les objets graphiques de la mémoire à structure de pile du processeur de parcours d'arbre, et à convertir les données pour chaque objet de la forme correspondant à des coordonnées tridimensionnelles à
celle correspondant à des coordonnées bidimensionnelles pon-
dérées, Ces processus sont décrits ci-après de façon plus dé-
taillée. 1. Le Processus d'élimination Le processus d'élimination détermine si un objet
est visible ou non dans une scène. En effectuant un test sim-
ple sur le volume de limitation qui entoure un segment, le
processeur géométrique peut déterminer si le volume de limi-
tation est complètement extérieur au volume d'observation défini (auquel cas le segment est éliminé et ne fait pas
l'objet d'un traitement ultérieur), ou complètement à l'inté-
rieur du volume d'observation (aucune opération de coupure ne doit alors être effectuée), ou rencontre un ou plusieurs plans de coupure (auquel cas des opérations de coupure doi-
vent être effectuées).
On peut également effectuer l'élimination en tra-
vaillant sur une taille minimale de la projection d'un volume de limitation. Si la taille correspondant à la projection sur l'écran d'un volume de limitation d'un segment est inférieure à un certain nombre défini de pixels, ce segment peut être éliminé. Lorsqu'un segment est éliminé, ce segment et tous
ses segments enfants ne font plus l'objet d'aucun traitement.
Ceci améliore considérablement l'efficacité du processeur géométrique dans des scènes dans lesquelles de grands nombres d'objets graphiques se trouvent à l'extérieur du volume d'observation. En résumé, le processus d'élimination commence par le segment racine dans la mémoire de liste de visualisation
116, qui est le segment de définition de fenêtre d'observa-
tion (c'est-à-dire que le premier segment contient dans son tampon d'élimination un paquet qui définit les paramètres de fenêtre d'observation courants). L'information de fenêtre d'observation comprend des termes de projection (champ
d'observation en perspective, taille de projection orthogona-
le, plans de coupure proche et lointain, etc), des termes de définition d'échelle sur l'écran (qui fixent la taille de l'image finale sur l'écran de visualisation), et des bits d'indicateurs. Les termes de projection sont enregistrés dans une matrice de transformation standard de dimensions
4 x 3.
Pour initialiser le traitement de parcours d'arbre et de face de la base de données qui est enregistrée dans la
MLV 116, le processeur de terminal 112 émet vers le proces-
seur de parcours d'arbre 132 une instruction "Démarrage de
Parcours" qui spécifie l'adresse de départ du segment de dé-
finition de fenêtre d'observation de l'arbre de liste de vi-
sualisation. Le processeur de parcours d'arbre 132 parcourt la liste de visualisation dans la MLV 116, en adressant sé- quentiellement les segments enchainés, conformément à un
algorithme de parcours préféré en ce qui concerne les seg-
ments frères, et il coordonne l'émission des paquets de tam-
pon d'élimination vers le processeur géométrique 136, par le
bus de MLV 134.
Le premier paquet du tampon d'élimination qui est émis vers le processeur géométrique contient les attributs de segment. Les attributs de segment qui ne sont pas définis localement dans le paquet d'attributs de segment peuvent étre"hérités", ce qui correspond à l'obtention des attributs de segment à partir des attributs du segment parent, qui ont été enregistrés précédemment dans le bloc de registres de
pile 216. Le processeur géométrique 136 enregistre un ensem-
ble d'attributs (définis localement ou hérités) dans le bloc de registres de sortie 220, en vue d'un transfert ultérieur vers le processeur de parcours d'arbre 132, par le bus de pile 138, si la détermination faite pendant le traitement
d'élimination du segment indique que ce dernier est visible.
En considérant la figure 2, on note que du fait que le seg-
ment de définition de fenêtre d'observation A ne comporte pas de segment parent, tous les attributs enregistrés dans le bloc de registres de sortie 220 pour le segment A sont définis localement dans le paquet d'attributs du tampon d'élimination pour le segment A. Le tampon d'élimination de chaque segment contient
également habituellement un paquet de matrice de transforma-
tion. Le paquet de transformation contient une matrice de transformation locale qui transforme les données de segment pour les faire passer du système de coordonnées local au système de coordonnées du segment parent. Dans le cas du segment de définition de fenêtre d'observation, la matricede transformation locale transforme le système de coordonnées terrestres en système de coordonnées oculaires de la fenêtre
d'observation définie.
Le processeur géométrique 136 effectue une concaté-
nation de matrices, qui multiplie la matrice de transforma-
tion locale par la matrice de transformation du segment pa-
rent qui a fait l'objet d'une concaténation antérieure. La matrice de transformation qui résulte de la concaténation est la "Matrice de Transformation Courante" qui transforme les données graphiques du segment de façon à les exprimer dans le système de coordonnées du segment de définition de fenêtre
d'observation. La Matrice de Transformation Courante est en-
registrée dans le bloc de registres de sortie 220, pour être transférée vers le processeur de parcours d'arbre 132 si le processus d'élimination détermine que la primitive graphique
du segment est visible.
Lorsque le processeur géométrique 136 reçoit le pa-
quet de fenêtre d'observation provenant du segment de défini-
tion de fenêtre d'observation, il enregistre la matrice de
pondération de fenêtre d'observation dans le bloc de regis-
tres de pile 216, et il enregistre les termes de définition d'échelle d'écran et les bits d'indicateurs dans le bloc de
registres de MLV 214. En outre, le paquet de fenêtre d'obser-
vation est émis vers le processeur de visualisation 140 par
le bus de système 118.
Il existe un paquet supplémentaire, appelé paquet de "source lumineuse", qui ne se trouve que dans le segment de fenêtre d'observation. Une source lumineuse, définie dans le système de coordonnées terrestres, est transformée pour
être exprimée dans le système de coordonnées oculaires pondé-
rées, par multiplication des coordonnées de la source lumi-
neuse par la Matrice de Transformation Courante, qui est en-
registrée dans le bloc de registres de sortie 220, et les
résultats sont sauvegardés.
Le dernier paquet de tampon d'élimination que le processeur de parcours d'arbre 32 émet vers le processeur géométrique 136 pour chaque segment est le paquet de volume de limitation. Lorsque le processeur géométrique 136 reçoit ce paquet, il commence à effectuer un test de visibilité pour déterminer si le volume de limitation du segment parent n'était pas totalement visible. Comme mentionné précédemment, le volume de limitation d'un segment englobe complètement la primitive graphique du segment et celles de tous les segments enfants du segment considéré. L'utilisation d'un tel volume
de limitation simplifie considérablement le test de visibili-
té. Pour effectuer le test de visibilité, le processeur géométrique fait passer par l'unité arithmétique pipeline 212 les coordonnées du volume de limitation des segments. L'UAL
multifonction 604 compare les coordonnées du volume de limi-
tation avec les coordonnées de fenêtre d'observation qui sont enregistrées dans les blocs de registres de travail 218 du processeur géométrique, et elle détermine si le segment est
visible, invisible ou partiellement visible.
Pour effectuer un test portant sur une taille mini-
male d'un volume de limitation, on calcule une approximation
de la taille du volume de limitation en déterminant le dia-
metre du volume, défini comme étant la distance entre les
deux premiers sommets, et en calculant la distance approxima-
tive du volume de limitation par rapport au point oculaire défini, en faisant la moyenne des valeurs de profondeur des deux sommets. Pour une projection en perspective, on divise
le diamètre par la distance de façon à obtenir une approxima-
tion de la taille du volume de limitation. Pour une projec-
tion orthogonale, on-considère que la taille du volume de li-
mitation est simplement le diamètre calculé. Si on détermine que la taille du volume de limitation est inférieure à une valeur d'entrée spécifiee, on considère que le segment n'est
pas visible.
Si on détermine que le volume défini par le volume de limitation est à l'intérieur du champ de vision défini par le paquet de définition de fenêtre d'observation, et si on détermine que la taille du volume de limitation est comprise dans un intervalle défini par l'utilisateur (c'est-à-dire que l'objet n'est ni trop grand ni trop petit), le processeur géométrique 136 active une ligne de signal "Objet Visible",
dirigée vers le processeur de parcours d'arbre 132, pour in-
diquer que l'objet qui est contenu dans le volume de limita-
tion est potentiellement visible. Du fait que le volume de limitation du segment englobe les primitives graphiques des segments enfants du segment courant, il n'est pas nécessaire de répéter le test de visibilité pour les segments enfants
d'un segment pour lequel on a déterminé que le volume de li-
mitation du segment était entièrement visible. Si au contrai-
re le volume de limitation est entièrement à l'extérieur du champ de vision, ou si la taille du volume de limitation
n'est pas comprise dans l'intervalle défini, la ligne de si-
gnal "Objet Visible" est restaurée. Ce dernier segment "in-
visible\' et tous ses segments enfants ne nécessitent pas un
traitement ultérieur.
Pendant que le processeur géométrique 136 traite les paquets d'élimination, le processeur de parcours d'arbre 132 enregistre le pointeur de segment enfant, le pointeur de tampon de données de primitive et un indicateur de "niveau
d'arbre" du bloc de commande de segment, dans la mémoire in-
terne à structure de pile du processeur de parcours d'arbre.
On appelle niveau d'arbre le niveau du segment dans la struc-
ture hiérarchisée. Ainsi, par exemple, des segments frères
ont le même niveau d'arbre.
Si le processeur géométrique 136 détermine que l'objet du segment est visible, le processeur de parcours
d'arbre 132 copie le mot d'indicateur, la matrice de trans-
formation soumise à concaténation, et les attributs de l'ob-
jet, de façon à les transférer du bloc de registres de sortie 220 vers sa mémoire à structure de pile, par le bus de pile 138. Si l'objet du segment sur lequel porte le processus
d'élimination est déterminé comme étant invisible, le proces-
seur de parcours d'arbre 132 applique un signal "Mémoire Chargée" au processeur géométrique 136, sans transférer les données, pour éviter un transfert de données inutiles. Ainsi, les attributs relatifs à des objets invisibles ne sont pas enregistrés dans la mémoire à structure de pile du processeur de parcours d'arbre. Du fait que les attributs relatifs à des objets invisibles ne sont pas enregistrés dans la mémoire à structure de pile, les segments correspondants ne font pas
l'objet d'un traitement ultérieur. Comme on l'expliquera ci-
après de façon plus détaillée, les données qui sont enregis-
trées dans la mémoire à structure de pile pour chaque segment
reconnu comme comportant des objets visibles, seront ulté-
rieurement retransférées vers le processeur géométrique 136 par le bus de pile 138, au moment du transfert des primitives
graphiques associées de la MLV 116 vers le processeur géomé-
trique 136.
Une fois que le tampon d'élimination d'un segment a été traité, le processeur de parcours d'arbre 132 passe à un autre segment de la liste de visualisation. Dans le mode de réalisation qui est représenté, le processeur de parcours d'arbre 132 utilise un procédé avec priorité au frère, dans lequel ce processeur traite le frère d'un segment avant de traiter l'enfant du segment. Si un segment ne comporte pas de frère, le processeur de parcours d'arbre traite ensuite le premier enfant du segment. Par exemple, en se reportant à la figure 2, on note que le segment de définition de fenêtre
d'observation A ne comporte aucun segment frère. Par consé-
quent, une fois que les données de tampon d'élimination du
segment A ont été traitées, le processeur de parcours d'ar-
bre 132 passe au premier segment enfant, c'est-à-dire le
segment B. Apres avoir transmis les paquets de tampon d'éli-
mination du segment B au processeur géométrique 136 en vue
de leur traitement, le processeur de parcours d'arbre 132 pas-
se au segment frère, c'est-à-dire le segment C, et il commence à diriger les paquets de tampon d'élimination du segment C vers le processeur géométrique 136. Le segment C ne comporte pas de segments frères supplémentaires et, par conséquent, le processeur de parcours d'arbre 132 passe au premier segment enfant, c'est-à-dire le segment F, si la détermination qui a
été faite indique que le volume de limitation du segment pa-
rent C contenant le cube 152 est visible. Le processeur de
parcours d'arbre 132 continue à parcourir l'arbre de cette ma-
nière, en envcyant les paquets de tampon d'élimination des segments frères F-K, dans l'ordre, au processeur géométrique
136, en vue de leur traitement.
Si un segment ne comporte aucun segment frère sup-
plémentaire, et ne comporte pas un segment enfant (ou si le volume de limitation du segment est invisible), le processeur de parcours d'arbre 132 commence à parcourir en sens inverse
les segments qui ont fait l'objet de la procédure d'élimina-
tion, et il commence donc le mode de traitement de face. Par
exemple, tous les segments frères du segment K ont été par-
courus lorsque le processeur de parcours d'arbre 132 atteint le segment K. Du fait que le segment K ne comporte aucun segment enfant, le mode d'élimination se termine au segment K. S'il a été déterminé que la face 6 (la primitive graphique du segment K) était visible, le processeur de parcours d'arbre 132 transfère la Matrice de Transformation Courante et des données d'attributs pour la face 6, du bloc de registres de
sortie 220 vers le bloc de registres de pile 216, et il com-
mence en outre à transférer les paquets de primitive graphique
du segment vers le processeur géométrique 136, par l'intermé-
diaire du bus de MLV 134, pour le traitement de face.
2. Traitement de face
Comme les paquets de tampon d'élimination, les pa-
quets de données de primitive sont enchainés par des poin-
teurs. Chaque paquet de données de primitive est copié dans la MLV 116 par le bus de MLV 134, pour être chargé dans le bloc de registres de MLV 214 du processeur géométrique 136. Le
processeur de parcours d'arbre 132 utilise l'adresse de poin-
teur de chaque paquet de données de primitive pour obtenir le paquet suivant dans le train de données. Un pointeur nul in- dique que le paquet de données de primitive présent est le
dernier paquet dans le train de données.
Le processeur géométrique 136 interprète le code
opération de chaque paquet de données de primitive, et il sé-
lectionne l'algorithme de traitement de face de paquet de pri-
mitive associé (comme on le décrira ci-après de façon plus dé-
taillée). Les algorithmes de traitement de face qui sont exé-
cutés dans le processeur géométrique 136 du mode de réalisa-
tion considéré transforment- des sommets (et des normales de sommets, en cas de représentation d'une grdation) en coordonnées d'écran, ils rejettent un polygone si la détermination qui est
faite indique que ce polygone fait face à une direction oppo-
see à l'observateur, et ils coupent chaque polygone visible de façon à le limiter aux frontières du champ de vision (plans de coupure), si nécessaire. De plus, le processeur géométrique 136 projette les sommets dans un plan d'image bidimensionnel, par un procédé de projection en perspective ou de projection
parallèle, et il pondère les sommets en conformité avec la fe-
nétre d'observation définie. Le processeur géométrique 136 accomplit le traitement de face en traitant un bord après l'autre, et lorsque les données relatives à chaque bord sont
complètes, elles sont transférées vers le processeur de visua-
lisation 140 par le bus de système 118, dans un format de pa-
quet de bord. Lorsqu'un paquet a subi un traitement de face,
le processeur géométrique 136 signale au processeur de par-
cours d'arbre 132 qu'il est capable d'accepter le paquet de données-de primitive suivant, en activant une ligne de signal
"Mémoire Disponible".
Une fois que le processeur géométrique 136 a indiqué qu'il était prêt pour le traitement de face du segment suivant, le processeur de parcours d'arbre 132 extrait de la position
supérieure de la mémoire à structure de pile les données d'at-
tributs et les données de matrice de transformation pour le segment visible suivant J, et il transfère ces données vers le bloc de registres de pile 216 du processeur géométrique 136,
par l'intermédiaire du bus de pile 138. Le processeur de par-
cours d'arbre 132 utilise le pointeur de tampon de données de primitive enregistré, provenant de la mémoire à structure de pile, pour adresser dans la MLV 116 les paquets de données de primitive pour le segment J, et pour les transmettre par le bus de MLV 134 vers le processeur géométrique 136, en vue du
traitement de face.
Pendant le parcours en sens inverse de la liste de visualisation, le processeur de parcours d'arbre 132 continue à remonter dans la suite des segments "visibles", à extraire de la mémoire à structure de pile les pointeurs de tampon de données, les matrices de transformation et les attributs, et à émettre les paquets de données de primitive et les données de pile correspondants vers le processeur géométrique 136, pour le traitement de face, jusqu'à la rencontre d'un segment
ayant un segment enfant "non parcouru". Comme mentionné pré-
cédemment, dans l'algorithme de parcours d'arbre avec priorité au frère, le processeur de parcours d'arbre 132 n'examine pas un pointeur d'enfant d'un segment si ce segment comporte un
pointeur de frère (et le segment enfant n'est donc pas parcou-
ru). Par conséquent, si pendant le parcours en sens inverse, le segment suivant en ligne qui doit être parcouru comporte un
segment enfant, et si le segment atteint dans le parcours in-
verse au moment considéré est le segment frère du segment sui-
vant à parcourir, le segment enfant n'a pas été parcouru au cours du parcours d'élimination antérieur. Lorsqu'un segment enfant non parcouru est rencontré, le processeur de parcours d'arbre 132 retourne au mode d'élimination, et il parcourt la
liste de visualisation en partant du segment enfant non par-
couru.
Par exemole, sur la fiqure 2, après l'application du traitement d'élimination au segment B, le processeur de
parcours d'arbre 132 passe au segment frère C au lieu de pas-
ser au segment enfant D, pendant le parcours initial. Pendant le parcours en sens inverse, les segments qui ont fait l'objet du processus d'élimination sont soumis au traitement de face
jusqu'à ce que le parcours en sens inverse ramène le proces-
seur de parcours d'arbre au segment C. Le traitement de face est terminé après le segment C, du fait que le segment suivant en ligne dans le parcours en sens inverse, c'est-à-dire le
segment B, comporte un segment enfant non parcouru, c'est-à-
dire le segment D. Le processeur de parcours d'arbre 132 re-
tourne alors au mode d'élimination, et le traitement de par-
cours et d'élimination commence au segment D.
La détection d'un segment enfant non parcouru s'ef-
fectue par l'examen de l'indicateur de niveau d'arbre du seg-
ment courant dans le parcours en sens inverse, et de l'indi-
cateur de niveau d'arbre du segment suivant dans la pile (c'est-à-dire le segment suivant en ligne auquel conduit le parcours en sens inverse). Si les deux niveaux d'arbre sont identiques (c'est-à-dire si les segments sont frères), et si le segment suivant dans la pile comporte un pointeur d'enfant
valide, ce segment enfant n'a pas été parcouru.
Le processeur de parcours d'arbre 132 continue à parcourir la liste de visualisation en sens direct et en sens inverse jusqu'à ce que chaque segment ait été éliminé ou ait subi un traitement de face. Le dernier paquet de données de primitive du segment de définition de fenêtre d'observation contient une primitive de "Fin de Parcours". Le processeur de
parcours d'arbre émet en dernier vers le processeur géométri-
que les paquets de données de primitive relatifs au segment
de fenêtre d'observation. Ainsi, la primitive de Fin de Par-
cours sera le dernier paquet transféré vers le processeur géométrique 136. Le processeur géométrique 136 émet à son tour la primitive de Fin de Parcours inchangée vers le processeur de visualisation 140, par le bus de système 118. Le processeur de visualisation 140 commence alors le traitement d'écran et
il émet une interruption vers le processeur de terminal 112.
3. Algorithmes de traitement de face Comme indiqué ci-dessus, le traitement de segments se poursuit pendant le processus d'élimination, jusqu'à ce que
le processeur de parcours d'arbre 132 y mette fin. A cet ins-
tant, le processeur de parcours d'arbre renvoie vers le pro-
cesseur géométrique les segments qui n'ont pas été éliminés, en vue du traitement des données de primitive. Dans cette
phase, le premier paquet qui est émis vers le processeur géo-
métrique 136 pour chaque segment est le paquet d'Inversion de Matrice qui est enregistré dans le bloc de registres de MLV 214. Le processeur géométrique examine le paquet d'Inversion de Matrice pour déterminer si la base de données contient des polygones qui ont des côtés envers à rejeter, ou une source de lumière qui créera des gradations.SiLl'une ou l'autre de ces
conditions est réalisée, une matrice de transformation inver-
sée est calculée dans l'unité arithmétique pipeline 212 et
elle est enregistrée dans le bloc de registres de travail 218.
La réception du paquet'd'Inversion de Matrice indique égale-
ment au processeur géométrique 136 que le traitement de face a commencé et que le processeur géométrique doit avoir dans son bloc de registres de pile 216 un nouveau paquet qui a subi le traitement d'élimination. En utilisant des signaux
d'établissement de liaison sur le bus de pile 138, le proces-
seur géométrique 136 détermine qu'il a reçu à partir du pro-
cesseur de parcours d'arbre 132 le nouveau paquet qui a subi
le traitement d'élimination.
Une fois que le processeur géométrique a reçu un nouveau paquet ayant subi le traitement d'élimination, et que le paquet est chargé dans le bloc de registres de pile 216,
le processeur géométrique émet le paquet de définition de seg-
ment vers le processeur de visualisation 140. Ce paquet défi-
nit les couleurs, les types de traits et les bits de valida-
tion pour tous les éléments de données dans le segment.
Le paquet d'Inversion de Matrice contient également deux bits d'indicateurs, à savoir le bit "Inversion" et le bit "Rotation de Lumière". Si le bit "Inversion" est instauré, le processeur géométrique calcule la matrice inverse transpo- sée pour des vecteurs de normales à des polygones. Si le bit "Rotation de Lumière" est instauré, le processeur géométrique fait tourner le vecteur de lumière pour le faire passer du système de coordonnées oculaires au système de coordonnées de modèle. On effectue ceci en calculant l'inverse de la Matrice
de Transformation Courante. En d'autres termes, pour trans-
former des coordonnées d'un point de façon à les faire passer
d'un système de coordonnées de modèle au système de coordon-
nées oculaires, on utilise une matrice de transformation ré-
sultant d'une concaténation, et pour la transformation inver-
se, on utilise l'inverse de la matrice de transformation ré-
sultant de la concaténation.
On utilise une simplification dans le mode de réali-
sation considéré. La fonction d'Inversion de Matrice exige de
calculer le déterminant de la Matrice de Transformation Cou-
rante, et de diviser chaque terme par le déterminant. Dans le mode de réalisation qui est représenté, la pondération des
points transformes n'est pas importante. Le calcul du détermi-
nant et le processus de division ne sont pas nécessaires, puisqu'ils effectuent simplement une nouvelle pondération de
la matrice de transformation inverse.
Pour calculer l'inverse de la Matrice de Transforma-
tion Courante, on utilise la partie supérieure de dimensions 3 x 3 de la matrice de transformation qui est présente dans le
* bloc de registres de pile 216. On calcule ensuite d'une maniè-
re mathématique classique les neuf cofacteurs de cette matri-
ce. La matrice inverse modifiée "M" est la transposée des co-
facteurs, de la manière suivante: -
COO Cil C12 C01l C1l1 C21
C02 C12 C22
On peut ensuite utiliser cette matrice de transfor-
mation inversée "M" pour multiplier le vecteur de source de lumière afin de calculer le vecteur de lumière dans le système de coordonnées de modèle. On peut sauvegarder en vue d'une
utilisation ultérieure, pour calculer des normales de polygo-
nes, la transposée "TM" de la matrice "M".
Après le paquet d'Inversion de Matrice, viennent les données de primitive. Dans le mode de réalisation préféré, il y a deux types de polygones tridimensionnels, c'est-a-dire
les polygones avec gradation d'intensité lumineuse et les po-
lygones sans gradation. Il y a également deux types de primi-
tives supplémentaires qui peuvent être associées au polygone, et qu'on appelle des primitives de "trou avec gradation" et
de "trou sans gradation".
Pour des polygones tridimensionnels, le premier pa-
quet comprend trente-deux mots et contient trois ou quatre sommets dans le mode de réalisation considéré. Des polygones
comportant plus de quatre sommets se continuent dans des pa-
quets suivants de seize mots, contenant un ou deux sommets chacun. Pour des polygones sans gradation d'intensité, le
premier paquet comprend seize mots et contient trois sommets.
Des sommets supplémentaires se trouvent dans des paquets sui-
vants. Le processeur géométrique enregistre la zone de compte de mots du mot d'indicateur de paquet dans le registre de compte de mots224, et il l'utilise pour déterminer le nombre
de sommets dans un paquet.
Le micro-séquenceur 204 introduit dans le registre de code opération 222 le code opération provenant de chaque paquet de données. Les codes opérations qui se trouvent dans le paquet de données identifient l'algorithme de traitement
de face pour chaque type de primitive. Le processeur géomé-
trique utilise ensuite l'unité arithmétique pipeline 212 pour calculer les coordonnées bidimensionnelles des points ou des sommets de chaque primitive, en plaçant les résultats finals
de chaque calcul dans le bloc de registres de sortie 220.
A l'exception d'un test d'Elimination de Face Ar-
rière et d'un calcul de coefficients de plans de profondeur, qui sont effectués au début du traitement d'un polygone, le processeur géométrique 136 traite les polygones un sommet à la fois, sans enregistrer une liste intermédiaire de sommets de polygone. Le processeur géométrique accomplit entièrement le traitement relatif à un sommet et il émet des données de
bord vers le processeur de visualisation 140 (si c'est possi-
ble), avant de revenir en arrière pour traiter le sommet de
polygone suivant.
Un test d'Elimination de Face Arrière est effectué pour chaque paquet de données de primitive. Dans ce but, le premier sommet d'un polygone est transformé par la Matrice de Transformation Courante. Ensuite, le vecteur de normale au polygone est transformé par la matrice inversée transposée "TM" (qui a été calculée au moment de la réception du code opération d'Inversion de Matrice). Le résultat est normalisé,
et le vecteur de normale polygone avant rotation est sauve-
gardé pour une utilisation éventuelle ultérieure. Le produit
scalaire du premier sommet transformé et du vecteur de norma-
le transformé est ensuite calculé, et si le résultat est po-
sitif, le sommet se trouve du côté "arrière" du polygone. Si l'indicateur d'Elimination de Face Arrière est instauré pour
le segment, le traitement du polygone est immédiatement ar-
rêté. Si le résultat est positif et si l'indicateur d'Elimi-
nation de Face Arrière n'est pas instauré, un indicateur de Présence de Face Arrière est instauré, et la valeur changée
de signe du produit scalaire est sauvegardée pour une utili-
sation ultérieure dans le calcul de coefficients de plans de profondeur. Si le produit scalaire est négatif, le sommet se
trouve à l'avant du polygone, et la valeur du produit scalai-
re est sauvegardée pour une utilisation ultérieure dans le
calcul des coefficients de plans de profondeur.
Ensuite, on calculeles coefficients de plans de pro-
fondeur qui expriment la profondeur d'un point quelconque d'un polygone sous la forme d'une fonction "f" des coordonnées d'écran X et Y du point. Si le gradient X calculé ou le gra- dient Y calculé est supérieur à un (ce qui indique que la face
du polygone aura une largeur inférieure à un pixel), le poly-
gone est rejeté et le traitement pour ce segment est terminé.
L'étape suivante dans le mode de réalisation préféré consiste à transformer chaque sommet du polygone au moyen de
la Matrice de Transformation Courante. On peut ensuite calcu-
ler l'intensité de chaque sommet. Dans le mode de réalisation préféré, toutes les intensités sont normalisées dans la plage
allant de zéro (intensité minimale) à un (intensité maximale).
L'éclairage ambiant pour un objet graphique est enregistré dans le paquet de définition de fenêtre d'observation sous la
forme d'un terme"Ia". Pour calculer l'intensité de chaque som-
met en ce qui concerne l'éclairage produit par une source lu-
mineuse "n", on calcule la relation suivante: Isommet = Ia + Irn* (1 + cos9)/2 dans laquelle: Irn = (1 - Ia)*Iln = l'intensité maximale réfléchie produite par la source lumineuse "n", Iln = l'intensité de la source lumineuse "n", et
9 est l'angle entre la source lumineuse et le som-
met. La valeur de Isommet va de zéro à un, et elle est limitée à un si des sources lumineuses multiples produisent
des intensités qui dépassent cette plage.
Il y a trois cas de gradation d'intensité possibles, basés sur les options de gradation qui sont en fonction. Si
aucune gradation n'est en fonction pour un segment, les va-
leurs d'intensité pour chaque sommet sont fixées à zéro. Si
la gradation plane, ou à facettes, est en fonction, les va-
leurs d'intensité pour tous les sommets d'un polygone seront
les mêmes. On utilise le modèle de gradation d'intensité dé-
crit ci-dessus. On génère le terme "cos9" en calculant le produit scalaire du vecteur de normale au polygone et du
vecteur de source lumineuse. On doit calculer ce produit sca-
laire avec les deux vecteurs exprimés dans un système de coordonnées commun. Si on le calcule dans un système de coor-
données de modèle, on doit sauvegarder la normale au polygone
avant rotation (avant le test d'Elimination de Face Arrière).
Si la gradation d'intensité progressive (encore
appelée gradation de "Gouraud") est en fonction pour le seg-
ment, les valeurs d'intensité de tous les sommets d'un poly-
gone ne seront généralement pas les mêmes. On utilise à nou-
veau le modèle de gradation décrit ci-dessus. On génère le
terme "cos@" pour chaque sommet en calculant le produit sca-
laire du vecteur de normale au sommet et du vecteur de source lumineuse. On effectue ceci dans le système de coordonnées de modèle, en utilisant la normale au sommet sans rotation et le vecteur de source lumineuse dans le modèle qui a été calculé au moment de la réception du code opération d'Inversion de
Matrice.
L'étape suivante qu'accomplit le processeur géomé-
trique est l'opération de coupure, dans laquelle chaque point définissant un polygone est comparé avec des plans de coupure définis préalablement. Le fait de couper le polygone avec les plans de coupure droit, gauche, supérieur et/ou inférieur peut former des pseudo-bords, qui sont marqués avec un bit
de "pseudo-bord". Ceci indiquera au processeur de visualisa-
tion 140 de ne pas intensifier les pseudo-bords.
Un sommet se propagera dans les algorihtmes de plans de coupure et pourra donner lieu ou non à la sortie
d'un point coupé pour le plan de coupure final. Si les algo-
rithmes-de coupure ne présentent aucun point en sortie, le sommet d'entrée suivant est prélevé. S'il existe un point de sortie de la procédure de plans de coupure, le processeur
géométrique passe à l'étape suivante, qui est une projection.
Si le type de projection est la projection en perspective, les valeurs de X et Y de chaque point sont divisées par la valeur
Z pour ce point.
A l'étape suivante du mode de réalisation préféré, les coordonnées X et Y sont pondérées et soumises à une trans- lation par les termes de définition d'échelle d'écran et de translation, conformément aux équations suivantes: Xecr = XinkXechecr + Xtransecr Yecr = Yin*Yechecr + Ytransecr "Xecr" désigne la valeur de X sur l'écran après que la valeur X d'origine ("Xin") a été multipliée par une valeur
de pondération de définition d'échelle ("Xechecr") et addi-
tionnée à une valeur de translation ("Xtransecr"). Le terme
"Yecr" est défini de façon similaire.
Les données transformées sont ensuite assemblées en un paquet de bord pour être transférées vers le processeur de visualisation 140. Dans ce processus de définition de format, on forme un bord pour chaque paire de sommets, et on détermine
des points supérieur et inférieur. On peut instaurer des in-
dicateurs pour indiquer si le bord est un bord droit, un bord gauche ou un bord horizontal. Chaque paquet de bord pour une paire de sommets comprend les coordonnées du pixel d'écran qui constitue la projection du sommet supérieur du bord, ainsi que la valeur exacte de la coordonnée X de la première ligne de la trame de balayage de l'écran de visualisation que rencontre le bord. Le paquet de données contient également la pente du bord, exprimée en pixels par ligne de trame, et la variation d'intensité le long du bord, exprimée en variation d'intensité
par ligne de trame. Il contient également la valeur de grada-
tion d'intensité, ou le modificateur d'intensité de la couleur
du polygone, en fonction des sources lumineuses, au sommet su-
périeur. Lorsque chaque paquet de bord a été calculé, il est
émis vers le processeur de visualisation.
On calcule un gradient d'intensité à partir de trois points non alignés dans le polygone. Si les trois premiers points sont alignés, on teste les points allant du second au quatrième, et ainsi de suite, jusqu'à ce qu'on trouve trois points non alignés. Si on ne peut pas trouver trois points non alignés, on rejette le polygone. Si on trouve trois points non alignés, on calcule le gradient d'intensité dans la direction X de la manière suivante: ds/dx = [(S2(Y3 - Y1) + S1(Y2 - Y3) + S3 (Y1
- Y2)1/[X2(Y3 - Y1) + X1(Y2 - Y3) +
X3(Y1 - Y2)3
Si la face de polygone qui est traitée est une face
arrière, l'indicateur de Présence de Face Arrière est instau-
ré dans le paquet de visualisation, et un paquet de gradient
d'intensité de polygone est émis vers le processeur de visua-
lisation 140.

Claims (9)

REVENDICATIONS
1. Circuit électronique de processeur géométrique
(136) prévu pour l'utilisation dans un système de visualisa-
tion graphique (100), caractérisé en ce qu'il comprend: (a) des moyens d'élimination (136) connectés à une première mé- moire (116) qui enregistre des segments de données graphiques qui représentent des objets tridimensionnels, pour comparer avec des valeurs présélectionnées, dans une première phase de traitement, certaines au moins des données de chaque segment
se trouvant dans la première mémoire (116), afin de détermi-
ner si chaque segment contient des données graphiques qui se trouvent au moins partiellement à l'intérieur d'un volume d'observation défini; (b) des moyens de transfert connectés aux moyens d'élimination (136) pour transmettre les segments sélectionnés vers une seconde mémoire; et (c) des moyens de
transformation (136) destinés à recevoir les segments sélec-
tionnés retournant de la seconde mémoire, dans une seconde phase de traitement, à transformer les données graphiques
contenues dans les segments sélectionnés, pour les faire pas-
ser d'une représentation tridimensionnelle à une représenta-
tion bidimensionnelle, et à transférer les données graphiques transformées vers un système de visualisation (140) pour la visualisation.
2. Processeur géométrique électronique programmable
(136), prévu pour l'utilisation dans un système de visualisa-
tion graphique (100) qui comprend une mémoire de base de don-
nées (116) destinée à enregistrer des segments de données
graphiques qui représentent des objets tridimensionnels à vi-
sualiser, et qui contient des codes opérations concernant les objets, des premiers moyens de traitement (112) destinés à écrire des segments de données graphiques dans la mémoire
(116), des seconds moyens de traitement (132) qui fonction-
nent sous la dépendance des premiers moyens de traitement (112) en prélevant séquentiellement des données graphiques enregistrées dans la mémoire (116), et des troisièmes moyens de traitement (140) destinés à accepter des données graphiques traitées provenant du processeur géométrique (136), en vue de leur visualisation sur un dispositif de visualisation (126),
caractérisé en ce qu'il comprend: (a) une structure de regis-
tres d'entrée (214) connectée à la mémoire (116) par un bus de mémoire spécialisé (134), pour enregistrer temporairement des données graphiques prélevées dans la mémoire par les seconds moyens de traitement (132); (b) une structure de registres
tampons (216) connectée aux seconds moyens de traitement (132)-
par un bus de pile spécialisé (138), pour enregistrer en tam-
pon des données transférées entre les seconds moyens de trai-
tement (132) et le processeur géométrique (136); (c) un mo-
dule arithmétique pipeline (212), connecté aux structures de registres d'entrée (214) et tampons (216), pour traiter de
façon mathématique des données graphiques enregistrées tempo-
rairement dans la structure de registres d'entrée (214) ou
dans la structure de registres tampons (216); (d) une struc-
ture de registres de sortie (220) connectée au module arithmé-
tique pipeline (212) et à la structure de registres tampons (214), pour enregistrer temporairement l'information de sortie
du module arithmétique pipeline (212); et (e) un micro-con-
trôleur (204), connecté aux premiers et troisièmes moyens de
traitement (112, 140) par un bus de système (118), aux regis-
tres d'entrée, tampons et de sortie (214, 216, 220), et au module arithmétique pipeline (212), pour accepter une séquence d'instructions de traitement provenant des premiers moyens de traitement (112), pour enregistrer les instructions dans une mémoire d'instructions (202), et pour exécuter sélectivement les instructions sous la dépendance des codes opérations qui sont enregistrés dans chaque segment de données graphiques,
pour: (1) sélectionner dans la structure de registres d'en-
trée (214), et transférer temporairement vers les seconds moyens de traitement (132), par le bus de pile (138), pendant
une première phase de traitement, les seuls segments qui con-
tiennent des données qui se trouvent au moins partiellement à l'intérieur d'un volume d'observation défini, (2) accepter
pendant une seconde phase de traitement les segments sélec-
tionnés provenant des seconds moyens de traitement (132) par le bus de pile (138), et des données graphiques associées provenant de la mémoire, prélevées par les seconds moyens de traitement (132) par l'intermédiaire du bus de mémoire (134), et transformer les données graphiques d'une représentation tridimensionnelle en une représentation bidimensionnelle, et (3) transférer les données graphiques transformées vers les troisièmes moyens de traitement (140), par le bus de système
(118), pour la visualisation.
3. Processeur géométrique selon la revendication 2, caractérisé en ce que les structures de registres sont des
structures en tampons double.
4. Processeur géométrique selon la revendication 2, caractérisé en ce qu'il comprend en outre une structure de
registres intermédiaires (218), connectée à l'entrée du mo-
dule arithmétique pipeline (212) et à la structure de regis-
tres de sortie (220), pour enregistrer temporairement des valeurs de calculs intermédiaires pendant le traitement de
données graphiques, et pour transférer sélectivement des va-
leurs de calculs intermédiaires vers le module arithmétique
pipeline (212) pour un traitement ultérieur.
5. Processeur géométrique selon la revendication 2, caractérisé en ce que le module arithmétique pipeline (212) consiste en un pipeline de calcul dont la configuration peut
être modifiée de façon dynamique, qui comprend: (a) un cir-
cuit multiplicateur (600) connecté aux entrées du module arithmétique pipeline, pour multiplier deux nombres d'entrée;
(b) un circuit accumulateur (602), connecté au circuit multi-
plicateur (600), pour additionner une suite de produits pro-
venant du circuit multiplicateur (600); (c) une unité arith-
métique et logique multifonction (604), connectée aux entrées
du module arithmétique pipeline (212) et à la sortie du cir-
cuit accumulateur (602), pour travailler sélectivement sur des données d'entrée ou sur la somme de sortie du circuit accumulateur (602); (d) un circuit de transformation par approximation linéaire (606), connecté à la sortie du circuit accumulateur (602), pour travailler sélectivement sur la somme de sortie du circuit accumulateur (602); et (e) un circuit tampon de bus (608), connecté à la sortie du circuit accumulateur (602), pour appliquer sélectivement la somme de
sortie du circuit accumulateur (602) à la structure de re-
gistres de sortie (220).
6. Processeur géométrique selon la revendication 2, caractérisé en ce qu'il comprend en outre un circuit logique
de retard (210) connecté au micro-contrôleur (204) et au mo-
dule arithmétique pipeline (212), pour retarder sélectivement la transmission de parties d'instructions vers le module arithmétique pipeline (212), afin de la faire coïncider avec
le traitement de données dans ce module.
7. Processeur géométrique électronique programmable
(136) prévu pour l'utilisation dans un système de visualisa-
tion graphique (100) qui comprend une mémoire de base de don-
nées (116) destinée à enregistrer des segments de données
graphiques qui représentent des objets tridimensionnels à vi-
sualiser, et qui contiennent des codes opérations concernant les objets, des premiers moyens de traitement (112) destinés à écrire des segments de données graphiques dans la mémoire
(116), des seconds moyens de traitement (132) qui fonction-
nent sous la dépendance des premiers moyens de traitement
(112) de façon à prélever séquentiellement des données gra-
phiques enregistrées dans la mémoire (116), et des troisièmes moyens de traitement (140), destinés à accepter des données graphiques traitées provenant du processeur géométrique (136), pour la visualisation sur un dispositif de visualisation (126), caractérisé en ce qu'il comprend: (a) une structure
de registres d'entrée du type en tampon double (214), connec-
tée à la mémoire (116) par un bus de mémoire spécialisé (134),
pour enregistrer temporairement des données graphiques préle-
vées dans la mémoire par les seconds moyens de traitement (132); (b) une structure de registres tampons du type en
tampon double (216) connectée aux seconds moyens de traite-
ment (132) par un bus de pile spécialisé (138), pour enre-
gistrer en tampon des données qui sont transférées entre les
seconds moyens de traitement (132) et le processeur géomé-
trique (136); (c) un module arithmétique pipeline (212),
connecté aux structures de registres d'entrée et de regis-
tres tampons (214, 216), pour traiter de façon mathématique des données graphiques qui sont enregistrées temporairement
dans la structure de registres d'entrée (214) ou la structu-
re de registres tampons (216); (d) une structure de regis-
tres de sortie du type en tampon double (220), connectée au
module arithmétique pipeline (212) et à la structure de re-
gistres tampons (216), pour enregistrer temporairement l'in-
formation de sortie du module arithmétique pipeline (212);
(e) une structure de registres intermédiaires (218), connec-
tée au module arithmétique pipeline (212) et à la structure
de registres de sortie (220), pour enregistrer temporaire-
ment des valeurs de calculs intermédiaires pendant le trai-
tement de données graphiques; (f) un micro-contrôleur (204), connecté aux premiers et troisièmes moyens de traitement
(112, 140) par un bus de système (118), aux registres d'en-
trée, tampons et de sortie (214, 216, 220), et au module arithmétique pipeline (212), pour accepter une séquence d'instructions de traitement provenant des premiers moyens de traitement (112), enregistrer les instructions dans une mémoire d'instructions (202), et exécuter sélectivement les instructions sous la dépendance des codes opérations qui sont enregistrés dans chaque segment de données graphiques, pour: (1) sélectionner à partir de la structure de registres d'entrée (214) et transférer temporairement vers les seconds moyens de traitement (132), par le bus de pile (138), pendant
une première phase de traitement, les seuls segments conte-
nant des données qui se trouvent au moins partiellement à l'intérieur d'un volume d'observation défini, (2) accepter
pendant une seconde phase de traitement les segments sélec-
tionnés provenant des seconds moyens de traitement (132) par le bus de pile (138), et des données graphiques associées provenant de la mémoire (116), qui sont prélevées par les seconds moyens de traitement (132), par l'intermédiaire du bus de mémoire (134), et transformer les données graphiques d'une représentation tridimensionnelle en une représentation bidimensionnelle, et (3) transférer les données graphiques transformées vers les troisièmes moyens de traitement (140),
par le bus de système (118), pour la visualisation.
8. Processeur géométrique selon la revendication 7, caractérisé en ce que le module arithmétique pipeline (212) consiste en un pipeline de calcul dont la configuration peut
être modifiée de façon dynamique, qui comprend: (a) un cir-
cuit multiplicateur (600) connecté aux entrées du module arithmétique pipeline, pour multiplier deux nombres d'entrée;
(b) un circuit accumulateur (602), connecté au circuit multi-
plicateur (600), pour additionner une suite de produits pro-
venant du circuit multiplicateur (600); (c) une unité arith-
métique et logique multifonction (604), connectée aux entrées
du module arithmétique pipeline (212) et à la sortie du cir-
cuit accumulateur (602), pour travailler sélectivement sur des données d'entrée ou sur la somme de sortie du circuit accumulateur (602); (d) un circuit de transformation par approximation linéaire (606), connecté à la sortie du circuit accumulateur (602), pour travailler sélectivement sur la somme de sortie du circuit accumulateur (602); et (e) un circuit tampon de bus (608), connecté à la sortie du circuit accumulateur (602), pour appliquer sélectivement la somme de
sortie du circuit accumulateur (602) à la structure de regis-
tres de sortie (220).
9. Processeur géométrique selon la revendication 7, caractérisé en ce qu'il comprend en outre un circuit logique
de retard (210) connecté au micro-contrôleur (204) et au mo-
dule arithmétique pipeline (212), pour retarder sélectivement la transmission de parties d'instructions vers le module arithmétique pipeline (212), afin de la faire coïncider avec
le traitement de données dans ce module.
FR8702636A 1986-03-07 1987-02-27 Processeur geometrique pour un systeme d'infographie Withdrawn FR2595486A1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/838,300 US4862392A (en) 1986-03-07 1986-03-07 Geometry processor for graphics display system

Publications (1)

Publication Number Publication Date
FR2595486A1 true FR2595486A1 (fr) 1987-09-11

Family

ID=25276760

Family Applications (1)

Application Number Title Priority Date Filing Date
FR8702636A Withdrawn FR2595486A1 (fr) 1986-03-07 1987-02-27 Processeur geometrique pour un systeme d'infographie

Country Status (5)

Country Link
US (1) US4862392A (fr)
JP (1) JPS62212785A (fr)
DE (1) DE3706509A1 (fr)
FR (1) FR2595486A1 (fr)
GB (1) GB2187615B (fr)

Families Citing this family (158)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4974198A (en) * 1986-07-16 1990-11-27 Nec Corporation Vector processing system utilizing firm ware control to prevent delays during processing operations
US5053989A (en) * 1986-08-27 1991-10-01 Minolta Camera Kabushiki Kaisha Digital image processing apparatus having a microprogram controller for reading microinstructions during a vacant period of the image processing circuit
JPH01102541A (ja) * 1987-10-16 1989-04-20 Toshiba Corp 放射線画像装置
GB2214037A (en) * 1987-12-18 1989-08-23 Ibm Solid modelling system
US5185813A (en) * 1988-01-19 1993-02-09 Kabushiki Kaisha Toshiba Document image processing apparatus
US5714977A (en) 1988-02-24 1998-02-03 Quantel Limited Video processing system for movement simulation
JPH0690042B2 (ja) * 1988-05-13 1994-11-14 本田技研工業株式会社 自走車の位置制御装置
GB2267803B (en) * 1989-01-13 1994-03-02 Sun Microsystems Inc Hardware implementation of clipping and inter-coordinate comparison logic
US5297240A (en) * 1989-01-13 1994-03-22 Sun Microsystems, Inc. Hardware implementation of clipping and intercoordinate comparison logic
US5058042A (en) * 1989-04-03 1991-10-15 Hewlett-Packard Company Method for employing a hierarchical display list in global rendering
GB8908612D0 (en) * 1989-04-17 1989-06-01 Quantel Ltd Video graphics system
US5175863A (en) * 1989-10-23 1992-12-29 International Business Machines Corporation Signal data processing system having independently, simultaneously operable alu and macu
US5182797A (en) * 1989-10-23 1993-01-26 International Business Machines Corporation Multi-processor graphics display system for displaying hierarchical data structures
US5249265A (en) * 1989-10-24 1993-09-28 International Business Machines Corporation Structure storage management in a graphics display device
US5327243A (en) * 1989-12-05 1994-07-05 Rasterops Corporation Real time video converter
US5222204A (en) * 1990-03-14 1993-06-22 Hewlett-Packard Company Pixel interpolation in perspective space
JPH04222049A (ja) * 1990-03-16 1992-08-12 Hewlett Packard Co <Hp> 属性データ記憶及びグラフィックスパイプラインアクセスを可能にするデータストリーム集信装置
US5226109A (en) * 1990-04-26 1993-07-06 Honeywell Inc. Three dimensional computer graphic symbol generator
CA2050658C (fr) * 1990-09-14 1997-01-28 John M. Peaslee Commutation de canaux et de contextes dans un processeur graphique
US5329615A (en) * 1990-09-14 1994-07-12 Hughes Aircraft Company Concurrent general purpose and DMA processing in a graphics rendering processor
US5276798A (en) * 1990-09-14 1994-01-04 Hughes Aircraft Company Multifunction high performance graphics rendering processor
JP3093247B2 (ja) * 1990-09-21 2000-10-03 株式会社東芝 プレゼンテーション支援環境システム
ATE208071T1 (de) * 1990-11-30 2001-11-15 Sun Microsystems Inc Verfahren und gerät zur darstellung von grafischen bildern
JP2824342B2 (ja) * 1991-03-29 1998-11-11 富士通株式会社 イメージ高速描画装置
US5347619A (en) * 1991-04-30 1994-09-13 International Business Machines Corporation Nonconvex polygon identifier
US5414801A (en) * 1991-06-11 1995-05-09 Virtus Corporation Computerized method and apparatus using containment relationships to represent objects in a three-dimensional space, and for moving therethrough
US5313577A (en) * 1991-08-21 1994-05-17 Digital Equipment Corporation Translation of virtual addresses in a computer graphics system
GB2259432A (en) * 1991-09-06 1993-03-10 Canon Res Ct Europe Ltd Three dimensional graphics processing
JP3359634B2 (ja) * 1991-10-10 2002-12-24 ヒューレット・パッカード・カンパニー 境界内更新を備えたグラフィックス出力システム
DE69130958T2 (de) * 1991-10-10 1999-07-01 Hewlett Packard Co Graphisches ausgangs-system und -verfahren.
US5388841A (en) 1992-01-30 1995-02-14 A/N Inc. External memory system having programmable graphics processor for use in a video game system or the like
JP2755039B2 (ja) * 1992-05-12 1998-05-20 日本電気株式会社 レジスタ・アクセス制御方式
US5261029A (en) * 1992-08-14 1993-11-09 Sun Microsystems, Inc. Method and apparatus for the dynamic tessellation of curved surfaces
GB2271259A (en) * 1992-10-02 1994-04-06 Canon Res Ct Europe Ltd Processing image data
GB2271260A (en) * 1992-10-02 1994-04-06 Canon Res Ct Europe Ltd Processing image data
GB2271261A (en) * 1992-10-02 1994-04-06 Canon Res Ct Europe Ltd Processing image data
US5367632A (en) * 1992-10-30 1994-11-22 International Business Machines Corporation Flexible memory controller for graphics applications
US5404437A (en) * 1992-11-10 1995-04-04 Sigma Designs, Inc. Mixing of computer graphics and animation sequences
GB9303009D0 (en) * 1993-02-15 1993-03-31 Canon Res Ct Europe Ltd Processing image data
EP0612027B1 (fr) * 1993-02-15 2002-11-13 Canon Kabushiki Kaisha Traitement d'image
US5872570A (en) * 1993-02-15 1999-02-16 Canon Kabushiki Kaisha Method and apparatus for use in generating a rendering order for use in rendering images
GB9315852D0 (en) * 1993-07-30 1993-09-15 Video Logic Ltd Shading three-dimensional images
EP0722589B1 (fr) * 1993-10-06 1999-01-20 Honeywell Inc. Processeur graphique virtuel et procedure pour systemes d'affichage en temps reel integres
US5732262A (en) * 1994-01-31 1998-03-24 International Business Machines Corporation Database definition language generator
US5598576A (en) * 1994-03-30 1997-01-28 Sigma Designs, Incorporated Audio output device having digital signal processor for responding to commands issued by processor by emulating designated functions according to common command interface
US5515107A (en) * 1994-03-30 1996-05-07 Sigma Designs, Incorporated Method of encoding a stream of motion picture data
JPH0816820A (ja) * 1994-04-25 1996-01-19 Fujitsu Ltd 3次元アニメーション作成装置
US5528309A (en) 1994-06-28 1996-06-18 Sigma Designs, Incorporated Analog video chromakey mixer
JP3603285B2 (ja) * 1994-07-21 2004-12-22 株式会社セガ 画像処理装置
US5613049A (en) * 1994-10-26 1997-03-18 The Boeing Company Method for creating spatially balanced bounding volume hierarchies for use in a computer generated display of a complex structure
US5559941A (en) * 1994-10-26 1996-09-24 Brechner; Eric L. Method for smoothly maintaining a vertical orientation during computer animation
ES2141392T3 (es) * 1994-10-26 2000-03-16 Boeing Co Metodo para controlar el nivel del detalle presentado en un visualizador de pantalla generado por ordenador de una estructura compleja.
US5790881A (en) * 1995-02-07 1998-08-04 Sigma Designs, Inc. Computer system including coprocessor devices simulating memory interfaces
US5826043A (en) * 1995-06-07 1998-10-20 Ast Research, Inc. Docking station with serially accessed memory that is powered by a portable computer for identifying the docking station
US5657479A (en) * 1995-12-04 1997-08-12 Silicon Graphics, Inc. Hierarchical display list processing in graphics data retrieval system
US5694532A (en) * 1996-01-26 1997-12-02 Silicon Graphics, Inc. Method for selecting a three-dimensional object from a graphical user interface
US5719511A (en) * 1996-01-31 1998-02-17 Sigma Designs, Inc. Circuit for generating an output signal synchronized to an input signal
US6128726A (en) * 1996-06-04 2000-10-03 Sigma Designs, Inc. Accurate high speed digital signal processor
US5818468A (en) * 1996-06-04 1998-10-06 Sigma Designs, Inc. Decoding video signals at high speed using a memory buffer
US6104842A (en) * 1996-06-10 2000-08-15 Integrated Device Technology, Inc. Geometry processing of digital video models and images
US6057857A (en) * 1996-06-12 2000-05-02 Citrix Systems, Inc. Method for the lossless compression of lines in a distributed computer system
US5771392A (en) * 1996-06-20 1998-06-23 Mathsoft, Inc. Encoding method to enable vectors and matrices to be elements of vectors and matrices
US6115047A (en) * 1996-07-01 2000-09-05 Sun Microsystems, Inc. Method and apparatus for implementing efficient floating point Z-buffering
US6104658A (en) * 1996-08-08 2000-08-15 Neomagic Corporation Distributed DRAM refreshing
US5877780A (en) * 1996-08-08 1999-03-02 Lu; Hsuehchung Shelton Semiconductor chip having multiple independent memory sections, at least one of which includes simultaneously accessible arrays
US6230235B1 (en) 1996-08-08 2001-05-08 Apache Systems, Inc. Address lookup DRAM aging
US6209020B1 (en) * 1996-09-20 2001-03-27 Nortel Networks Limited Distributed pipeline memory architecture for a computer system with even and odd pids
US6184902B1 (en) 1997-04-30 2001-02-06 Hewlett-Packard Company Centralized branch intelligence system and method for a geometry accelerator
US5956047A (en) * 1997-04-30 1999-09-21 Hewlett-Packard Co. ROM-based control units in a geometry accelerator for a computer graphics system
US5930519A (en) * 1997-04-30 1999-07-27 Hewlett Packard Company Distributed branch logic system and method for a geometry accelerator
US6195105B1 (en) * 1998-03-24 2001-02-27 Ati Technologies, Inc. Method and apparatus for improved concurrent video graphic processing
KR100298789B1 (ko) * 1998-04-29 2001-09-06 윤종용 그래픽 처리에 있어서 클리핑 처리방법
US6195739B1 (en) * 1998-06-29 2001-02-27 Cisco Technology, Inc. Method and apparatus for passing data among processor complex stages of a pipelined processing engine
US6836838B1 (en) 1998-06-29 2004-12-28 Cisco Technology, Inc. Architecture for a processor complex of an arrayed pipelined processing engine
US6509905B2 (en) * 1998-11-12 2003-01-21 Hewlett-Packard Company Method and apparatus for performing a perspective projection in a graphics device of a computer graphics display system
US6489955B1 (en) 1999-06-07 2002-12-03 Intel Corporation Ray intersection reduction using directionally classified target lists
JP2001075772A (ja) * 1999-06-29 2001-03-23 Mitsubishi Electric Corp 画像表示装置および画像表示方法
US7161690B1 (en) * 1999-08-18 2007-01-09 Texas Instruments Incorporated Method for enhancing rendering of picture elements
JP2003512685A (ja) * 1999-10-18 2003-04-02 フラウンホーファー−ゲゼルシャフト ツール フエルデルング デア アンゲヴァンテン フォルシュング エー.ファオ. 大ボリュームデータ量の実時間レンダリング方法
US6411301B1 (en) 1999-10-28 2002-06-25 Nintendo Co., Ltd. Graphics system interface
US6452600B1 (en) 1999-10-28 2002-09-17 Nintendo Co., Ltd. Graphics system interface
US6618048B1 (en) 1999-10-28 2003-09-09 Nintendo Co., Ltd. 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US7050064B2 (en) * 1999-11-24 2006-05-23 Nintendo Co., Ltd. Method and apparatus for displaying higher color resolution on a hand-held LCD device
US6573900B1 (en) * 1999-12-06 2003-06-03 Nvidia Corporation Method, apparatus and article of manufacture for a sequencer in a transform/lighting module capable of processing multiple independent execution threads
US7257328B2 (en) 1999-12-13 2007-08-14 Finisar Corporation System and method for transmitting data on return path of a cable television system
US6857061B1 (en) 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6859862B1 (en) 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6789112B1 (en) 2000-05-08 2004-09-07 Citrix Systems, Inc. Method and apparatus for administering a server having a subsystem in communication with an event channel
US6922724B1 (en) 2000-05-08 2005-07-26 Citrix Systems, Inc. Method and apparatus for managing server load
US6785713B1 (en) 2000-05-08 2004-08-31 Citrix Systems, Inc. Method and apparatus for communicating among a network of servers utilizing a transport mechanism
US6785726B1 (en) 2000-05-08 2004-08-31 Citrix Systems, Inc. Method and apparatus for delivering local and remote server events in a similar fashion
US20020029285A1 (en) 2000-05-26 2002-03-07 Henry Collins Adapting graphical data, processing activity to changing network conditions
US7119813B1 (en) 2000-06-02 2006-10-10 Nintendo Co., Ltd. Variable bit field encoding
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in a graphics system
US7002591B1 (en) 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US6609977B1 (en) 2000-08-23 2003-08-26 Nintendo Co., Ltd. External interfaces for a 3D graphics system
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US7196710B1 (en) 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US6664958B1 (en) 2000-08-23 2003-12-16 Nintendo Co., Ltd. Z-texturing
US6606689B1 (en) 2000-08-23 2003-08-12 Nintendo Co., Ltd. Method and apparatus for pre-caching data in audio memory
US6999100B1 (en) 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
US7134960B1 (en) * 2000-08-23 2006-11-14 Nintendo Co., Ltd. External interfaces for a 3D graphics system
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6867781B1 (en) 2000-08-23 2005-03-15 Nintendo Co., Ltd. Graphics pipeline token synchronization
US7184059B1 (en) 2000-08-23 2007-02-27 Nintendo Co., Ltd. Graphics system with copy out conversions between embedded frame buffer and main memory
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6664962B1 (en) 2000-08-23 2003-12-16 Nintendo Co., Ltd. Shadow mapping in a low cost graphics system
US6937245B1 (en) 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US6639595B1 (en) 2000-08-23 2003-10-28 Nintendo Co., Ltd. Achromatic lighting in a graphics system and method
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US6980218B1 (en) 2000-08-23 2005-12-27 Nintendo Co., Ltd. Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
US6580430B1 (en) 2000-08-23 2003-06-17 Nintendo Co., Ltd. Method and apparatus for providing improved fog effects in a graphics system
US6697074B2 (en) 2000-11-28 2004-02-24 Nintendo Co., Ltd. Graphics system interface
US7003588B1 (en) 2001-08-22 2006-02-21 Nintendo Co., Ltd. Peripheral devices for a video game system
US7725036B2 (en) * 2002-02-12 2010-05-25 Finisar Corporation Efficient transmission of digital return path data in cable television return path
US8156535B2 (en) * 2002-02-12 2012-04-10 Finsar Corporation Data rate compression device for cable television return path using bandpass puncturing
US7751718B2 (en) * 2002-02-12 2010-07-06 Finisar Corporation Efficient transmission of digital return path data in cable television return path
US8671213B2 (en) 2002-03-14 2014-03-11 Citrix Systems, Inc. Methods and apparatus for generating graphical and media displays at a client
US7376695B2 (en) 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session
US7012604B1 (en) * 2002-09-12 2006-03-14 Advanced Micro Devices, Inc. System architecture for high speed ray tracing
US7689128B2 (en) * 2002-10-30 2010-03-30 Finisar Corporation Return path transmitter with extended digital processing circuitry
US20070204122A1 (en) * 2004-04-04 2007-08-30 Guobiao Zhang Multimedia Three-Dimensional Memory (M3DM) System
JP2005301904A (ja) * 2004-04-15 2005-10-27 Mitsubishi Electric Corp 住所データベースおよびこれを用いた住所検索システム
US7765576B2 (en) * 2004-05-12 2010-07-27 Finsiar Corporation Changing communication mode in a CATV pathway using mute commands
US7519078B2 (en) * 2004-05-12 2009-04-14 Finisar Corporation Automated ethernet configuration of CATV network
US8032916B2 (en) * 2004-05-12 2011-10-04 Finisar Corporation Single master clock control of Ethernet data transfer over both a cable TV return path and an Ethernet forward path
US8860722B2 (en) * 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US7280112B1 (en) * 2004-05-14 2007-10-09 Nvidia Corporation Arithmetic logic unit temporary registers
US8687010B1 (en) 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
US8711155B2 (en) * 2004-05-14 2014-04-29 Nvidia Corporation Early kill removal graphics processing system and method
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US8171169B2 (en) 2005-03-14 2012-05-01 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment
US8423673B2 (en) 2005-03-14 2013-04-16 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment using compression
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8599208B2 (en) * 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US8775777B2 (en) * 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US8314803B2 (en) * 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US20090046105A1 (en) * 2007-08-15 2009-02-19 Bergland Tyson J Conditional execute bit in a graphics processor unit pipeline
US8736624B1 (en) 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications
US8310494B2 (en) * 2008-09-30 2012-11-13 Apple Inc. Method for reducing graphics rendering failures
US9001157B2 (en) * 2009-03-25 2015-04-07 Nvidia Corporation Techniques for displaying a selection marquee in stereographic content
US9053562B1 (en) 2010-06-24 2015-06-09 Gregory S. Rabin Two dimensional to three dimensional moving image converter
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9336555B1 (en) 2012-10-19 2016-05-10 Google Inc. Record-time optimization of display lists
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations
US9992021B1 (en) 2013-03-14 2018-06-05 GoTenna, Inc. System and method for private and point-to-point communication between computing devices
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US9390058B2 (en) 2013-09-24 2016-07-12 Apple Inc. Dynamic attribute inference
US9367309B2 (en) * 2013-09-24 2016-06-14 Apple Inc. Predicate attribute tracker
US20170330371A1 (en) * 2014-12-23 2017-11-16 Intel Corporation Facilitating culling of composite objects in graphics processing units when such objects produce no visible change in graphics images

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4181953A (en) * 1978-02-17 1980-01-01 The Singer Company Face vertex correction for real-time simulation of a polygon face object system
NL8300872A (nl) * 1983-03-10 1984-10-01 Philips Nv Multiprocessor-rekenmachinesysteem voor het tot een gekleurde afbeelding verwerken van in een hierarchische datastruktuur gedefinieerde objekt-elementen.
US4609917A (en) * 1983-01-17 1986-09-02 Lexidata Corporation Three-dimensional display system
US4625290A (en) * 1983-11-02 1986-11-25 University Of Florida Apparatus and method for producing a three-dimensional display on a video display device
US4694404A (en) * 1984-01-12 1987-09-15 Key Bank N.A. High-speed image generation of complex solid objects using octree encoding

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
COMMUNICATIONS OF THE ACM, vol. 19, no. 10, octobre 1976, pages 547-554, Université de Californie à Sante Cruz; J.H. CLARK; "Hierarchical Geometric Models for Visible surface algorithms" *
IBM TECHNICAL DISCLOSURE BULLETIN, vol. 25, no. 5, octobre 1982, pages 2508-2509, New York, US; A.S. MURPHY: "Graphic correlate improvement" *
LA RECHERCHE, vol. 15, no. 153, mars 1984, pages 342-351, Paris, FR; C. MECHOULAM: "La simulation du pilotage" *

Also Published As

Publication number Publication date
US4862392A (en) 1989-08-29
GB2187615B (en) 1990-04-04
GB8704601D0 (en) 1987-04-01
DE3706509A1 (de) 1987-09-10
GB2187615A (en) 1987-09-09
JPS62212785A (ja) 1987-09-18

Similar Documents

Publication Publication Date Title
FR2595486A1 (fr) Processeur geometrique pour un systeme d&#39;infographie
US11288857B2 (en) Neural rerendering from 3D models
CN109313470B (zh) 利用重新投影的锐利文本绘制
EP3179448B1 (fr) Rendu par fovéation
US20220101604A1 (en) Learning-based 3d model creation apparatus and method
CN110969685B (zh) 使用渲染图的可定制渲染管线
FR2542470A1 (fr) Systeme de machine a calculer a multiprocesseur pour convertir des elements-objets definis dans une structure de donnees hierarchique en une representation visuelle coloree
US11328481B2 (en) Multi-resolution voxel meshing
US20080255945A1 (en) Producing image data representing retail packages
CA2322702A1 (fr) Systeme de visualisation d&#39;images tridimensionnelles realistes virtuelles en temps reel
EP1214689B1 (fr) Procede et dispositif permettant de rendre une image avec refraction
US9754398B1 (en) Animation curve reduction for mobile application user interface objects
WO2020219177A1 (fr) Rendu efficace de mailles à haute densité
US20220156887A1 (en) Kernel reshaping-powered splatting-based efficient image space lens blur
CN111161398A (zh) 一种图像生成方法、装置、设备及存储介质
CN115908753B (zh) 一种全身人体网格表面重建方法及相关装置
US10888777B2 (en) Deep learning from real world and digital exemplars
US20220012860A1 (en) Methods and apparatus to synthesize six degree-of-freedom views from sparse rgb-depth inputs
EP2987319A1 (fr) Procede de generation d&#39;un flux video de sortie a partir d&#39;un flux video large champ
CN113240720A (zh) 一种三维表面重建方法、装置、服务器以及可读存储介质
US20190265644A1 (en) Apparatus and method for providing mapping pseudo-hologram using individual video signal output
Gourley Pattern-vector-based reduction of large multimodal data sets for fixed-rate interactivity during visualization of multiresolution models
CN117011492B (zh) 图像渲染方法、装置、电子设备及存储介质
CN110148077A (zh) 一种加速elbp-ip核的方法及mr智能眼镜
CN112541535B (zh) 基于互补的多分支深度学习进行三维点云分类方法

Legal Events

Date Code Title Description
TP Transmission of property
ST Notification of lapse