Pipeline graphique
 Tout Structures de données Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Macros
Fonctions membres publiques | Fonctions membres publiques statiques | Champs de données
Référence de la classe Pipeline

Classe de gestion du pipeline. Plus de détails...

#include <Pipeline.h>

Graphe de collaboration de Pipeline:
Collaboration graph

Fonctions membres publiques

 Pipeline (int sx=600, int sy=600, bool dothread=true)
 Pipeline::Pipeline(int sx,int sy) Constructeur du pipeline, par defaut : Culling desactiver Cliping Activer CCW Desactiver View Point et Maille desactiver View Remplissage activer. Plus de détails...
 
 ~Pipeline ()
 Destructeur. Plus de détails...
 
void setViewPoint (bool var)
 Pipeline::setViewPoint(bool var) Slot permetant de changer la vue du Pipeline en desactivant ou activant l'affichage des point. Plus de détails...
 
void setViewMaille (bool var)
 Pipeline::setViewMaille(bool var) Slot permetant de changer la vue du Pipeline en desactivant ou activant l'affichage du maillage. Plus de détails...
 
void setViewRemplisage (bool var)
 Pipeline::setViewRemplisage(bool var) Slot permetant de changer la vue du Pipeline en desactivant ou activant l'affichage du remplisage. Plus de détails...
 
void setCulling (bool var)
 Pipeline::setCulling(bool var) Slot permetant de changer si le pipeline utilise le culling. Plus de détails...
 
void setCliping (bool var)
 Pipeline::setCliping(bool var) Slot permetant de changer si le pipeline utilise le cliping. Plus de détails...
 
void SetVertexBuffer (unsigned int VBsz, void *VB, unsigned int VSstride)
 Pipeline::SetVertexBuffer(unsigned int VBsz, void *VB, unsigned int VSstride) Permet de definir le vertex buffer qui est un tableau de point. Plus de détails...
 
void SetIndexBuffer (unsigned int IBsz, unsigned int *IB)
 Pipeline::SetIndexBuffer(unsigned int IBsz, unsigned int *IB) Permet de definir le vertex buffer qui est un tableau de int definisant quels point prendre. Plus de détails...
 
void SetShader (ShaderBase *VS)
 Pipeline::SetShader(ShaderBase *VS) Permet de definir le shader qui sera utiliser pour le traitement. Plus de détails...
 
unsigned char * getDisplay ()
 Pipeline::getDisplay() Permet de recuperer le tableau de unsigned char du buffer de rendu. Plus de détails...
 
ShaderBasegetShader ()
 
void DrawTriangles ()
 Pipeline::DrawTriangles() Lance l'execution du pipeline ! Il commence par envoiyer 3 sommet au vertex shader puis ensuite passe les sommet transformer a l'asemblage des Facette. Plus de détails...
 
void AsemblageFacette (Sommet *somettransformer, bool debug=false)
 Pipeline::AsemblageFacette(Sommet *somettransformer) Prend les facete et regarde si on peut les éliminer car non visible puis passe les sommet a la discretisation. Plus de détails...
 
void DiscretisationFacette (Sommet *somettransformer, FaceteEcran *facette)
 Pipeline::DiscretisationFacette(Sommet *somettransformer) Discretise les facette dans le plan de l'écran pour cela il utilise 2 fonction : -drawLine Trace une ligne entre les 3 point -Remplissage Remplis la facette. Plus de détails...
 
bool IsOffScreen (int x, int y)
 Pipeline::IsOffScreen(int x, int y) Permet de savoir si un point est a l'exterieur de la zone visible. Plus de détails...
 
void ClearRenderTarget (defColor::color Couleur)
 Pipeline::ClearRenderTarget(defColor::color Couleur) Permet de remplir l'image de buffer avec une couleur uni choisis. Plus de détails...
 
void ClearZBuffer (float Zmax=FLT_MAX)
 Pipeline::ClearZBuffer(float Zmax) Permet de remplir le ZBuffer avec la valeur Zmax a toute les cordonner. Plus de détails...
 
void SaveRenderTarget (std::string fichier)
 Pipeline::SaveRenderTarget(std::string name) Sauvegarde le resultat du rendu dans un fichier. Plus de détails...
 
void SaveZBuffer (std::string name)
 Pipeline::SaveZBuffer(std::string name) Sauvegarde le contenu du Zbuffer sous la forme d'une image en niveau de gris. Plus de détails...
 

Fonctions membres publiques statiques

static void threadRemplissage (Pipeline *monpipeline, Sommet *somettransformer, FaceteEcran *facette)
 
static void drawLineNaif (Sommet *somettransformer, Pipeline *monpipeline, FaceteEcran *facette, bool debug=false)
 Pipeline::drawLineNaif(Sommet *somettransformer, FaceteEcran *facette,rgb color, bool debug) Permet de tracer une ligne entre 2 sommet en utilisant la methode naive Une fois les point definit il envoie le resultat les coordonner a l'operation de pixel. Plus de détails...
 
static void drawLine (Sommet *somettransformer, Pipeline *monpipeline, FaceteEcran *facette, bool debug=false)
 Pipeline::drawLine(Sommet *somettransformer, FaceteEcran *facette,rgb color, bool debug) Permet de tracer une ligne entre 2 sommet en utilisant la methode Bressenham Une fois les point definit il envoie le resultat les coordonner a l'operation de pixel. Plus de détails...
 
static void Remplissage (Sommet *somettransformer, Pipeline *monpipeline, FaceteEcran *facette, bool debug=false)
 Pipeline::Remplissage(Sommet *somettransformer, FaceteEcran *facette,rgb color, bool debug) Parmet de remplir une facette avec l'algorythme naif Une fois les point definit il envoie le resultat les coordonner a l'operation de pixel. Plus de détails...
 
static void OperationPixel (coord2d P, Pipeline *monpipeline, Sommet *somettransformer, FaceteEcran *facette, bool debug=false)
 Pipeline::OperationPixel(coord2d P,Sommet *somettransformer,FaceteEcran *facette,rgb color, bool debug) Permet de remplir un pixel sur l'ecran, il l'envoie au pixel shader pour calculer sa couleur final et l'ecrit sur le buffer. Plus de détails...
 

Champs de données

int sizeX
 Taille en x de la fenêtre de rendu. Plus de détails...
 
int sizeY
 Taille en y de la fenêtre de rendu. Plus de détails...
 
rgb backgroundcolor
 
void * VertexBuffer
 Pointeur vers le tableau de sommets. Plus de détails...
 
unsigned int * IndexBuffer
 Pointeur vers le tableau d'index. Plus de détails...
 
unsigned int VertexBufferSize
 Taille en octet du tableau de sommets (en octets). Plus de détails...
 
unsigned int IndexBufferSize
 Taille en octet du tableau d'index. Plus de détails...
 
ShaderBaseshader
 Pointeur vers une classe shader. Plus de détails...
 
void * VSconst
 
void * PSconst
 
unsigned int VSstride
 
unsigned int PSstride
 
float * zBuffer
 
rgbDisplay
 
bool DoCull
 
bool DoClip
 
bool DoCCW
 
bool Dothread
 
bool viewPoint
 
bool viewMaille
 
bool viewRemplisage
 
std::vector< std::thread > m_thread
 
std::vector< std::mutex * > m_mutex
 
unsigned int nbMAXthread
 

Description détaillée

Classe de gestion du pipeline.

Définition à la ligne 11 du fichier Pipeline.h.

Documentation des constructeurs et destructeur

Pipeline::Pipeline ( int  sx = 600,
int  sy = 600,
bool  dothread = true 
)

Pipeline::Pipeline(int sx,int sy) Constructeur du pipeline, par defaut : Culling desactiver Cliping Activer CCW Desactiver View Point et Maille desactiver View Remplissage activer.

