IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

[DirectX - C# - HLSL] Les problèmes d'Ingham


Sujet :

DirectX

  1. #61
    Membre confirmé Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Par défaut
    Je continue je continue
    Bon j'ai du bidouiller pas mal, mais bon ce n'est pas très grave, ne s'agissant là que du code de chargement, s'il prend 500ms de plus que ce qu'il pourrait prendre, c'est loin d'être dramatique :chees:
    Mais j'ai réussi, voici quelques screenshots, avec les FPS correspondants:

    1 zone de 8x8 chunks
    chaque chunk a une capacité maxi de 16x16 QUADS


    LOD 4 | 572 triangles rendus par chunk
    Range pour chaque chunk : 288
    FPS : 240


    LOD 3 | 156 triangles rendus par chunk
    Range pour chaque chunk : 80
    FPS : 520


    LOD 2 | 44 triangles rendus par chunk
    Range pour chaque chunk : 24
    FPS : 780


    LOD 1 | 12 triangles rendus par chunk
    Range pour chaque chunk : 8
    FPS : 1050


    LOD 0 | 2 triangles rendus par chunk
    Range pour chaque chunk : 3
    FPS : 1250


    Voilà en esperant que cette petite recherche pourra servir à d'autres
    Si funkydata ou d'autres ont d'autres solutions alternatives, je suis toujours preneur, c'est toujours bon à savoir et y'a peut-être quelques idées d'optimisation à piquer

  2. #62
    Membre éclairé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Par défaut
    Bon j'ai (enfin ) eu le temps de jeter un oeil sur mon code du CLOD et en fait je n'utilise pas les index buffers... J'utilise la technique des buffers dynamiques. Je crois (si mes souvenirs sont bons) qu'un papier à ce sujet se trouve sur le SDK ou sur le site de nvidia. Mais bon j'avais juste fait un test sans aller plus loin sur cette technique qui est un peu trop "CPU friendly" à mon gout Du coup je ne sais vraiment pas quelle approche est la plus optimisée. En fait, je préfère de loin le concept du Geomipmapping beaucoup plus "GPU Friendly"... que je vais d'ailleurs attaquer sérieusement d'ici peu

  3. #63
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2005
    Messages : 104
    Par défaut
    Il y a cet article Quadtree et Octree sur le site de gamedev, hyper intérréssant que j'avais trouvé à l'époque. Il ya des algorithmes important pour le LOD. Il y a aussi l'article d'un guru du 3D Adaptives Quadtree sur le site gamasutra.com ( la bible du monde des jeux video). J'ai eu à les trouver en cherchant les quadtree, Octree, BSPtree et autres.
    Mais sinon je viens de trouver un livre à la bibliothéque Level of Detail for 3D Graphics (The Morgan Kaufmann Series in Computer Graphics), mais les 432 pages me donnent le vertige, surtout quand je regarde la pile de documentation à lire sur les shaders. Le lien Amazon
    exellent rien qu en le feuillettant. Mais réservé aux fous de l'optimisation Fps et qualité de détail

  4. #64
    Membre confirmé Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Par défaut
    Salut lougne Merci pour la lecture

    J'ai un nouveau problème, très très con , pour le multitexturing, le filtrage ne veut pas s'effectuer...
    Voici la création de ma texture dans DirectX:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    texTiles[0] = TextureLoader.FromFile(device, Application.StartupPath + @"\Content\tile4.png", 0, 0, 0, Usage.None, Format.Dxt1, Pool.Default, Filter.Linear, Filter.Linear, 0);
    Et la déclaration dans le shader:
    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
    32
    33
    34
    35
    36
     
    texture Tiles0;
    texture Tiles1;
    texture Tiles2;
    texture Tiles3;
    sampler sTiles[4] = 
    {
    	sampler_state
    	{
    		Texture = <Tiles0>;
        		MipFilter = none;
        		MinFilter = LINEAR;
        		MagFilter = LINEAR;
        	},
        	sampler_state
    	{
    		Texture = <Tiles1>;
        		MipFilter = none;
        		MinFilter = LINEAR;
        		MagFilter = LINEAR;
        	},
        	sampler_state
    	{
    		Texture = <Tiles2>;
        		MipFilter = none;
        		MinFilter = LINEAR;
        		MagFilter = LINEAR;
        	},
        	sampler_state
    	{
    		Texture = <Tiles3>;
        		MipFilter = none;
        		MinFilter = LINEAR;
        		MagFilter = LINEAR;
        	},
    };
    Et bien avec ça rien à faire il me fait toujours des beaux pixels bien moches
    Pourtant c'est pas la première fois que j'utilise des textures, et j'ai jamais eu de problème pour activer le filtrage... C'est la première fois.. Ca peut venir du fait que ca soit un array de sampler ?

    Merci d'avance


    Ingham

  5. #65
    Membre éclairé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Par défaut
    Perso j'ai jamais utilisé un array de sampler dans un shader mais à mon avis ca vient de la car en HLSL 1 sampler = 1 filtre.
    A mon avis tu aurais certainement plus de chance si, au lieu de fixer l'état de tes filtres dans le shaders, tu le fesais directement au niveau des états du device direct3d avant ton appel au shader.

  6. #66
    Membre confirmé Avatar de Ingham
    Profil pro
    Inscrit en
    Août 2002
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 156
    Par défaut
    Effectivement en supprimant l'array et en créant les 4 sampler "a la main" ca marche...

    C'est pas normal, si ?

  7. #67
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2005
    Messages : 104
    Par défaut
    D'aprés mes lectures nouvelles, ps_2_0 accepte les tableaux de sampler et les index dans ceux-ci ( la version 1.0 les acceptent met il faut obligatoirement les mettre en ordre ) du genre

    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
    sampler Samplers[3] = {
     sampler_state
     {
      texture = <TextureX>;
      magfilter = LINEAR;
      minfilter = LINEAR;
      mipfilter = LINEAR;
      AddressU = mirror;
      AddressV = mirror;
     },
     
     sampler_state
     {
      texture = <TextureY>;
      magfilter = LINEAR;
      minfilter = LINEAR;
      mipfilter = LINEAR;
      AddressU = mirror;
      AddressV = mirror;
     },
     
     sampler_state
     {
      texture = <TextureZ>;
      magfilter = LINEAR;
      minfilter = LINEAR;
      mipfilter = LINEAR;
      AddressU = mirror;
      AddressV = mirror;
     },
    };
    certaines fonctions comme tex2D(Sampler[i],coordonnées); devrait marcher avec ce procédé

  8. #68
    Membre éclairé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Par défaut
    Oui les tableaux de samplers sont supportés sans problème par le hlsl... par contre les filtres vu que c'est un état du device je pense qu'il ignore ce paramètre dans ce cas là. La soluce serait d'enregistrer tes samplers puis de définir les filtres appropriés dans le device direct3d

    EDIT : Le problème ne me surprend pas je serais donc plutôt pour te dire que c'est normal

Discussions similaires

  1. [DirectX Managed - HLSL] Pb rendu Cel Shading.
    Par CritikKiller dans le forum DirectX
    Réponses: 2
    Dernier message: 12/03/2007, 23h10
  2. Réponses: 1
    Dernier message: 24/05/2006, 21h47
  3. Comment gérer les problèmes de connexion sur un idFTP ?
    Par giloutho dans le forum Web & réseau
    Réponses: 2
    Dernier message: 05/12/2005, 19h42
  4. Question sur les problèmes d'allocation dynamique
    Par slylafone dans le forum C++
    Réponses: 23
    Dernier message: 25/10/2004, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo