Synthèse d’images Antoine Bouthors

Slides:



Advertisements
Présentations similaires
The Reyes Image Rendering Architecture
Advertisements

FONCTIONS avec paramètres en Entrée/Sortie
Traitement d’images sur carte 3D
OpenGL Shading Language Introduction. But de ce cours  Non-buts  Spécialistes GLSL  Experts en GLSL  Exploration du pipeline graphique  Séparation.
Formation des enseignants Formation MATLAB. Formation des enseignants MATLAB® (pour MATrix LABoratory) est un logiciel scientifique de calcul numérique.
Modélisation Géométrique et Synthèse d’Images Modélisation Géométrique: les représentations Marc NEVEU Bureau G210
L'image: Le codage des images BacPro SEN Lycée Condorcet.
Modélisation Géométrique Cours 4 : Acquisition de la géométrie.
Modélisation Géométrique Les surfaces paramétriques.
Tableaux et Pointeurs Chaînes de Caractères Programmation Impérative II.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
Portage d'une application sur GPU CreditCruncher.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
1 Estimation temps réel du flot optique Julien MARZAT 3A – ISA CPDS Tuteur ENSEM:Didier WOLF Tuteur INRIA :André DUCROT.
Université de Monastir Faculté des sciences de Monastir Réalisé par : Salim HENI Rehaussement d’images avec préservation de contours sur GPGPU Soutenance.
Traitement d'images en Java avec JAI
Interfaçage entre Maple et du code externe
e-Prelude.com Analyse globale du flux
Environnement de développement des BD
Les Instructions Itératives (Les Boucles)
Chapitre 1 nombres, chaînes de caractères, booléens, et VARIABLES
Pas de variable globale
Les notions de classe et d'objet
Pointeurs et langage C.
Design Project - SIE 2017 Josquin Puntos-Dami & Briac Virey
Techniques de décomposition
Chapitre 01: Structure d'un module VHDL
Les Processeurs Graphiques Programmables
AO (Architecture des ordinateurs)
Principes de programmation (suite)
Algorithmique Langage C
Langages de programmation TP7
Semaine 11 Les pointeurs (suite)
Les fonctions.
Matrices, déclaration en CSharp
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
Chapitre 7: L’algèbre des vecteurs
Plans d’experiences : plans de melanges
Classification des archtecutres paralleles
OpenGL et WebGL, comparaison de performances dans le framework Geant4
GRAPHISME PAR ORDINATEUR
GRAPHISME PAR ORDINATEUR
Chapitre 7 Configuration de l'environnement du bureau
La méthode du simplexe. 1) Algorithme du simplexe  Cet algorithme permet de déterminer la solution optimale, si elle existe, d’un problème de programmation.
Programmation en C++ C++ de base
Présentation de la carte graphique
Cours N°10: Algorithmiques Tableaux - Matrices
IFT3355: Infographie Courbes et surfaces © Pierre Poulin Dép. I.R.O. Université de Montréal.
Architecture de machines Le microprocesseur Cours
Calcul Scientifique Initiation à SCILB
ACP Analyse en Composantes Principales
Le morphage d’images Steph Hoffman
Cours de physique générale I Ph 11
Simulation de robots en MATLAB
Chapitre 1: introduction à Matlab
Transformation linéaires
AIAC GEET-12 Année : Régulation Industrielle: Programme M.BAHATTI.
Sylvie DELAËT 2002 Architecture des machines Bienvenus en Amphi d’Architecture des Machines.
Créer un diaporama avec Open Office Impress
Position, dispersion, forme
Chapitre 1 Formulation d’un programme linéaire (PL) Georges Abboudeh BUST 347.
IFT3355: Infographie Courbes et surfaces © Pierre Poulin Dép. I.R.O. Université de Montréal.
1 Architecture des ordinateurs Généralités. 2 Définition Informatique = Information + Automatique Ce terme a été introduit en France. Il est très répandu.
GRAPHISME PAR ORDINATEUR
Flowchart Itération Cours 04.
Principes de programmation (suite)
Encadré par : M. Mohammad EL GHABZOURI Elaboré par : - AZEGAMOUT Mohamed - ABOULKACEM abdelouahed - GOUN Ayoub EXPOSÉ Sous le thème : SER 2018 Parallélisme.
Notions d'architecture client-serveur. Présentation de l'architecture d'un système client/serveur Des machines clientes contactent un serveur qui leur.
Tableau de bord d’un système de recommandation
Analyse et programmation langage ADA
Transcription de la présentation:

Synthèse d’images 2007-2008 Antoine Bouthors Antoine.Bouthors@imag.fr http://evasion.imag.fr/~Antoine.Bouthors/teaching/ensimag/

Rappels Extensions OpenGL Fonctions et constantes supplémentaires Peuvent ne pas être présentes dans l’implémentation Répertoriées par l’ARB Les plus populaires sont labellisées ARB et intégrées dans les versions suivantes d’OpenGL Exemples : ARB_multitexture, ARB_vertex_blend, ARB_shadow, …

Historique Sans carte graphique 3D Software configurable OpenGL Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Sans carte graphique 3D OpenGL Software configurable Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Historique Software configurable Cartes graphiques première génération Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Software configurable Cartes graphiques première génération OpenGL Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Hardware Visibility / Display

Historique Hardware configurable Cartes graphiques deuxième génération Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Hardware configurable Cartes graphiques deuxième génération OpenGL + extensions spécifiques (NV_register_combiners…) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Historique Hardware programmable Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Hardware programmable Cartes graphiques troisième génération OpenGL + extensions spécifiques (NV_texture_shader…) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Historique Extensions pour hardware programmable : langage assembleur ou pire Chaque version de chaque carte de chaque fabricant = 1 langage et 1 extension Lourd pour les développeurs

Historique => Cg = langage haut niveau Compile un programme en assembleur Envoie le code assembleur via l’extension adéquate Les paramètres des shaders doivent tous être explicitement définis

Historique DirectX 9 => HLSL OpenGL 1.5 => GLSL Cg : obsolète… ? Quasi équivalent à Cg OpenGL 1.5 => GLSL Pas de profils, peu de restrictions Interagit avec les états d’OpenGL Cg : obsolète… ?

Historique Précurseurs : RenderMan Shading Language : Langage de rendu de Pixar Stanford Shading Language : Langage au-dessus d’OpenGL pour le multi-passes

Futurique Sh/RadidMind : langage plus haut niveau Mélange programmes CPU et GPU en un seul langage Adapté au GPGPU Accès très bas niveau au GPU ATI: CTM Nvidia: CUDA Vers un RenderMan sur GPU ? GPGPU

Principes Remplace les opérations par défaut d’OpenGL Ne rajoute pas de nouvelles fonctionnalités à OpenGL

Principes Deux types de shaders Vertex shaders : effectue des opérations sur les sommets Transformations Calculs d’illumination Coordonnées de textures … Pixel shaders : effectue des opérations sur les pixels Interpolation des résultats calculés aux sommets Mais aussi les mêmes calculs qu’aux sommets (illumination, …) Accède aux textures Modeling Transformations Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (to Screen Space) Scan Conversion (Rasterization) Visibility / Display

Principes On agit au niveau local : Vertex shader : un sommet à la fois On ne connaît pas les sommets voisins Pixel shader : un pixel à la fois On ne connaît pas les pixels voisins Au mieux, on peut avoir la variation d’une valeur par rapport au pixel d’à côté

Principes Ce qu’on ne peut pas faire Faire des calculs globaux Accéder au contenu de textures dans un vertex shader (possible mais coûteux) Modifier le blending Lire le framebuffer

Principes Ce qu’on peut faire Au niveau des sommets : Des transformations/projections différentes Des calculs de coordonnées de textures différents Des calculs d’illumination différents Au niveau des pixels : La même chose qu’aux sommets, mais par pixel Utiliser le contenu de textures dans des calculs Changer la profondeur des pixels

Les bases : Types Flottants, entiers, booléens ( float, bool, int ) Vecteurs 2,3,4 ( [b,i]vec{2,3,4} ) Matrices 2x2, 3x3, 4x4 ( mat{2,3,4} ) Accesseurs de textures ( sampler{1,2,3}D, samplerCube ) Structures Tableaux

Les bases : Entrées Built-in : tous les états d’OpenGL, passés par OpenGL Position, couleurs, directions des lumières Textures Matrices … Attribute : passés par le programme OpenGL Peuvent varier pour chaque sommet (comme couleurs, texcoords, normales, …) Uniform : passés par le programme OpenGL Ne varie pas entre glBegin/glEnd (comme matrices, textures, lumières, …) Varying : fixés sur les sommets par le vertex shader, interpolés sur les pixels, lus par le pixel shader Constant

Les bases : Entrées built-in Vertex shader : Position : gl_Vertex Couleurs : gl_Color, gl_SecondaryColor Normale : gl_Normal Coordonnées de textures : gl_MultiTexCoord Fragment shader : gl_FragCoord : coordonnées du pixel dans la fenêtre gl_Color : couleur du pixel interpolée gl_TexCoord[] : coordonnées de textures interpolées gl_FrontFacing : face ou dos du triangle

Les bases : Sorties Vertex shader : Fragment Shader : gl_Position : position du sommet en coordonnées homogènes (obligatoire) gl_PointSize : taille d’un point en rendu par point gl_FrontColor, gl_BackColor : couleurs gl_TexCoord[] : coordonnées de textures Fragment Shader : gl_FragColor : couleur du pixel (obligatoire) gl_FragDepth : profondeur du pixel

Les bases : fonctions built-in Trigonométrie sin, cos, tan, asin, acos, atan, … Exponentiation exp, pow, log, exp2, log2, sqrt, inversesqrt, … Arithmétiques abs, sign, floor, ceil, fract, mod, min, max, clamp, mix, step, smoothstep Géométriques length, distance, dot, cross, normalize, reflect, refract Accès aux textures texture1D, texture2D, texture3D, textureCube, shadow, … Et d’autres…

Les bases : Allure d’un programme uniform vec4 Bidule; vec4 UneFonction( vec4 Entree ) { return Entree.zxyw; } void main() vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex; gl_Position = pos + UneFonction( Bidule ); Entrée Fonction Point d’entrée Entrées OpenGL Variable locale Multiplication matrice-vecteur Sortie OpenGL

Les bases : Compilation Source du vertex shader Source du fragment shader glCreateShaderObjectARB glShaderSourceARB glCompileShaderARB glGetInfoLogARB Compilation Compilation Shader object Shader object Link glCreateProgramObjectARB glAttachObjectARB glLinkProgramARB glGetInfoLogARB Program object

Les bases : Utilisation glUseProgramObjectARB( Program ); glGetUniformLocationARB(); glUniform{1,2,3,4}f[v]ARB(); glUniformMatrix{2,3,4}fvARB(); glGetAttribLocationARB(); glVertexAttrib{1,2,3,4}f[v]ARB(); glEnableVertexAttribArrayARB() glVertexAttribPointerARB(); Utilisation d’un programme Réglage d’un uniform Réglage d’un attribute Réglage d’un attribute via un array

Exemples…

GPGPU General-Purpose Computation Using Graphics Hardware Un GPU = un processeur SIMD Une texture = un tableau d’entrée Une image = un tableau de sortie

GPGPU : Applications Rendu avancé Traitement du signal Illumination globale Image-based rendering … Traitement du signal Géométrie algorithmique Algorithmes génétiques A priori, tout ce qui peut se paralléliser

GPGPU : Limitations Récupérer l’image rendue = lent PCI Express Opérateurs, fonctions, types assez limités Un algorithme parallélisé n’est pas forcément plus rapide que l’algorithme séquentiel

Nouveautés toutes chaudes DirectX 10, Shader Model 4, Nvidia G80: Geometry shader Meilleure architecture (unités de shading unifiés, scheduling des shaders) CUDA : langage bas niveau Meilleures performances Nouvelles possibilités Encore plus orienté GPGPU