Paramètres
sxLargeur de l'image
syHauteur de l'image

Définition à la ligne 14 du fichier Pipeline.cpp.

Références Display, DoCCW, DoClip, DoCull, Dothread, m_mutex, nbMAXthread, sizeX, sizeY, viewMaille, viewPoint, viewRemplisage, et zBuffer.

Pipeline::~Pipeline ( )

Destructeur.

Pipeline::~Pipeline() Destructeur du pipeline, suprimme tout les object allouer dynamiquement.

Définition à la ligne 47 du fichier Pipeline.cpp.

Références Display, m_mutex, et zBuffer.

Documentation des fonctions membres

void Pipeline::AsemblageFacette ( Sommet somettransformer,
bool  debug = false 
)

Pipeline::AsemblageFacette(Sommet *somettransformer) Prend les facete et regarde si on peut les éliminer car non visible puis passe les sommet a la discretisation.

Paramètres
somettransformerSommet transformer par le vertex shader

FACETE VISIBLE ?

Définition à la ligne 176 du fichier Pipeline.cpp.

Références DiscretisationFacette(), DoClip, DoCull, IsOffScreen(), Sommet::pos, FaceteEcran::print(), sizeX, sizeY, FaceteEcran::som1, FaceteEcran::som2, FaceteEcran::som3, point::x, Math::vecteur4d::x, point::y, et Math::vecteur4d::y.

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

void Pipeline::ClearRenderTarget ( defColor::color  Couleur)

Pipeline::ClearRenderTarget(defColor::color Couleur) Permet de remplir l'image de buffer avec une couleur uni choisis.

Paramètres
CouleurCouleur avec lequelle on va reset la buffer

Définition à la ligne 794 du fichier Pipeline.cpp.

Références defColor::color::b, rgb::b, Display, defColor::color::g, rgb::g, defColor::color::r, rgb::r, sizeX, et sizeY.

Voici le graphe des appelants de cette fonction :

void Pipeline::ClearZBuffer ( float  Zmax = FLT_MAX)

Pipeline::ClearZBuffer(float Zmax) Permet de remplir le ZBuffer avec la valeur Zmax a toute les cordonner.

Paramètres
Zmaxvaleur avec laquelle on va remplir le ZBuffer

Définition à la ligne 818 du fichier Pipeline.cpp.

Références sizeX, sizeY, et zBuffer.

Voici le graphe des appelants de cette fonction :

void Pipeline::DiscretisationFacette ( Sommet somettransformer,
FaceteEcran facette 
)

Pipeline::DiscretisationFacette(Sommet *somettransformer) Discretise les facette dans le plan de l'écran pour cela il utilise 2 fonction : -drawLine Trace une ligne entre les 3 point -Remplissage Remplis la facette.

Paramètres
somettransformerSommet transformer par le vertex shader

Définition à la ligne 292 du fichier Pipeline.cpp.

Références Dothread, drawLine(), m_thread, nbMAXthread, OperationPixel(), Remplissage(), FaceteEcran::som1, FaceteEcran::som2, FaceteEcran::som3, threadRemplissage(), viewMaille, viewPoint, viewRemplisage, point::x, et point::y.

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

void Pipeline::drawLine ( Sommet somettransformer,
Pipeline monpipeline,
FaceteEcran facette,
bool  debug = false 
)
static

Pipeline::drawLine(Sommet *somettransformer, FaceteEcran *facette,rgb color, bool debug) Permet de tracer une ligne entre 2 sommet en utilisant la methode Bressenham Une fois les point definit il envoie le resultat les coordonner a l'operation de pixel.

Paramètres
somettransformerListe des sommet dans la plan 3D
facetteListe des point des 3 sommet sur l'ecran
colorCouleur du tracé sur lecran
debugAffiche tout un tas d'information (false par defaut)

Définition à la ligne 422 du fichier Pipeline.cpp.

Références OperationPixel(), point::print(), FaceteEcran::som1, FaceteEcran::som2, FaceteEcran::som3, point::x, et point::y.

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

void Pipeline::drawLineNaif ( Sommet somettransformer,
Pipeline monpipeline,
FaceteEcran facette,
bool  debug = false 
)
static

Pipeline::drawLineNaif(Sommet *somettransformer, FaceteEcran *facette,rgb color, bool debug) Permet de tracer une ligne entre 2 sommet en utilisant la methode naive Une fois les point definit il envoie le resultat les coordonner a l'operation de pixel.

Paramètres
somettransformerListe des sommet dans la plan 3D
facetteListe des point des 3 sommet sur l'ecran
colorCouleur du tracé sur lecran
debugAffiche tout un tas d'information (false par defaut)

Définition à la ligne 343 du fichier Pipeline.cpp.

Références OperationPixel(), point::print(), FaceteEcran::som1, FaceteEcran::som2, FaceteEcran::som3, point::x, et point::y.

Voici le graphe d'appel pour cette fonction :

void Pipeline::DrawTriangles ( )

Pipeline::DrawTriangles() Lance l'execution du pipeline ! Il commence par envoiyer 3 sommet au vertex shader puis ensuite passe les sommet transformer a l'asemblage des Facette.

Définition à la ligne 139 du fichier Pipeline.cpp.

Références AsemblageFacette(), Dothread, IndexBuffer, IndexBufferSize, m_thread, shader, VertexBuffer, et ShaderBase::VertexShader().

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

unsigned char * Pipeline::getDisplay ( )

Pipeline::getDisplay() Permet de recuperer le tableau de unsigned char du buffer de rendu.

Renvoie
Pointeur vers la tableau de l'image final

Définition à la ligne 809 du fichier Pipeline.cpp.

Références Display.

Voici le graphe des appelants de cette fonction :

ShaderBase* Pipeline::getShader ( )
inline

Définition à la ligne 79 du fichier Pipeline.h.

Voici le graphe des appelants de cette fonction :

bool Pipeline::IsOffScreen ( int  x,
int  y 
)

Pipeline::IsOffScreen(int x, int y) Permet de savoir si un point est a l'exterieur de la zone visible.

Paramètres
xCoordonner x du point
yCoordonner y du point
Renvoie
Vrai si le point est hors de l'écran

Définition à la ligne 781 du fichier Pipeline.cpp.

Références sizeX, et sizeY.

Voici le graphe des appelants de cette fonction :

void Pipeline::OperationPixel ( coord2d  P,
Pipeline monpipeline,
Sommet somettransformer,
FaceteEcran facette,
bool  debug = false 
)
static

Pipeline::OperationPixel(coord2d P,Sommet *somettransformer,FaceteEcran *facette,rgb color, bool debug) Permet de remplir un pixel sur l'ecran, il l'envoie au pixel shader pour calculer sa couleur final et l'ecrit sur le buffer.

Paramètres
PPoint sur l'ecran que l'on veut paindre
somettransformerListe des sommet dans la plan 3D
facetteListe des point des 3 sommet sur l'ecran
colorCouleur du pixel sur l'écran
debugAffiche tout un tas d'information (false par defaut)

Définition à la ligne 735 du fichier Pipeline.cpp.

Références pixelOUT::col, Display, Dothread, pixelIN::facette, IsOffScreen(), m_mutex, pixelIN::P, ShaderBase::PixelShader(), Math::coord2d::print(), shader, sizeX, pixelIN::sommet, Math::coord2d::x, Math::coord2d::y, zBaricentrique(), et zBuffer.

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

void Pipeline::Remplissage ( Sommet somettransformer,
Pipeline monpipeline,
FaceteEcran facette,
bool  debug = false 
)
static

Pipeline::Remplissage(Sommet *somettransformer, FaceteEcran *facette,rgb color, bool debug) Parmet de remplir une facette avec l'algorythme naif Une fois les point definit il envoie le resultat les coordonner a l'operation de pixel.

Paramètres
somettransformerListe des sommet dans la plan 3D
facetteListe des point des 3 sommet sur l'ecran
colorCouleur du tracé sur lecran
debugAffiche tout un tas d'information (false par defaut)

Définition à la ligne 588 du fichier Pipeline.cpp.

Références OperationPixel(), FaceteEcran::print(), FaceteEcran::som1, FaceteEcran::som2, FaceteEcran::som3, swap, point::x, et point::y.

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

void Pipeline::SaveRenderTarget ( std::string  name)

Pipeline::SaveRenderTarget(std::string name) Sauvegarde le resultat du rendu dans un fichier.

Paramètres
nameNom ou chemin du fichier

Définition à la ligne 907 du fichier Pipeline.cpp.

Références Display, PpmWrite(), sizeX, et sizeY.

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

void Pipeline::SaveZBuffer ( std::string  name)

Pipeline::SaveZBuffer(std::string name) Sauvegarde le contenu du Zbuffer sous la forme d'une image en niveau de gris.

Paramètres
nameNom ou chemin du fichier

Définition à la ligne 871 du fichier Pipeline.cpp.

Références max, PgmWrite(), sizeX, sizeY, et zBuffer.

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

void Pipeline::setCliping ( bool  var)

Pipeline::setCliping(bool var) Slot permetant de changer si le pipeline utilise le cliping.

Paramètres
varActiver ou Desactiver

Définition à la ligne 129 du fichier Pipeline.cpp.

Références DoClip.

Voici le graphe des appelants de cette fonction :

void Pipeline::setCulling ( bool  var)

Pipeline::setCulling(bool var) Slot permetant de changer si le pipeline utilise le culling.

Paramètres
varActiver ou Desactiver

Définition à la ligne 120 du fichier Pipeline.cpp.

Références DoCull.

Voici le graphe des appelants de cette fonction :

void Pipeline::SetIndexBuffer ( unsigned int  IBsz,
unsigned int *  IB 
)

Pipeline::SetIndexBuffer(unsigned int IBsz, unsigned int *IB) Permet de definir le vertex buffer qui est un tableau de int definisant quels point prendre.

Paramètres
IBsztaille totale du tableau d'indices (en octets)
IBpointe sur le tableau d'indice

Définition à la ligne 850 du fichier Pipeline.cpp.

Références IndexBuffer, et IndexBufferSize.

Voici le graphe des appelants de cette fonction :

void Pipeline::SetShader ( ShaderBase VS)

Pipeline::SetShader(ShaderBase *VS) Permet de definir le shader qui sera utiliser pour le traitement.

Paramètres
VSPointeur vers le Shader

Définition à la ligne 861 du fichier Pipeline.cpp.

Références shader.

Voici le graphe des appelants de cette fonction :

void Pipeline::SetVertexBuffer ( unsigned int  VBsz,
void *  VB,
unsigned int  VSstride 
)

Pipeline::SetVertexBuffer(unsigned int VBsz, void *VB, unsigned int VSstride) Permet de definir le vertex buffer qui est un tableau de point.

Paramètres
VBsztaille totale du tableau des sommets (en octets)
VBpointeur sur le tableau de sommets.
VSstridetaille de la structure d'entrée (i.e. celle stockée dans le tableau de sommets)

Définition à la ligne 836 du fichier Pipeline.cpp.

Références VertexBuffer, VertexBufferSize, et VSstride.

Voici le graphe des appelants de cette fonction :

void Pipeline::setViewMaille ( bool  var)

Pipeline::setViewMaille(bool var) Slot permetant de changer la vue du Pipeline en desactivant ou activant l'affichage du maillage.

Paramètres
varActiver ou Desactiver

Définition à la ligne 99 du fichier Pipeline.cpp.

Références viewMaille.

Voici le graphe des appelants de cette fonction :

void Pipeline::setViewPoint ( bool  var)

Pipeline::setViewPoint(bool var) Slot permetant de changer la vue du Pipeline en desactivant ou activant l'affichage des point.

Paramètres
varActiver ou Desactiver

Définition à la ligne 90 du fichier Pipeline.cpp.

Références viewPoint.

Voici le graphe des appelants de cette fonction :

void Pipeline::setViewRemplisage ( bool  var)

Pipeline::setViewRemplisage(bool var) Slot permetant de changer la vue du Pipeline en desactivant ou activant l'affichage du remplisage.

Paramètres
varActiver ou Desactiver

Définition à la ligne 110 du fichier Pipeline.cpp.

Références viewRemplisage.

Voici le graphe des appelants de cette fonction :

void Pipeline::threadRemplissage ( Pipeline monpipeline,
Sommet somettransformer,
FaceteEcran facette 
)
static

Définition à la ligne 57 du fichier Pipeline.cpp.

Références drawLine(), OperationPixel(), Remplissage(), FaceteEcran::som1, FaceteEcran::som2, FaceteEcran::som3, viewMaille, viewPoint, viewRemplisage, point::x, et point::y.

Voici le graphe d'appel pour cette fonction :

Voici le graphe des appelants de cette fonction :

Documentation des champs

rgb Pipeline::backgroundcolor

Définition à la ligne 16 du fichier Pipeline.h.

rgb* Pipeline::Display

Définition à la ligne 46 du fichier Pipeline.h.

bool Pipeline::DoCCW

Définition à la ligne 51 du fichier Pipeline.h.

bool Pipeline::DoClip

Définition à la ligne 50 du fichier Pipeline.h.

bool Pipeline::DoCull

Définition à la ligne 49 du fichier Pipeline.h.

bool Pipeline::Dothread

Définition à la ligne 52 du fichier Pipeline.h.

unsigned int* Pipeline::IndexBuffer

Pointeur vers le tableau d'index.

Définition à la ligne 19 du fichier Pipeline.h.

unsigned int Pipeline::IndexBufferSize

Taille en octet du tableau d'index.

Définition à la ligne 22 du fichier Pipeline.h.

std::vector<std::mutex *> Pipeline::m_mutex

Définition à la ligne 59 du fichier Pipeline.h.

std::vector<std::thread> Pipeline::m_thread

Définition à la ligne 58 du fichier Pipeline.h.

unsigned int Pipeline::nbMAXthread

Définition à la ligne 60 du fichier Pipeline.h.

void* Pipeline::PSconst

Définition à la ligne 35 du fichier Pipeline.h.

unsigned int Pipeline::PSstride

Définition à la ligne 41 du fichier Pipeline.h.

ShaderBase* Pipeline::shader

Pointeur vers une classe shader.

Définition à la ligne 25 du fichier Pipeline.h.

int Pipeline::sizeX

Taille en x de la fenêtre de rendu.

Définition à la ligne 14 du fichier Pipeline.h.

int Pipeline::sizeY

Taille en y de la fenêtre de rendu.

Définition à la ligne 15 du fichier Pipeline.h.

void* Pipeline::VertexBuffer

Pointeur vers le tableau de sommets.

Définition à la ligne 18 du fichier Pipeline.h.

unsigned int Pipeline::VertexBufferSize

Taille en octet du tableau de sommets (en octets).

Définition à la ligne 21 du fichier Pipeline.h.

bool Pipeline::viewMaille

Définition à la ligne 55 du fichier Pipeline.h.

bool Pipeline::viewPoint

Définition à la ligne 54 du fichier Pipeline.h.

bool Pipeline::viewRemplisage

Définition à la ligne 56 du fichier Pipeline.h.

void* Pipeline::VSconst

Définition à la ligne 30 du fichier Pipeline.h.

unsigned int Pipeline::VSstride

Définition à la ligne 38 du fichier Pipeline.h.

float* Pipeline::zBuffer

Définition à la ligne 45 du fichier Pipeline.h.


La documentation de cette classe a été générée à partir des fichiers suivants :