#0 

06-09-2012 22:46:56

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Hello, j'ai bossé un peu sur un shader de terrain splatting qui utilise 6 textures de détails, 2 alphamaps avec un rendu du terrain en 2 passes. C'est pas super optimisé et y'a encore quelques bugs de clignotement mais c'est presque nickel.
Voici vite fait un rendu en guise de preuve smile.



A bientôt, je refilerai sans doute le code source d'ici peu pour ceux qui veulent s'amuser avec.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#1 

06-09-2012 23:30:26

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

http://www.partage-facile.com/6KAL6FKP3 … n.rar.html

On peut envisager d'avoir 9 textures en rajoutant une troisième passe, mais j'en vois pas vraiment l'utilité et bon ça bouffe pas mal de ressources donc à vous de voir.

Voilà, amusez vous bien avec se code et merci de partager vos améliorations smile.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#2 

07-09-2012 08:52:21

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Sympa le rendu! Toi et les shaders c'est le grand amour.^^ En tout cas, beau travail.

Ah, oui! Il y a truc que je voudrais te demander. Tu as fait des shaders avec de l'ombrage. Serait-il possible que tu me fasses un shader simple texturing avec ombrage. Avec quelques commentaires pour expliquer les grandes lignes. Parce que j'ai cherché sur le net mais je n'ai pas réussi à en faire un. Les shadows sont pour moi un grand mystère insoluble.^^ Je réussi du texturing de base (auquels j'apporte quelques effets) avec les shaders mais sans ombres ils ne me servent à rien.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#3 

07-09-2012 09:00:34

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Très sympa en effet. Ça change du terrain natif d'Irrliccht.
C'est, par exemple, la même technique employé par TV3D pour son terrain. Plus qu'a rajouter un bump, et cela sera le top tongue (non pas taper...)
wink


Force et sagesse...

Hors ligne


#4 

07-09-2012 18:21:29

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Salut amis codeurs.
JohnPlayer, pas de soucis, je te refilerai mon code de cascaded shadowmap si ça t’intéresse, tu pourras le modifier et l'adapter comme bon te semble voir même l'améliorer on sait jamais ça pourrais m'aider aussi smile. Ton adresse de courriel sur le forum est-elle encore valide ?

TMyke, je cherche effectivement à gérer mon terrain avec plusieurs textures pour y mettre mon code de bump mapping qui fonctionne bien sur le terrain traditionnel mais pas encore avec le splatting...Ca va venir, je suis plustôt du genre tétu même si ça doit me prendre 10 plombes.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#5 

07-09-2012 19:22:37

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Oui, mon adresse mail est valide Copland. J'attends çà avec impatience parce que j'arrivais à faire des trucs sympas avec les shaders et pour l'éclairage de l'objet lui-même c'était facile. Mais alors les ombres!!! J'ai failli devenir chauve.^^
Actuellement, je suis en train de réalisé un éditeur de RPG 3D et le "moteur" qui va avec. Donc j'utilise LUA pour les scripts, le Xml pour mes fichiers "propriétaire" et la seule ressource externe qu'il me manque, c'est les shaders avec ombrages. D'ailleurs, avec les geometry shader, il serait peut être intéressant de faire et animé une surface d'eau. Et voilà, j'ai encore une idée à travailler.^^
Je sais pas si ça vaut le coup que je présente mon projet, je verrai.

Edit : Si ça intéresse quelqu'un, je peux faire un tuto sur l'utilisation de LUA avec le C++ et sur l'utilité de scripter son projet. Mais étant donné que j'ai déjà mon projet à m'occuper, je ne le ferai que si ça intéresse vraiment quelqu'un. Sinon faudra attendre.^^

Dernière modification par johnplayer (07-09-2012 19:39:03)


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#6 

08-09-2012 12:12:37

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

pas mal le splatting shader, sa rend bien, mais pourquoi limitter à 6 texture ? sur mon splatting a 2 alphamap j'ai 8texture argb*2 en utilisant l'invers de l'apha pour la 4eme texture
et pourquoi en deux pass ? c'est relativement simple de faire ceci en single pass ? wink

je suis tomber sur ça le mois dernier je pensse que sa intéresse tout le monde http://irrlicht.sourceforge.net/forum/v … ture+array

bon je pensse que l'on ne peut pas vraiment comparer étant donner que tu utilise le terrain d'irrlicht et pas moi qui est optimiser pour les landscapes à l'origine
j'arrive a 750fps sur le tien tout de même sympas
sur le mien j'ai 880fps sans lod (131K polygone)

tu pourrais donc énormémant gagner en passant en single pass smile

ps: je garde la surprise jusqu'a ce que je vous le présente pour le moment je regles un soucis de performance, le fps chute brusquement au dela de 1024 tiles, et j'aimerais rajouter quelque amélioration également

Hors ligne


#7 

08-09-2012 19:04:09

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Salut Magun,
Je connais déjà le tableau de texture, mais le soucis c'est qu'il n'est actuellement pas intégré à Irrlicht et qu'il faut modifier le moteur en interne pour que cela fonctionne. Ok c'est mieux, mais le soucis c'est qu'il n'est plus possible de bosser sur irrlicht version SVN avec ça à moins de remettre les mains dans le code source à chaque fois. Donc je cherche une éventuelle autre possibilité smile.
Cela dit merci quand même.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#8 

08-09-2012 19:24:11

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

entièrement d'accord ne pas profiter de la svn est un gros malus, j'att ça potentiel intégration de mon coté

Hors ligne


#9 

09-09-2012 10:31:26

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

A titre d'essai Magun, je n'arrive pas à recompiler Irrlicht avec se patch, j'ai un souci sur le glTexImage3D et sur glTexSubImage3D, t'a fait comment toi pour passer outre cette erreur ?


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#10 

09-09-2012 11:55:32

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Bon j'ai recompilé Irrlicht au complet et maintenant le code source qu'il file en example ne se compile pas non plus....Son truc est tout de même bancale smile


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#11 

09-09-2012 16:32:12

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

je n'est pas tester, la feature me semblais très intéréssante, notament pour la gestion des materiels 'complex' sur shader, comme pour le slappting, mais également pour architecturer les donner

sample2Darray diffuse
sample2Darray color
sample2Darray detail
sample2Darray effect (specular, glow, ...)

qui permet d'une par d'utiliser plusieur texture layer par 'material texture' et de ne pas être obliger de changer la valeur _IRR_MAX_MATERIAL_TEXTURE_ voir de recoder l'enum E_TRANSFORMATION_STATE pour dépasser la limiter des 8 textures

apperement on peut envisager 8192 texture par array d'après hendu sur le forum off

Hors ligne


#12 

09-09-2012 19:26:30

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Bon j'ai compilée tout, corrigé le plus gros et avec le textureArray ça bourrine pas mal, y'a un sacré gain..... A moi le shader de bump sur le splatting lol


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#13 

09-09-2012 20:09:04

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Tiens pour ceux qui veulent tester pour voir la différence de vitesse, c'est tout simplement hallucinant :
http://www.partage-facile.com/C065NWX0W … y.rar.html


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#14 

09-09-2012 23:05:32

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Aller un dernier exemple avec Splatting sur 6 textures, 2 alpha maps et 6 textures de bump pour Tmyke smile
http://www.partage-facile.com/0YSUJH61V … p.rar.html


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#15 

10-09-2012 07:54:11

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

