53
Shaders Programmables Temps Réel Etat des lieux sur leur programmation Mathias Paulin Equipe Synth ` ese d’Images et R ´ ealit ´ e Virtuelle IRIT-UPS-CNRS UMR 5505 Universit ´ e Paul Sabatier Toulouse Shaders Programmables Temps R ´ eel – p.1

Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

  • Upload
    others

  • View
    32

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders Programmables TempsRéel

Etat des lieux sur leur programmation

Mathias Paulin

Equipe Synthese d’Images et Realite Virtuelle

IRIT-UPS-CNRS UMR 5505

Universite Paul Sabatier

Toulouse

Shaders Programmables Temps Reel – p.1

Page 2: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders Programmables Temps Réel

HistoriqueDéfinition.Evolution.Approches temps réel.

Cg : un environnement de développement ?

Shaders OpenGL : exemples d’utilisation

Limitations et problèmes

Démonstrations

Shaders Programmables Temps Reel – p.2

Page 3: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders Programmables Temps Réel

Historique

Cg : un environnement de développement ?Le langage CgLes profils de compilationIntégration dans les applications

Shaders OpenGL : exemples d’utilisation

Limitations et problèmes

Démonstrations

Shaders Programmables Temps Reel – p.2

Page 4: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders Programmables Temps Réel

Historique

Cg : un environnement de développement ?

Shaders OpenGL : exemples d’utilisationEnvironnement d’expérimentation VRMLOpenGL vertex programOpenGL fragment program

Limitations et problèmes

Démonstrations

Shaders Programmables Temps Reel – p.2

Page 5: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders Programmables Temps Réel

Historique

Cg : un environnement de développement ?

Shaders OpenGL : exemples d’utilisation

Limitations et problèmesShaders non portablesCompilateur naïfQuelles solutions ?

Démonstrations

Shaders Programmables Temps Reel – p.2

Page 6: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders Programmables Temps Réel

Historique

Cg : un environnement de développement ?

Shaders OpenGL : exemples d’utilisation

Limitations et problèmes

Démonstrations

Shaders Programmables Temps Reel – p.2

Page 7: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Définition

ShadersProcédure de calcul d’ombragePar abus de langage, calcul de l’apparence

Différents types de shaders :

Objet (basse fréquence)

Sommet (moyenne fréquence)

Fragment (haute fréquence)

Modèle de calcul SIMD

Shaders Programmables Temps Reel – p.3

Page 8: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Définition

ShadersProcédure de calcul d’ombragePar abus de langage, calcul de l’apparence

Différents types de shaders :

Objet (basse fréquence)FormeTransformationsEclairage

Sommet (moyenne fréquence)

Fragment (haute fréquence)

Modèle de calcul SIMD

Shaders Programmables Temps Reel – p.3

Page 9: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Définition

ShadersProcédure de calcul d’ombragePar abus de langage, calcul de l’apparence

Différents types de shaders :

Objet (basse fréquence)

Sommet (moyenne fréquence)CouleurCoordonnées de texturePar extension, position, normale . . .

Fragment (haute fréquence)

Modèle de calcul SIMD

Shaders Programmables Temps Reel – p.3

Page 10: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Définition

ShadersProcédure de calcul d’ombragePar abus de langage, calcul de l’apparence

Différents types de shaders :

Objet (basse fréquence)

Sommet (moyenne fréquence)

Fragment (haute fréquence)Couleur et textureProfondeur

Modèle de calcul SIMD

Shaders Programmables Temps Reel – p.3

Page 11: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Définition

ShadersProcédure de calcul d’ombragePar abus de langage, calcul de l’apparence

Différents types de shaders :

Objet (basse fréquence)

Sommet (moyenne fréquence)

Fragment (haute fréquence)

Modèle de calcul SIMD

Shaders Programmables Temps Reel – p.3

Page 12: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Evolution

Shaders non temps réelShade trees de Cook en 1984Fondés sur le lancer de rayonsUtilisés dans REYES et RenderMan

Shaders temps réelShaders paramétrablesShaders à base de texturesShaders programmables

Nécessité d’un environnement deprogrammation.

Shaders Programmables Temps Reel – p.4

Page 13: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Evolution

Shaders non temps réelShade trees de Cook en 1984Fondés sur le lancer de rayonsUtilisés dans REYES et RenderMan

Shaders temps réelShaders paramétrables

Pipeline graphique classiqueFonctionnalités fixées mais paramétrablesOpenGL ≤ 1.3

Shaders à base de texturesShaders programmables

Nécessité d’un environnement deprogrammation.

Shaders Programmables Temps Reel – p.4

Page 14: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Evolution

Shaders non temps réelShade trees de Cook en 1984Fondés sur le lancer de rayonsUtilisés dans REYES et RenderMan

Shaders temps réelShaders paramétrablesShaders à base de textures

Limités aux shaders d’apparenceApproche multi-passesSGI Interactive Shading Language

Shaders programmables

Nécessité d’un environnement deprogrammation.

Shaders Programmables Temps Reel – p.4

Page 15: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Evolution

Shaders non temps réelShade trees de Cook en 1984Fondés sur le lancer de rayonsUtilisés dans REYES et RenderMan

Shaders temps réelShaders paramétrablesShaders à base de texturesShaders programmables

Pipeline graphique logiciel et matérielRTSL, Cg, OpenGL 2.0

Nécessité d’un environnement deprogrammation.

Shaders Programmables Temps Reel – p.4

Page 16: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Evolution

Shaders non temps réelShade trees de Cook en 1984Fondés sur le lancer de rayonsUtilisés dans REYES et RenderMan

Shaders temps réelShaders paramétrablesShaders à base de texturesShaders programmables

Nécessité d’un environnement deprogrammation.

Shaders Programmables Temps Reel – p.4

Page 17: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders Programmables Temps Réel

Pipe graphique en évolution

Ajout d’étages programmablesTraitement matériel des shaders

Programmation en assembleur des shadersExtensions ARB

Vertex ProgramFragment Program

Extensions propriétairesNVidiaATI

Shaders Programmables Temps Reel – p.5

Page 18: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders Programmables Temps Réel

Pipe graphique en évolutionAjout d’étages programmables

Traitement matériel des shaders

Programmation en assembleur des shadersExtensions ARB

Vertex ProgramFragment Program

Extensions propriétairesNVidiaATI

Shaders Programmables Temps Reel – p.5

Page 19: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders Programmables Temps Réel

Pipe graphique en évolutionAjout d’étages programmables

Traitement matériel des shaders

Programmation en assembleur des shadersExtensions ARB

Vertex ProgramFragment Program

Extensions propriétairesNVidiaATI

Shaders Programmables Temps Reel – p.5

Page 20: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders Programmables Temps Réel

Shader PhongCalcul de l’éclairage par pixelEvaluation du modèle de Phong

AssembleurEcriture complexeRéutilisation difficile

CgEcriture simplifiéeRéutilisation par fonctions

Shaders Programmables Temps Reel – p.6

Page 21: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders Programmables Temps Réel

Shader PhongCalcul de l’éclairage par pixelEvaluation du modèle de Phong

AssembleurEcriture complexeRéutilisation difficile

CgEcriture simplifiéeRéutilisation par fonctions

Shaders Programmables Temps Reel – p.6

Page 22: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders Programmables Temps Réel

Shader PhongCalcul de l’éclairage par pixelEvaluation du modèle de Phong

AssembleurEcriture complexeRéutilisation difficile

CgEcriture simplifiéeRéutilisation par fonctions

Shaders Programmables Temps Reel – p.6

Page 23: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg : généralités

ObjectifsLangage de programmation évoluéMulti plate-forme : DirectX et OpenGL

FonctionnementLangage et compilation

Profils de compilationAPI pour l’intégration

API généraleAPI spécifique (OpenGL ou DirectX)

Shaders Programmables Temps Reel – p.7

Page 24: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg : généralités

ObjectifsLangage de programmation évoluéMulti plate-forme : DirectX et OpenGL

FonctionnementLangage et compilation

Profils de compilationAPI pour l’intégration

API généraleAPI spécifique (OpenGL ou DirectX)

Shaders Programmables Temps Reel – p.7

Page 25: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg : le langage

Langage dérivé de C et C++Types de données

Vecteurs de réelsTableaux de vecteurs

Opérateurs vectoriels surchargés

Fonctions, séquence, sélection, boucles

Bibliothèque de baseMathématiqueGéométriqueTexture

Shaders Programmables Temps Reel – p.8

Page 26: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg : le langage

Langage dérivé de C et C++Types de données

Vecteurs de réelsTableaux de vecteurs

Opérateurs vectoriels surchargés

Fonctions, séquence, sélection, boucles

Bibliothèque de baseMathématiqueGéométriqueTexture

Shaders Programmables Temps Reel – p.8

Page 27: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg : le langage

Langage dérivé de C et C++Types de données

Vecteurs de réelsTableaux de vecteurs

Opérateurs vectoriels surchargés

Fonctions, séquence, sélection, boucles

Bibliothèque de baseMathématiqueGéométriqueTexture

Shaders Programmables Temps Reel – p.8

Page 28: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg : le langage

Langage dérivé de C et C++Types de données

Vecteurs de réelsTableaux de vecteurs

Opérateurs vectoriels surchargés

Fonctions, séquence, sélection, boucles

Bibliothèque de baseMathématiqueGéométriqueTexture

Shaders Programmables Temps Reel – p.8

Page 29: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg : profils de compilation

Prise en charge des différents types de GPU

Profils existantsOpenGL NVxx vertex et fragment program

NV30 ⇐⇒ GeForceFXNV20 ⇐⇒ GeForce 3 et 4

DirectX vertex et fragment shadersOpenGL ARB vertex et fragment program

Seul profil réellement portable

Un profil définitLes tailles des types de donnéesLes instructions utilisablesLes variables prédéfinies

Shaders Programmables Temps Reel – p.9

Page 30: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg : profils de compilation

Prise en charge des différents types de GPU

Profils existantsOpenGL NVxx vertex et fragment programDirectX vertex et fragment shaders

9.0 : Cg ⇐⇒ HLSL8.0

OpenGL ARB vertex et fragment programSeul profil réellement portable

Un profil définitLes tailles des types de donnéesLes instructions utilisablesLes variables prédéfinies

Shaders Programmables Temps Reel – p.9

Page 31: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg : profils de compilation

Prise en charge des différents types de GPU

Profils existantsOpenGL NVxx vertex et fragment programDirectX vertex et fragment shadersOpenGL ARB vertex et fragment program

Seul profil réellement portable

Un profil définitLes tailles des types de donnéesLes instructions utilisablesLes variables prédéfinies

Shaders Programmables Temps Reel – p.9

Page 32: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg : profils de compilation

Prise en charge des différents types de GPU

Profils existantsOpenGL NVxx vertex et fragment programDirectX vertex et fragment shadersOpenGL ARB vertex et fragment program

Seul profil réellement portable

Un profil définitLes tailles des types de donnéesLes instructions utilisablesLes variables prédéfinies

Shaders Programmables Temps Reel – p.9

Page 33: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg : intégration dans les applications

API générale d’exécution permettant deCompiler à la voléeGérer les paramètres des shaders

Shaders Programmables Temps Reel – p.10

Page 34: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg : intégration dans les applications

API spécifique d’exécution permettant deActiver/désactiver les shadersFaire le suivi des paramètres des shaders

Shaders Programmables Temps Reel – p.11

Page 35: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders et VRML

VML : Vrml Modelling LibraryBibliothèque de gestion de mondes VRMLNavigateur et utilitaires associésDéveloppés à l’IRIT depuis 1999Orientée vers l’expérimentation en rendutemps réelhttp://www.irit.fr/∼Mathias.Paulin/Logiciels

Mécanisme d’extension de la grammaireGénération de code C++Chargement dynamique des extensions

Shaders Programmables Temps Reel – p.12

Page 36: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders et VRML

VML : Vrml Modelling LibraryBibliothèque de gestion de mondes VRMLNavigateur et utilitaires associésDéveloppés à l’IRIT depuis 1999Orientée vers l’expérimentation en rendutemps réel

Mécanisme d’extension de la grammaireGénération de code C++Chargement dynamique des extensions

Shaders Programmables Temps Reel – p.12

Page 37: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders et VRML

Intégration de shaders dans la VMLShaders à base de textures

Approche multi-texturesNoeud VRML TextureSet

Approche multi-passes

Uniquement par paramétrage OpenGLLimitation aux shaders basse fréquence

Besoin de programmationComplexité des ShadersShaders moyenne et haute fréquence

Shaders Programmables Temps Reel – p.13

Page 38: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders et VRML

Intégration de shaders dans la VMLShaders à base de textures

Approche multi-texturesApproche multi-passes

Noeud VRML CartoonShader

Uniquement par paramétrage OpenGLLimitation aux shaders basse fréquence

Besoin de programmationComplexité des ShadersShaders moyenne et haute fréquence

Shaders Programmables Temps Reel – p.13

Page 39: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders et VRML

Intégration de shaders dans la VMLShaders à base de textures

Approche multi-texturesApproche multi-passes

Uniquement par paramétrage OpenGLLimitation aux shaders basse fréquence

Besoin de programmationComplexité des ShadersShaders moyenne et haute fréquence

Shaders Programmables Temps Reel – p.13

Page 40: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders et VRML

Intégration de shaders dans la VMLShaders à base de textures

Approche multi-texturesApproche multi-passes

Uniquement par paramétrage OpenGLLimitation aux shaders basse fréquence

Besoin de programmationComplexité des ShadersShaders moyenne et haute fréquence

Shaders Programmables Temps Reel – p.13

Page 41: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders et VRML.

Intégration des Shaders en VRMLdéfinition d’un noeud Appearance ShadersInterface avec CG

Profils ARBCompilation du fichier sourceGestion des paramètres

Multi texturesParamètres numériques

Shaders ARBMême fonctionnement

Shaders Programmables Temps Reel – p.14

Page 42: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Shaders et VRML.

Intégration des Shaders en VRMLdéfinition d’un noeud Appearance ShadersInterface avec CG

Profils ARBCompilation du fichier sourceGestion des paramètres

Multi texturesParamètres numériques

Shaders ARBMême fonctionnement

Shaders Programmables Temps Reel – p.14

Page 43: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

ARB Vertex Shaders et Cg.

Exemple de shader : algorithme NPR de Gooch.Codage (simple)

9 lignes de Cg20 lignes d’assembleur

Compilation22 lignes produites par CgNombre de registres identiques

Comportement vérifié sur tout type

de shaders mais . . .

Shaders Programmables Temps Reel – p.15

Page 44: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

ARB Vertex Shaders et Cg.

Exemple de shader : algorithme NPR de Gooch.Codage (simple)

9 lignes de Cg20 lignes d’assembleur

Compilation22 lignes produites par CgNombre de registres identiques

Comportement vérifié sur tout type

de shaders mais . . .

Shaders Programmables Temps Reel – p.15

Page 45: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

ARB Vertex Shaders et Cg.

Exemple de shader : algorithme NPR de Gooch.Codage (simple)

9 lignes de Cg20 lignes d’assembleur

Compilation22 lignes produites par CgNombre de registres identiques

Comportement vérifié sur tout type

de shaders mais . . .

Shaders Programmables Temps Reel – p.15

Page 46: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

ARB Fragments Shaders et Cg.

Exemple de shader : Texture de Perlin.Codage (moyen)

82 lignes de Cg (boucles et fonctions)290 lignes d’assembleur

Compilation340 lignes produites par CgNombre de registres en hausse

UtilisationLimitée pour le momentEmulation logicielle

Shaders Programmables Temps Reel – p.16

Page 47: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

ARB Fragments Shaders et Cg.

Exemple de shader : Texture de Perlin.Codage (moyen)

82 lignes de Cg (boucles et fonctions)290 lignes d’assembleur

Compilation340 lignes produites par CgNombre de registres en hausse

UtilisationLimitée pour le momentEmulation logicielle

Shaders Programmables Temps Reel – p.16

Page 48: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

ARB Fragments Shaders et Cg.

Exemple de shader : Texture de Perlin.Codage (moyen)

82 lignes de Cg (boucles et fonctions)290 lignes d’assembleur

Compilation340 lignes produites par CgNombre de registres en hausse

UtilisationLimitée pour le momentEmulation logicielle

Shaders Programmables Temps Reel – p.16

Page 49: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

ARB Fragments Shaders et Cg.

Texture de Perlin : DescriptionVertex shader

Transformations géométriquescalcul des coordonnées de textures

Fragment ShaderSomme 5 octaves de bruit (2 avec Cg)Eclairage par pixel

Shaders Programmables Temps Reel – p.17

Page 50: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

ARB Fragments Shaders et Cg.

Texture de Perlin : DescriptionVertex shader

Transformations géométriquescalcul des coordonnées de textures

Fragment ShaderSomme 5 octaves de bruit (2 avec Cg)Eclairage par pixel

Shaders Programmables Temps Reel – p.17

Page 51: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg pour les vertex Shaders

Assez bonne utilisabilitéSimplicité de développement

Code généré non optimalOpérations inutiles ( ∗1 ou +0 )Implantation bizarres

Impossible d’accéder aux états OpenGL

Shaders Programmables Temps Reel – p.18

Page 52: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Cg pour les fragment Shaders

Utilisabilité limitéeSimplicité de développement

Code généré non optimalOpérations inutiles ( ∗1 ou +0 )Implantation bizarres

Gestion fantaisiste des registresGestion fantaisiste des boucles

Shaders Programmables Temps Reel – p.19

Page 53: Shaders Programmables Temps Réelmaverick.inria.fr/Membres/Nicolas.Holzschuch/23012003/MPaulin.pdf · Utilisés dans REYES et RenderMan Shaders temps réel Shaders paramétrables

Quelles solutions ?

Shaders Programmables Temps Reel – p.20