La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Synthèse d’images Antoine Bouthors

Présentations similaires


Présentation au sujet: "Synthèse d’images Antoine Bouthors"— Transcription de la présentation:

1 Synthèse d’images 2007-2008 Antoine Bouthors Antoine.Bouthors@imag.fr

2 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, …

3 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

4 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

5 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

6 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

7 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

8 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

9 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… ?

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

11 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

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

13 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

14 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é

15 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

16 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

17 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

18 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

19 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

20 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

21 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…

22 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

23 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

24 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

25 Exemples…

26 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

27 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

28 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

29 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


Télécharger ppt "Synthèse d’images Antoine Bouthors"

Présentations similaires


Annonces Google