ça le fait comme on dit, beau boulot.
L'effet de bump est bien là, j'ai un fps constant (chez moi autour de 2200 ), voilà un beau moteur de terrain (même si j'ai cru que le ventilo de ma CV allait traverser la pièce).
Voilà ce qu'il faudrait à Irrlicht comme moteur de terrain en natif wink (entre autre chose)


Force et sagesse...

Hors ligne


#16 

10-09-2012 09:38:35

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

J'ai testé tout ce petit monde, voici la récap.


1 - Le splatting 6 textures en 2 passes

800x600 : average fps = 1028


1920x1080 : average fps = 660


2 - Le splatting array

800x600 : average fps = 3809 (légère différence^^)


1920x1080 : non-testé


3 - Le splatting array avec bump


800x600 : average fps = 2624 mais sacré problème d'affichage!


1920x1080 : non-testé

Désolé pour ton splatting avec bump Copland mais il y a clairement un truc qui passe pas chez moi. J'aurais voulu pouvoir tester les 2 autres en 1920x1080 pour comparer les perfs mais bon pas grave.

PS : Copland, si tu peux penser à m'envoyer un shader permettant l'ombrage (avec quelques commentaires dans le code de préférence tongue ). Merci d'avance.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#17 

10-09-2012 18:03:07

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Salut, je ne t'oubli pas johnplayer, il me faut modifier mon code original parce qu’il ne marchera pas chez toi, et je dois surtout te le commenter parce-que les coments c'est pas mon fort.
Sinon c'est bizarre que mon shader de bump ne marche pas chez toi alors qu'il fonctionnait bien lors de ma démo du dragon si je me souviens bien. Il va me falloir une carte NVidia pour débuguer ça je crois smile.
TMyke, ta remarque m'intrigue, j'ai moi aussi mon ventilo qui buffle à mort sur se genre de démo, ça vient du fait que le FPS est pas limité ou d'autre chose d'après toi ?


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#18 

10-09-2012 18:40:26

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Copland :

ça vient du fait que le FPS est pas limité ou d'autre chose d'après toi ?


pour moi cela vient bien en effet du frame rate qui n'est pas bridé, donc la carte s'emballe un peu. Rien de méchant.
D'ailleurs, à 2200 fps, on se dit que si la demo était callé sur la synchro (60 fps), la carte vidéo, avec une charge 36 fois moindre, sera cool raoul pour faire tourner le truc.
  wink


Force et sagesse...

Hors ligne


#19 

10-09-2012 20:10:08

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Oui, en effet sur la demo du dragon je n'avais aucun problème et j'avais la même config. Dès que je peux, je testerai sur un autre PC avec une HD3850 pour voir comment elle réagit. Enfin, si elle supporte les shaders que tu as mis.
Et si tu pouvais mettre en partage tes deux exe texturearray et texturearray+bump compilé pour ouvrir la fenêtre en 1920x1080, je pourrais mettre les 2 framerates manquants et voir ainsi la différence de performance par rapport à la résolution.

Pour les commentaires dans les programmes, j'avais du mal aussi au début. Mais maintenant, écrire 5 lignes de code sans une ligne de commentaire est inconcevable pour moi. Il m'arrive de prendre des morceaux de code de programme que j'ai fait longtemps auparavant et franchement avec la dose de commentaire que je mets dans mes codes c'est super facile de s'y retrouver. Je mets en règle générale 1 ligne de commentaire pour 1 à 2 lignes de code. Mes codes sont de véritables romans.^^ Mais une chose est sûre, c'est que le gars qui ne comprends mon code a du soucis à se faire.^^

Edit : pour le problème avec le bump, je ne sais pas si ça peut t'aider mais les parties noires tournent en ronds. Est-ce que tu as mis une lumière qui tourne au-dessus du terrain? Parce que ça fait comme si une lumière tournait au-dessus du terrain et qu'elle projetait une ombre sur un terrain complètement illuminé. Dur de décrire ça mais j'ai fais ce que j'ai pu. tongue

Dernière modification par johnplayer (10-09-2012 20:30:41)


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#20 

10-09-2012 23:22:01

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Voilà johnplayer, je t'ai refilé les références de chez Nvidia qui m'ont aidé à 95% et le code source en fichier joint par mail smile

EDIT:Pour info la modif avec les textures arrays cassent quelque chose au niveau des rendu en texture et mon code de shadow ne marche pas dessus, il faudra que je regarde ça de plus prêt.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#21 

11-09-2012 18:36:20

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 910
Corrections: 2
Site web

les sample2Darray ne peuvent être composer que de texture de même dimension, je ne sais pas si c'est la cause pour ton shadown map ...

Hors ligne


#22 

11-09-2012 18:39:38

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

non magun rien à voir, mon code de shadow n'utilise pas le texture array. Ce que je veux dire c'est qu'au niveau du rendu en texture ça change quelque chose en interne et le rendu ne se fais plus correctement.Mauvais index ou mauvais layer du material je ne sais pas encore.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#23 

11-09-2012 18:51:17

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

J'ai regardé, j'ai fait quelques modifs mineures et rajouté des commentaires. C'est costaud comme truc!^^ Par contre, si j'ai bien compris, le rendu des shadows se fait sur 3 frames. Parce qu'il me semble qu'il y a 3 passes et que l'on appelle renderShadow 1 fois par frame. Et ces 3 passes correspondent à trois zones (proche de l'écran, distance moyenne et distance lointaine), calculées dans updateSplitDist(). Et les profondeurs Z sur chacune de ces zones sont répertoriées sur ces fameuses dephtmap[0 à 2].
Si j'ai bon, c'est que j'ai compris le principe... Au prix d'une indigestion de matrices.^^ Ah, j'ai comparé la qualité des ombres avec une shadowmap en 4096px² et 2048px², et au vu des résultats il est plus avantageux de faire un initshadow en 2048. Je vais me pencher un peu plus dessus et continuer à commenter tout ça.
En tout cas, je suis super content!^^ De plus, les liens que tu m'as donnés m'ont permis de trouvé d'autres trucs intéressants. J'avais fait des recherches mais quand on utilise les mauvais termes, on ne trouve rien de pertinent. Par contre, je pense que la partie math et carrément au-dessus de mon niveau.^^


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#24 

11-09-2012 19:24:49

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Salut JohnPlayer, la partie math est aussi au dessus de mon niveau bien que j'ai réussi à corriger le code grâce aux formules de calcul matriciel piochées à droite et à gauche sur le net, mais j’avoue que c'est vraiment galère.
Sinon oui t'a bien compris, les 3 depthmaps sont calculées une par frame smile.
Que dire de plus, le bazar à été codé dans le cadre de rendu multipasse pour plusieurs shaders cumulés, donc il te faudra sans doute corriger 2 ou 3 oublis de ma part, j'ai essayé de t'adapter le code principal au plus simple possible après à toi d'épurer ce qu'il te servira ou te servira pas.
J'ai aussi modifier le code du shader pour prendre la première texture comme tu m'avais demandé, mais moi je n'utilise pas de canaux de textures diffuse dans se shader d'ou la fonction qui permet de remettre les materials à l'original. En fait je fais un rendu des shadows avec des modèles blanc et ombre noir dans un render texture flouté appliqué à ma scene pour pouvoir utiliser un tas de shader derrière smile.
Et heu un truc que j'ai pas commenté dans le shader c'est le percentage closer filtering, je l'ai mis que sur la première texture de depthmap mais tu peux le modifier sur les trois, c'est juste que j'en voyais pas vraiment l'utilité.
Voilà, si t'a des questions n'hésite pas à me joindre directement par mail aussi wink.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
126 invités en ligne
Aucun membre connecté
RSS Feed