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

Slides:



Advertisements
Présentations similaires
( Application Programming Interface)
Advertisements

A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Introduction au langage C
Le langage C++ Les types structurés
Transformation de documents XML
The Reyes Image Rendering Architecture
Technique des Surfels Surfels: Surface Elements as Rendering Primitives SIGGRAPH 2000 H.Pfiste, J.van Baar, M.Zwicker, M.Gross.
Introduction à l’Algorithmique
Cours n° 8 Conception et Programmation à Objets
Bienvenue dans le programme de formation rapide à NSIS Date : 20 novembre 2003 Intervenant : Julien VICTOR Interlocuteurs : Ingénieurs 2000 Informatique.
IMAGIS-GRAVIR / IMAG Rendu de forêts en temps-réel iMAGIS / GRAVIR Franck Sénégas DEA IVR Tuteur: Fabrice Neyret.
Un programme Hello World du début des années #T OXXXXXX0 HELLO WORLD Ce programme ( en langage machine ) consiste en 3 lignes, totalisant 27.
Virtools Olivier Lamotte.
Programmation des logiciels infographiques interactifs 2D et 3D, et le OpenGL.
Langage C Licence Informatique 3ème année
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Standard Template Library (STL)
Introduction à la programmation (Java)
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
FICHIERS : Définition : Algorithme général:
Images synthètiques de haute qualité
Un langage de programmation hybride
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
Standard Template Library
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Texture 2D en PGC++.
Techniques de points de contrôle en OpenGL : formes de Bézier
Animateur : Med HAIJOUBI
Traitement d’images sur carte 3D
Programmer en langage c
ALGORITHMIQUE ET PROGRAMMATION C
Un survol du language C.
Labo 4 : Les structures et les entrées et sorties
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Cours n° 1 Présentation du langage C++
Tutorat en bio-informatique
Projet Lancer de Rayons
Le langage Z minimal Pr ZEGOUR DJAMEL EDDINE
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Introduction aux Cartes Graphiques
L’Audio sur PC Comparaison Numérique vs Analogique Comparaison Audio sur PC vs Hardware dédié (DSP) Rmq: beaucoup de simulitudes avec la vidéo, mais débit.
Microcontrôleurs PIC. 1ère séance Présentation du PIC16F876 Outils de programmation du PIC Le langage C Exemples d’applications simples 2ème séance Présentation.
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
CSI 3525, Types, page 1 Types de donnés Types de donnés primitifs Types de donnés structurées Chaînes de caractères Types énumérés Tableaux Enregistrements.
Conception Formelle en PVS Master 2 ISC Chef de Projet: M. Pierre Castéran Présenté par: Roland Atoui Xavier Dumas Sébastien Jardel Laurent Vendredi.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O. et au.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Structures de données et algorithmes – TP1 Maria-Iuliana Dascalu
Les bases de l’algorithmique
Diagramme de Gantt. Groupe Core Module de vecteur de ℝ ² utilisé pour représenter toutes les coordonnées et leur appliquer des transformations. Ré-implémentation.
Architecture et Fonctionnement d’un GPU Géométrie Rendu.
Programmation GPU avec Cg et GLSL
Projet LIF Eduardo San Martin Morote Yoann Maret-Verdant
PRO-1027 Programmation Scientifique en C
IFT3355: Infographie Plan © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.
Éclairage, ombrage Fiat lux !.
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
FACTORY systemes Module 5 Section 1 Page 5-3 Les scripts de traitement FORMATION INTOUCH 7.0.
Informatique 2A Langage C 2 è séance. Objectifs de la séance 2 Début de la modularité avec les fonctions Création d’une première bibliothèque.
Synthèse d’images Antoine Bouthors
Les Processeurs Graphiques Programmables
Transcription de la présentation:

OpenGL Shading Language Introduction

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

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

Pipeline Graphique © Copyright 3Dlabs

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

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

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

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

Pipeline Programmable © Copyright 3Dlabs

OpenGL 2.0 © Copyright 3Dlabs

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

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

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

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

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

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

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

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

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

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

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..

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)  …

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 

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) …… …..