salut
on peut voir un screenshot du maillage de ton terrain quand tu l'affiches ?
salut
on peut voir un screenshot du maillage de ton terrain quand tu l'affiches ?
Ca pourrait t'intéresser > http://www.developpez.net/forums/d76...extension-amd/
Au début pour économisé de la mémoire j'avais pensé à envoyer un maillage "allégé" que j'aurai remplie avec des triangles créés dans le géométrie shader.
J'ai abandonnées car les performance étaient très médiocre. même avec un triangle sur 2
Si cette extension permet de faire mon idées sans perte de performance, voir du gain, c'est cool
Effectivement. La plus besoin de passer par le géométrie shader (d'ailleurs je pérvois une mort prochaine des géometry shaders ), tout est généré automatiquement, juste à récuéprer dans le vertex shader.
Je ne sais pas comment fonctionne dans l'intérieur cette extension, mais effectivement les informations sont déjà présentes dans le vertex shader, donc j'imagine que cela se fait avant. Le vertex shader exemple est assez clair d'ailleurs :
D'après ce que je comprends le __samplerVertexAMD remplace le attribute.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #extension GL_AMD_vertex_shader_tessellator : require __samplerVertexAMD Vertex; __samplerVertexAMD Normal; __samplerVertexAMD Texcoord0; __samplerVertexAMD Temperature; __samplerVertexAMD Pressure; attribute float myTemperature; void main ( void ) { gl_Vertex = vec4( 0.0 ); gl_Normal = vec4( 0.0 ); gl_MultiTexCoord0 = vec4( 0.0 ); myTemperature = 0.0; float myPressure = 0.0; // Don't have to interpolate to attribute for ( int i=0; i<3; i++ ) { float weight = gl_BarycentricCoord[i]; gl_Vertex += weight*vertexFetchAMD( Vertex, gl_VertexTriangleIndex[i] ); gl_Normal += weight*vertexFetchAMD( Normal, gl_VertexTriangleIndex[i] ); gl_MultiTexCoord0 += weight*vertexFetchAMD( Texcoord0, gl_VertexTriangleIndex[i] ); myTemperature += weight*vertexFetchAMD( Temperature, gl_VertexTriangleIndex[i] ).x; myPressure += weight*vertexFetchAMD( Pressure, gl_VertexTriangleIndex[i] ).x; } // Rest of vertex shader goes here.... }
i o
|\
| \
*--*
|\ |\
| \| \
*--*--*
|\ |\ |\
| \| \| \
j o--*--*--o k
* Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
* pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
Mes articles
Moi ce que j'aime bien dans cet algo c'est que l'on peut avoir une précision infinie (en se débarrassant des problèmes de limitations des flottants (ce qui est facilement faisable)) et en basant le calcul de la hauteur des points sur une méthode mathématique. Après biensûr les performances sont bien moindres mais comme je l'ai dis ce n'est pas le même but. D'ailleurs il doit être très intéressant de mélanger les deux techniques.
une image de l'avancement du projet avec plusieurs decalmaps différents:
une autre avec beaucoup plus de decal pour voir si le système tien la route:
Pour géré mes décalmap j'ai mis en place un système de quadtree dans lequel chacune des cases possède un vecteur de models de decalmap.
A l'affichage après avoir récupéré la liste des case du quadtree à afficher avec du frustrum culling je fais un trie par rapport a la distance d'affichage, ce qui me permet de géréer mes LOD d'affichage facilement puisque j'ai obtient tout mes objet classées par type et par distance à la camera.
En gérant l'ordre des models dans les vecteur je pourrai même géré facilement les ordres d'affichages.
salut,
j'essaie aussi d'implémenter le géoclipmapping d'après la méthode de gpu gem 2 mais je pige pas trop l'algo utilisé pour le calcul de la hauteur à partir de la texture moins détaillée (y a peu commentaire sur le fonctionnement de l'algo dans l'article et j'ai pas trouvé d'explication sur internet)
est-ce que tu utilises cet algo aussi ou un autre? est-ce que tu as de la doc dessus?
merci,
delfare
Quelques nouvelles sur l'état d'avancement du projet:
-Système d'ordre d'affichage des décal map.
-Système de réglage de la distance d'affichage
-Gestion des LOD des décal map et pour tout les objets graphiques
-Tous les objets sont stocké dans un QuadTree
voici les dernières images:
test avec des objets arbres:
un Galactic Colossus au milieu d'une foret de 100000 arbres:
La monkey ! la monkey ! la monkey !
Cool
Je suis moi-même entrein de bosser sur un projet de moteur 3D C++/DirectX/LUA pour essayer de faire une sorte de Totala 2 (non je ne me fais pas d'illusions ah peine )
Fin bref tu fais ton moteur dans quel but ? tu veux faire un jeu, ou c'est juste pour l'entrainement ? si c'est pour faire un terrain à la supcom pourquoi utiliser le geoclipmapping et pas roam justement car là comment tu va faire si la personne veut faire un dezoom total, ça sera pas super précis ?
Est ce que tu connais ça: http://springrts.com/
Totala en 3D dont le code source et tout est libre.
J'ai l'impression que sur ce forum personne ne connait alors que c'est énorme un moteur de RTS gratuit, libre avec plein de mods qui existe et qui fonctionne plutôt bien et qui a déjà plusieurs années d'existence avec une communauté autour.
Sinon ou en es tu dans ton projet?
Pour l'instant c'est faire un moteur qui tien la route affichant et gérant les paysages
Il y a encore beaucoup de chose comme géré les ombres, l'eau, et bien sur pour que cela soit exploitable un éditeur de carte.
L'un des objectif étant bien sur l'entrainement, l'apprentissage, etc
Après l'idée sera d'en faire quelque chose avec gestion de la physique(Newton Game Dynamic) + une idée de jeu à faire.
il n'y a pas de problème, regarde l'image:
J'ai pas dézoomé plus à cause du fog, on n'aurai vu que du bleu.
De loin la géométrie est moins précise, mais comme on est plus loin c'est pas grave et la texture + éclairage sont calculés par pixel de la carte de hauteur(précision max), il n'y a donc pas de soucis.
Je soupçonne d'ailleurs Sup Com d'utiliser un algo de ce genre.
J'ai regardais le terrain filaire de supcom (il faut aller dans la console) et ça m'a l'air d'être du roam.
C'est possible d'avoir la même image en filaire ^^ sinon ça donne plutôt bien en effet mais j'ai quand même peur qu'il ne soit pas adapté pour un terrain et une utilisation à la supcom je ne saurais te dire pourquoi nous verrons bien ^^
Moi je l'ai commencé il n'y a pas longtemps mon moteur, j'ai fini l'analyse et la je code mais pour l'instant rien d'affichable, j'essaye vraiment de faire un bon moteur bien pensé et bien ouvert notamment grâce au LUA et c'est beaucoup de travail préliminaire. En plus je ne connais pas encore le LUA mais ça m'a l'air très simple après il faut voir comment je peux gérer son utilisation en C++ mais ça m'a pas l'air d'une grande difficulté. Ce qui est difficile c'est de prévoir des modèles de données adaptable en C++
Oui je connais springrts, il y a totala3D aussi qui est pas trop mal. D'ailleurs j'ai fais un totala au boulot entre midi et deux aujourd'hui (fannnnnnnn :p)
Ne t'inquete pas pour mon algo, je trouve le résultat très bon. Faudrait que je mettes une démo pour te convaincre.
Sinon On peut se faire un sup com, je suis sur GPGnet presque tout les soir, avec le même pseudo à partir de 21 h
Pour tes partie de TA, tu peux tester ce mod: http://www.planetannihilation.com/tll/index.html, j'avais fais la campagne solo du mod
Je n'y joue plus trop en ce moment, j'en avais marre d'attendre 20 minutes pour que la partie se lance tout ça pour jouer contre des noobs. Et puis niveau équilibrage autant si les joueurs jouent le jeu ça le fait autant certaines unités cassent tout l'équilibrage (cf : l'avion t3 aeon dont je me souviens plus le nom).
Marrant que tu me montre ce mod je l'avais justement remarqué la semaine dernière je testerais peut-être si j'ai le temps ^^
Ouai ça serait simpa une petite démo (ou on peut switcher en filaire )
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager