Pipeline graphique
|
Classe de gestion du pipeline. Plus de détails...
#include <Pipeline.h>
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... | |
ShaderBase * | getShader () |
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... | |
ShaderBase * | shader |
Pointeur vers une classe shader. Plus de détails... | |
void * | VSconst |
void * | PSconst |
unsigned int | VSstride |
unsigned int | PSstride |
float * | zBuffer |
rgb * | Display |
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 |
Classe de gestion du pipeline.
Définition à la ligne 11 du fichier Pipeline.h.
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.
sx | Largeur de l'image |
sy | Hauteur 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.
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.
somettransformer | Sommet 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.
void Pipeline::ClearRenderTarget | ( | defColor::color | Couleur | ) |
Pipeline::ClearRenderTarget(defColor::color Couleur) Permet de remplir l'image de buffer avec une couleur uni choisis.
Couleur | Couleur 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.
void Pipeline::ClearZBuffer | ( | float | Zmax = FLT_MAX | ) |
Pipeline::ClearZBuffer(float Zmax) Permet de remplir le ZBuffer avec la valeur Zmax a toute les cordonner.
Zmax | valeur avec laquelle on va remplir le ZBuffer |
Définition à la ligne 818 du fichier Pipeline.cpp.
Références sizeX, sizeY, et zBuffer.
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.
somettransformer | Sommet 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.
|
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.
somettransformer | Liste des sommet dans la plan 3D |
facette | Liste des point des 3 sommet sur l'ecran |
color | Couleur du tracé sur lecran |
debug | Affiche 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.
|
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.
somettransformer | Liste des sommet dans la plan 3D |
facette | Liste des point des 3 sommet sur l'ecran |
color | Couleur du tracé sur lecran |
debug | Affiche 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.
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().
unsigned char * Pipeline::getDisplay | ( | ) |
Pipeline::getDisplay() Permet de recuperer le tableau de unsigned char du buffer de rendu.
Définition à la ligne 809 du fichier Pipeline.cpp.
Références Display.
|
inline |
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.
x | Coordonner x du point |
y | Coordonner y du point |
Définition à la ligne 781 du fichier Pipeline.cpp.
|
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.
P | Point sur l'ecran que l'on veut paindre |
somettransformer | Liste des sommet dans la plan 3D |
facette | Liste des point des 3 sommet sur l'ecran |
color | Couleur du pixel sur l'écran |
debug | Affiche 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.
|
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.
somettransformer | Liste des sommet dans la plan 3D |
facette | Liste des point des 3 sommet sur l'ecran |
color | Couleur du tracé sur lecran |
debug | Affiche 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.
void Pipeline::SaveRenderTarget | ( | std::string | name | ) |
Pipeline::SaveRenderTarget(std::string name) Sauvegarde le resultat du rendu dans un fichier.
name | Nom ou chemin du fichier |
Définition à la ligne 907 du fichier Pipeline.cpp.
Références Display, PpmWrite(), sizeX, et sizeY.
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.
name | Nom ou chemin du fichier |
Définition à la ligne 871 du fichier Pipeline.cpp.
Références max, PgmWrite(), sizeX, sizeY, et zBuffer.
void Pipeline::setCliping | ( | bool | var | ) |
Pipeline::setCliping(bool var) Slot permetant de changer si le pipeline utilise le cliping.
var | Activer ou Desactiver |
Définition à la ligne 129 du fichier Pipeline.cpp.
Références DoClip.
void Pipeline::setCulling | ( | bool | var | ) |
Pipeline::setCulling(bool var) Slot permetant de changer si le pipeline utilise le culling.
var | Activer ou Desactiver |
Définition à la ligne 120 du fichier Pipeline.cpp.
Références DoCull.
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.
IBsz | taille totale du tableau d'indices (en octets) |
IB | pointe sur le tableau d'indice |
Définition à la ligne 850 du fichier Pipeline.cpp.
Références IndexBuffer, et IndexBufferSize.
void Pipeline::SetShader | ( | ShaderBase * | VS | ) |
Pipeline::SetShader(ShaderBase *VS) Permet de definir le shader qui sera utiliser pour le traitement.
VS | Pointeur vers le Shader |
Définition à la ligne 861 du fichier Pipeline.cpp.
Références shader.
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.
VBsz | taille totale du tableau des sommets (en octets) |
VB | pointeur sur le tableau de sommets. |
VSstride | taille 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.
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.
var | Activer ou Desactiver |
Définition à la ligne 99 du fichier Pipeline.cpp.
Références viewMaille.
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.
var | Activer ou Desactiver |
Définition à la ligne 90 du fichier Pipeline.cpp.
Références viewPoint.
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.
var | Activer ou Desactiver |
Définition à la ligne 110 du fichier Pipeline.cpp.
Références viewRemplisage.
|
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.
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.