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

OpenGL Shading Language Introduction. But de ce cours  Non-buts  Spécialistes GLSL  Experts en GLSL  Exploration du pipeline graphique  Séparation.

Présentations similaires


Présentation au sujet: "OpenGL Shading Language Introduction. But de ce cours  Non-buts  Spécialistes GLSL  Experts en GLSL  Exploration du pipeline graphique  Séparation."— Transcription de la présentation:

1 OpenGL Shading Language Introduction

2 But de ce cours  Non-buts  Spécialistes GLSL  Experts en GLSL  Exploration du pipeline graphique  Séparation vertex/fragment  Différentes possibilités  Lecture de documents techniques  Spécifications  Description de langage

3 Historique Rapide  Années 80 : SGI IRIS GL  Concept de « graphic pipeline »  1992 :OpenGL 1.0  Standard ouvert  Machine à états  1993 : 1ere carte supportant OpenGL 1.0  1995 : DirectX/Direct3D 1.0  Concept d’objets  1999 : 1er pipeline hardware grand public  NVIDIA GeForce

4 Pipeline Graphique © Copyright 3Dlabs

5 Vers la programmation  2000 : Register Combiners  NVIDIA GeForce 2  Operation sur les textures  2001 :  Vertex Program : NVIDIA GeForce 3  Fragment Shader : ATI Radeon 8500  Assembleur pour Cartes Graphiques  2002 :  NVIDIA Cg : C pour le Graphique  Langage de haut niveau  2003 :  Direct3D HLSL  OpenGL GLSL

6 Pourquoi GLSL ?  OpenGL  Standard ouvert  Multi-plateformes  IRIX, Linux, MacOS X, Windows  Intégré aux drivers  Mise à jour des pilotes  Extensible à d’autres langages  Cg (GL_EXT_Cg_shader)  Proches des autres solutions  HLSL / Cg

7 Différent noms  DirectX/Direct3D  Vertex Shader  Opération sur les sommets  Assembleur  Pixel Shader  Opération sur les fragments (après la rasterisation)  Assembleur  HLSL  High Level Shading Language  Langage de style C

8 Différent noms  OpenGL  Vertex Program  Opération sur les sommets  Assembleur  Fragment Program  Opération sur les fragments (après la rasterisation)  Assembleur  GLSL  OpenGL Shading Language  Langage de style C  Fragment Shader / Vertex Shader

9 Pipeline Programmable © Copyright 3Dlabs

10 OpenGL 2.0 © Copyright 3Dlabs

11 Vertex Shader  Peut faire  Transformation des propriétés des sommets  Position/normale/couleurs/coordonnées texture/…  Calcul de l’éclairage  Génération de coordonnées texture  …  Ne peut pas faire  Transformation perspective  Projection sur l’image  Élimination des faces non-visibles  Backface culling  Assemblage des primitives  …

12 Fragment Shader  Peut faire  Opérations sur les valeurs interpolées  Texturing  …  Ne peut pas faire  Histogramme  Alpha test  Test de profondeur  Stencil test  Alpha blending  Opération logique  Dithering  …

13 Modèle GLSL Shader OpenGL Hardware Chaîne de caractères Style C Compilateur GLSL Pilote OpenGL

14 Modèle HLSL Hardware Chaîne de caractères Style C Shader HLSL Assembleur Direct3D Compilateur HLSL Librairie Direct3D Assembleur HLSL Pilote Direct3D

15 Modèle Cg Hardware Chaîne de caractères Style C Shader Cg Assembleur Direct3D Assembleur OpenGL / NVIDiA Compilateur Cg Librairie Cg Assembleur HLSL Pilote Direct3D Assembleur OpenGL Pilote OpenGL

16 Différences avec ANSI C  Vecteur : 2-, 3-, ou 4- dimensions  Matrices de flottants : 2x2, 3x3, or 4x4  Type “sampler” pour l’accès aux textures  Qualificateur de types  “attribute”, “uniform”, et “varying”  Accès aux états OpenGL  Fonctions pré-définies pour le graphique  Mot-clef “discard” to tuer un fragment  Accès aux membres des vecteurs .rgba,.xyzw,.stpq  Permutations (.xxx,.stst, …)

