[Tuto] Intégration de Fast-Extension

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Tuto] Intégration de Fast-Extension

Message par Giuliani le Mer 25 Juin - 22:42

Tutoriel FastExtension

FAST-EXTENSION est une librairie payante (11€) qui, une fois intégrée dans BlitzBasic, permet de s'affranchir du bon vieux moteur graphique en DirectX7 pour se rapprocher du DirectX 9.
Au programme, eau réaliste, ombres dynamiques, Occlusion avec les rayons du soleil, Glow/Bloom, brouillard volumétrique, effets de lumières etc...


En me basant sur le tutoriel réalisé par MJCamerer sur le forum officiel RCS, je vais tenter de vous de vous expliquer comment intégrer le bloom et le champs de profondeur grâce à Fast-Extension. Intégration en 10 minutes montre en main ^^


A) PRÉPARATION

Tout d'abord procurez-vous un exemplaire de FastExtension ici pour 11€:
http://fastlibs.com/

Une fois récupéré, dézippez-le.
1) Copiez FastExt.dll:
_ dans votre dossier Blitz3D
_ dans votre dossier Projet de jeu (avec server.exe, Client.exe etc...) également.

2) Ensuite dans \for_Blitz3D\include\ copiez FastExt.bb
_ dans votre dossier Modules (Dossier RCS source) afin qu'il soit compilé avec le client.



B) INITIALISATION

1) Ouvrez Client.bb et cherchez la section des Includes


Nous devons inclure le fichier FastExt.bb. Pour ce faire, juste après la ligne "Include "Modules\Utility.bb" ; Projectile 3D display system", ajoutez ceci:

Include "Modules\FastExt.bb"
Cette ligne va intégrer tout le code contenu dans FastExt.bb à votre client de projet. Toutes ses fonctions pourront désormais être utilisées. ça devrait ressembler à ça:


2) Maintenant nous devons Initialiser et Des-initialiser cette librairie pendant son fonctionnement comme spécifié dans les documents d'aide.
La documentation FastExtension précise que la librairie doit être initialisée après la commande Graphics3D et dés-initialisée juste avant les commandes EndGraphics.
Ouvrons donc dans Modules\MainMenu.bb:

Une fois MainMenu.bb ouvert, trouvez cette section:


Maintenant initialisons après chaque Graphics3D. Ajoutez cette ligne après chaque all Graphics3D's:

InitExt
ça devrait ressembler à ça:


Trouvons tous les EndGraphics toujours dans MainMenu.bb. Le 1er ressemble à ça:


Souvenez-vous que nous devons des-initialiser la librairie avant chaque EndGraphics. ajoutez cette ligne avant chaque EndGraphics:

DeInitExt
cette section devrait ressembler à ça:


Encore un EndGrapics dans ce MainMenu.bb:


Maintenant ajoutons une ligne des-initialisation juste avant ce EndGrapics. La section devrait ressembler à ça:

Nous en avons terminé avec ce MainMenu.bb. Sauvegardez et fermez ce fichier.

Ouvrons ClientLoaders.bb, il y a 2 autre Graphics3D commandes ici. Trouvez cette section:


Ajoutons l'initialization juste après chaque commande Graphics3D comme tout à l'heure:


Nous en avons terminé avec l'ajout de la librairie à Realm Crafter. Si vous avez parfaitement réussi cette partie, vous ne devriez jamais avoir à reinitialiser/desinitialiser FastExtension à l'avenir.
Vous pouvez même ajouter tous les autres possibilités qu'offrent FastExtension à Realm Crafter!


C) AJOUT DU GLOW/BLOOM

Maintenant nous allons pouvoir commencer à intégrer les effets Post Processing. Pour ce tuto, on va afficher du Glow (aussi connu comme Bloom) et Depth of Field (effet de profondeur).

Ouvrez Client.bb, et dans main loop, cherchez la section concernant le render. Elle devrait ressembler à ça:


Pour intégrer l'effet Post Process Glow, nous devons ajouter la commande FastExtension:

RenderPostProcess FE_GLOW
La documentation FastExtension précise que le rendering d'un effet post process doit se placer après RenderWorld(). Donc ajoutons notre commande RenderPostprocess juste après RenderWorld(). Comme ceci:


