34
palais des congrès Paris 7, 8 et 9 février 2012

La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Embed Size (px)

DESCRIPTION

La 3D c'est facile ! Découvrez le développement XNA en une heure top chrono. Nous aborderons le développement en trois dimensions sur différentes plateformes de l'univers du jeu vidéo à la sauce Microsoft..

Citation preview

Page 1: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

palais des congrès Paris

7, 8 et 9 février 2012

Page 2: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Date Valentin BillotteMVP [email protected]

Introduction à la 3D avec XNA

Page 3: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Présentation XnaMathématiques 3DPipeline et carte graphiqueEffetsTexturing

Sommaire

Page 4: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

XNA is Not AcronymedTechnologie multiplateformes pour l’accès aux ressources graphiques (2D/3D) matérielles de Microsoft PC / Surface Xbox 360 Windows Phone 7 / Zune Silverlight 5

XNA : Qu’est-ce donc ?

Page 5: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

XNA : Qu’est-ce donc ?

“Low Level”Système d’exploitation / Matériel

DirectX 9

XNA

.NET CLR

Page 6: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

XNA Game Studio 4.0: http://create.msdn.com/en-us/home/

getting_started http://create.msdn.com/en-US/ http://msdn.microsoft.com/fr-fr/directx/

default.aspx http://msdn.microsoft.com/fr-fr/xna

XNA : Ou commencer ?

Page 7: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

DEMO

Da Hello *blue* World

Page 8: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Les points (vertices) sont définis par un vecteur de 3 valeurs (x,y,z)

Les vertices sont rassemblés au sein de faces

Les faces forment des meshes (objets/modèles)

Quart d’heure mathématiques

Page 9: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

(0,1,2)//face devant(0,2,3)(3,2,4)//face droite(3,4,5)(5,4,7)//face arrière(5,7,6)(6,7,1)//face gauche(6,1,0)(6,0,3)//face bas(6,3,5)(1,7,4)//face haut(1,4,2)

Vertices et indices

Page 10: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

XNA utilise un système de coordonnées en mode main droite

Système de coordonnées

Page 11: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Repère du modèle

Vertices placés par rapportà l’origine lors de la modélisation

Repères modèle, monde et écran

Repère du monde

Les modèles sont placés par rapport à une origine commune :Le repère du monde

Repère de l’écran

Les coordonnées (X,Y) ont pour origine le point haut gauche de l’écran

Page 12: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Pipeline de rendu

Vertices

Indices

Traitement des vertices

Traitement de la géométrie

Traitement des pixels

Rendu des pixels

Samplers de textures

Texture

VertexShader

PixelShader

Pipeline complet

Page 13: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Vertex buffer : Stockage des verticesLe format d’un vertex est flexiblePositionCouleurCoordonnées de textures…

Vertices

Vertices

Indices

Traitement des vertices

Traitement de la géométrie

Traitement des pixels

Rendu des pixels

Samplers de textures

Texture

Page 14: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Index buffer : Stockage des indices

Une face contient donc: 3 entiers Un entier le numéro

du vertex dans le vertex buffer

Indices

Vertices

Indices

Traitement des vertices

Traitement de la géométrie

Traitement des pixels

Rendu des pixels

Samplers de textures

Texture

Page 15: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Définition d’un vertex

Px Py Pz Cr Cg Cb

Page 16: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Vertex Buffer

Page 17: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Index Buffer

Page 18: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

DEMO

Marie-Georges Buffers

Page 19: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Shaders: Programmes qui s’exécutent sur le GPU Langage HLSL

Vertex shader : Transformation et éclairage sur le contenu des vertex buffers

Traitement des vertices

Vertices

Indices

Traitement des vertices

Traitement de la géométrie

Traitement des pixels

Rendu des pixels

Samplers de textures

Texture

Page 20: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Transformations des coordonnées

Transsssfoooormmmatiooon

Monde de l’objet

Monde global

Monde de la caméra/vue

Espace projeté

Espace de l’écran

WorldMatrix

ViewMatrix

ProjectionMatrix

Viewport

Page 21: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Suppression des vertices hors champSuppression des surfaces tournant le dos à la vue

Traitement dela géométrie

Vertices

Indices

Traitement des vertices

Traitement de la géométrie

Traitement des pixels

Rendu des pixels

Samplers de textures

Texture

Page 22: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Rasterisation : Génération des pixels par interpolation

Traitement dela géométrie

Vertices

Indices

Traitement des vertices

Traitement de la géométrie

Traitement des pixels

Rendu des pixels

Samplers de textures

Texture

Page 23: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Traitement des pixels Les pixel shaders traitent les vertices en

entrée et produisent une couleur de sortie.

Rendu des pixels Le rendu final prend la couleur d’un pixel et

gère: Alpha testing/blending Profondeur Brouillard

Pixels

Vertices

Indices

Traitement des vertices

Traitement de la géométrie

Traitement des pixels

Rendu des pixels

Samplers de textures

Texture

Page 24: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Encapsule des shaders de baseFournit un service de rendu complet 3 lumières directionnelles Brouillard Une texture Transparence Couleur d’ambiant, émissif, spéculaire et diffus

BasicEffect

Vertices

Indices

Traitement des vertices

Traitement de la géométrie

Traitement des pixels

Rendu des pixels

Samplers de textures

Texture

Page 25: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

DEMO

Rendu avec le BasicEffect

Page 26: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Objectif : Rassembler en seul fichier le pipeline complet en termes de shadersStructure:Définition des constantesDéfinition des structures (Vertex et Pixel)Vertex ShaderPixel ShaderTechniqueFacilite le passage des paramètres

Custom effect

Page 27: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Définition d’un couple Vertex shader/Pixel shader + étatsPeut contenir plusieurs passes

Technique

Page 28: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

DEMO

Créer son propre shader

Page 29: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Rendu d’un triangle

Page 30: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

DEMO

Un triangle avec notre effet

Page 31: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Usage Couleur d’un objet Normal (bump) maps Light maps Détails

Sampler de textures: Outil permettant de lire des texels dans une textureCoordonnées de texture: (u, v) entre (0, 0) et (1, 1)

Texturation

Page 32: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

DEMO

Un triangle texturé

Page 33: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Chiffres

1111 1515 1789 2012

4,2

2.53.5

4.5

2.4

4.4

1.82.8

2 23

5

Chiffres importants à retenirDonnées fluctuantes Données incroyables La réponse D

Page 34: La 3D c'est facile ! Développer son premier jeu vidéo avec XNA

Questions [email protected]