17 Types  float, vec2, vec3, vec4  1, 2, 3, ou 4 flottants  int, ivec2, ivec3, ivec4  1, 2, 3, ou 4 entiers  Pas de nécessité de support matériel  Limitée à 16 bits de précision, avec le signe  Pas de garantie de bouclage  bool, bvec2, bvec3, bvec4  1, 2, 3, ou 4 booléens  Pas de nécessité de support matériel

18 Types (suite)  mat2, mat3, mat4  Matrices de flottants  void  Pour les fonctions sans valeur retournée  sampler[123]D, samplerCube  Texture 1D, 2D, et 3D  Texture « cube map »  sampler1DShadow, sampler2DShadow  Texture de profondeurs 1D et 2D  Construction de types  Structures (struct mais pas union)  Tableau

19 Qualificateur de types  const  attribute  Donnée par sommet pour le vertex shader  uniform  Paramètre de shader (faible variation)  varying  Sortie du vertex shader  Entrée du fragment shader  Interpolée à la rasterisation (avec correction de perspective)  in  Paramètre en lecture d’un fonction  out  Paramètre en écriture d’un fonction  inout  Paramètre en lecture/écriture d’un fonction

20 Vertex Shader Vertex Processor attribute pré-défini gl_color gl_normal gl_vertex.. attribute défini par l’utilisateur varying vec3 tangent; …. varying pré-définis gl_FrontColor gl_BackColor.. variables de sortie spéciales gl_Position gl_BackColor.. varying défini par l’utilisateur varying vec3 normale;.. uniform défini par l’utilisateur uniform float time; …. uniform pré-défini gl_ModelViewMatrix, gl_FrontMaterial ….  Produit par le Vertex Processor  Fournie indirectement par l’application  Fournie directement par l’application

21 Fragment Shader Fragment Processor varying pré-définis gl_FrontColor gl_BackColor.. variables d’entrée spéciales gl_FragCoord gl_Color.. varying défini par l’utilisateur varying vec3 normale;.. uniform défini par l’utilisateur uniform float time; …. uniform pré-défini gl_ModelViewMatrix, gl_FrontMaterial ….  Produit par la rasterisation  Fournie indirectement par l’application  Fournie directement par l’application  Produit par le fragment processor variables de sortie spéciales gl_FragDepth gl_FragColor..

22 Extensions OpenGL  Plusieurs types  GL_ : extensions OpenGL  WGL_/AGL_/GLX_ : communication avec le fenêtrage  Plusieurs sources  ARB : organisme de standardisation OpenGL (officiel)  EXT : couramment supportée  ATI/NV/SGI/… : vendeur-spécifique  ATIX/NVX/SGIX/ … : expérimentale  OES/OML : pour OpenGL|ES et OpenML (consortium Khronos)  …

23 Extension : Spécification Name ARB_texture_rectangle Name Strings GL_ARB_texture_rectangle …. Version Date: March 5, 2004 Revision: 0.9 Number ARB Extension #38 Dependencies OpenGL 1.1 is required OpenGL 1.4 (or ARB_texture_mirrored_repeat) affects the definition of this extension. ….. Overview .......

24 Extension : Spécification - suite New Procedures and Functions void SpriteParameteriSGIX(enum pname, int param); void SpriteParameterfSGIX(enum pname, float param); void SpriteParameterivSGIX(enum pname, int* params); void SpriteParameterfvSGIX(enum pname, float* params); New Tokens Accepted by the parameter of Enable, Disable, and IsEnabled, and by the parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev: SPRITE_SGIX ….. Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation) …… …..


Télécharger ppt "OpenGL Shading Language Introduction. But de ce cours  Non-buts  Spécialistes GLSL  Experts en GLSL  Exploration du pipeline graphique  Séparation."

Présentations similaires


Annonces Google