Et voila! Votre jeu aura désormais un effet de Glow (Bloom) effect!
Essayez de compiler votre client.exe, remplacez l'ancien par celui-ci et lancez votre projet. Souvenez-vous pour travailler avec les sources, vous ne devez avoir aucun fichier encrypté (.eb3d) dans votre projet.
Voici ce que j'obtiens dans mon projet de test:


Pas mal non? Maintenant disons que nous souhaiterions avoir un Glow moins lumineux. Nous allons devoir le paramétrer. Ouvrez à nouveau Client.bb.
Dans la liste des "Global". Vous trouverez les global des variables. Elle devrait ressembler à ça:

Ouvrez une nouvelle fois Client.bb
Pour le rendre plus facile, on va ajouter certaines de nos propres globals pour personnaliser l'effet Glow.
Ces globals permettront d'utiliser plus facilement différents aspects de customisation pour l'effet Glow.
Ces valeurs que j'ai essayé personnellement et qui fonctionnaient plutôt pas mal. Libre à vous d'expérimenter en modifiant ces valeurs!
Ajoutez ces lignes juste après la dernière global FullScreen/VSync:

;Glow variables for FastExt
Global GlowAlpha = 0.5
Global GlowDarkPasses = 2
Global GlowBlurPasses = 4
Global GlowBlurRadius# = 0.35
Global GlowQuality = 0
Global GlowColorRed = 255
Global GlowColorGreen = 255
Global GlowColorBlue = 255
Global GlowAlphaTexture = 0
ça devrait ressembler à ça maintenant:


Maintenant que toutes les globals ont été définies, Allons juqu'à RenderWorld() et ajoutons y les effets personnalisés. Add this line just above the line where we rendered Glow:

CustomPostprocessGlow GlowAlpha, GlowDarkpasses, GlowBlurPasses, GlowBlurRadius, GlowQuality, GlowColorRed, GlowColorGreen, GlowColorBlue, GlowAlphaTexture
Elle devrait maintenant ressembler à ça:


Maintenant compilons les sources et essayons ça in game. Elle devrait maintenant ressembler à ça:


Comme vous pouvez le voir la luminosité du Glow est moins intense. C'est parce que nous avons modifié l'alpha du glow de moitié à 0.5. C'est mieux.

Maintenant que nous avons ajouté un effet, Vous devriez être capable d'ajouter n'importe quel effet FastExt. Le procédé est assez similaire à chaque fois.
Afin de renforcer ce tutorial, Je vais également vous montrer comment ajouter un autre effet Post Process, l'effet/champs de profondeur (Depth of Field ou DOF).


D) AJOUT DU DEPTH OF FIELD (EFFET DE PROFONDEUR)

On retourne à la section des Global. Cette fois nous allons ajouter directement touts les paramètres en même temps. Après les lignes ajoutées pour le GLOW, ajoutons celles-ci pour customiser le Depth of Field:

;Deep Of Field Variables For FastExt
Global DofNear# = 70
Global DofFar# = 140
Global DofDirection = 1
Global DofBlurPasses = 4
Global DofRadius# = 0.35
Global DofQuality = 0
ça devrait maintenant ressembler à ça:


Retour là où on a ajouté l'effet Glow au render. Ajoutez la ligne suivante pour le DOF:

; Customize DOF effect
CustomPostprocessDOF DofNear, DofFar, DofDirection, DofBlurPasses, DofRadius, DofQuality
RenderPostprocess FE_DOF

ça devrait ressembler à ça:


Et voila! Essayez de compiler le jeu et lancez-le. Vous devriez avoir un joli effet de bloom couplé avec un DOF. Notez comment les choses en arrière-plan sont floutées, et au 1ere plan claires:



Bien évidemment ces effets sont loin d'être parfaits. Vous pourrez augmenter ou réduire le champs de profondeur de Depth of Field, ajuster la luminosité du Glow, etc...
Amusez-vous avec les valeurs et trouvez les paramètres qui s'adaptent parfaitement à votre jeu!
avatar
Giuliani
Admin

Messages : 216
Points : 361
Date d'inscription : 25/06/2014
Age : 38
Localisation : Toulouse

http://realmcrafter.frbb.net

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum