CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourHigh-Tech
    • Actus High-Tech
    • Hardware
    • Smartphones
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • High-Tech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PROG] Textures et Landscape

hs_dino
hs_dino
Niveau 9
19 juin 2004 à 11:35:05

Je cherche une technique pour afficher des textures de sol sur un landscape en heightmap.

Voici grosso modo une explication de mon landscape et de ce que je souhaite obtenir :

Mon landscape est une heightmap dont chaque vertex est une hauteur de la heightmap. Donc on a un patch de terrain qui ressemble a une grille vu de dessus. Juste que là c´est classique.

Maintenant, je souhaite afficher des textures de sol ( Rocher, herbe, sable, etc.). Pour avoir une resolution maximale la technique est de mapper la texture sur un seul quad ( une seule case de la grille).

Le probleme qui surgit est que si on a une texture de rocher sur une case et une texture d´herbe sur la case adjacente on a une coupure net qui est vraiment moche.

Pour remedier a ce probleme, il faut faire un fondu, c´est a dire que les deux textures vont etre mappée en multitexturing sur les deux cases et on va faire un degradé en transparence.

Maintenant, la question est de savoir comment faire çà ?

Et c´est là que ca se corse car d´apres mes connaissances il n´est pas possible d´attribuer plus d´un alpha a un vertex, ce qui pose probleme, car si on a 2 textures l´une sur l´autre, il faut un alpha pour chacune des deux.

Il semblerait que cette technique s´appele le ´Splatting´, j´ai trouvé un article la dessus ( http://cbloom.com/3d/techdocs/splatting.txt ) mais c´est pas clair du tout.

Voilà, donc je si quelqu´un peut m´aider, ca serait super sympa. :)

LGV
LGV
Niveau 28
19 juin 2004 à 11:50:45

dans le txt explicitant la méthode, il est spécifié que l´alpha n´est pas récupéré sur le vertex, mais dans la texture ; une autre solution : rien ne t´empeche de faire un custom vertex avec deux alpha et d´écrire ensuite le vertex shader qui va bien.
Mais à mon avis, pour éviter de faire le blending à chaque passe, il faudrait générer les textures en mémoire, pour qu´à l´éxécution l´affichage soit le plus simple possible.
Sinon, m´étant interessé à la chose, à priori le résultat est moins bon que si des textures de " transitions" sont préparées par le texture artist, sous PhotoShop par exemple ( j´avais pris celle de SoF2, avec des transitions roche/caillou, caillou/galets, galets/herbe, etc.) ; c´est un peu moins compliqué à mettre en place visiblement, le désagrément est que cela bouffe plus de place sur le disque...

hs_dino
hs_dino
Niveau 9
20 juin 2004 à 10:42:51

une autre solution : rien ne t´empeche de faire un custom vertex avec deux alpha et d´écrire ensuite le vertex shader qui va bien.

C´est la question que je me posais justement, si çà marche c´est tout bon.

il faudrait générer les textures en mémoire, pour qu´à l´éxécution l´affichage soit le plus simple possible.

Celà a pour inconvenient de generer une quantité de texture tres importante car il faut les textures 1/4, 1/2 et 3/4 d´autant de fois qu´il y a de textures differentes. On avait utiliser cette technique dans un RTS et çà passait tres bien car les textures etaient petites. Dans mon cas les textures feront au minimum 512x512 ce qui devient irréalisable avec cette technique.

Pour avoir une idée de ce que je souhaite obtenir, il suffit de regarder FarCry.
Mais une chose est sure, il est impossible de faire çà en précalculé avec des dimensions de textures comme celle çà.
Actuellement mon moteur fonctionnait avec des grandes textures de sol précalculées, comme c´est fait dans Battlefield. C´est beau et çà marche tres bien, mais des qu´on se rapproche du sol, ca devient horrible et la texture de detail n´est qu´un cache misere.

En tout cas je vais tester cette technique avec plusieurs alpha et je vous tiens au courant.

LcData
LcData
Niveau 6
20 juin 2004 à 15:44:17

Et oui je suis tjrs vivant et pour une fois que je trouve uen question instéressante sur ce forum . ..

Va voir sur cette page

http://www.gametutorials.com/Tutorials/opengl/OpenGL_Pg4.htm

Data
ExNihilo 3D Engine
http://www.ploksoftware.org

hs_dino
hs_dino
Niveau 9
20 juin 2004 à 20:39:48

Bon, j´ai passé la journée complete la dessus, et voici ou j´en suis :

Il est possible de placer plusieurs composantes de couleurs ( 8 maxi) dans le vertex shader, mais celà n´a aucun interet car a la sortie du vertex shader ( et donc à l´entré du pixel shader) il n´y a plus que 2 composantes ( diffuse et spécular).

Mon idée a donc été de placer 4 alpha dans chacunes des composantes pour en avoir 8. Ca fonctionne tres bien, mais en pixel shader version v1.4 minimum, ce qui est tres problematique car ma carte ( Geforce 3) ne supporte que la v1.1. Ce qui est également le cas d´autres cartes.

Donc j´essaye desesperement de pouvoir utiliser 4 alphas par composantes, mais impossible de les extraire ar le swizzle ne marche pas en v1.1.

LcData

Le tutorial utilise la bannale technique de la grosse texture précalculée qui est couteuse en memoire et tres tres moche quand on se ballade de pres.
C´est chaud de trouver un tutorial qui explique le splatting :(

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment