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 :

Problème effet de reflexion


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 58
    Par défaut Problème effet de reflexion
    Bonjour à tous,

    je voudrais créer un effet de réflexion pour plus tard afficher cette réflexion sur de l'eau mais j'ai un problème. J'ai créer ma texture de réflexion qui fait la taille de ma fenêtre (il faut encore que j'applique un plan de clipping quand je créer ma texture mais là n'est pas le problème )et j'ai un plan qui représente l'eau qui est de taille 100px*100px et une height map qui est de taille 256*256px, j'applique ma texture sur le e plan mais j'obtiens ceci:



    Mon code du 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
    37
    38
    39
    40
    41
    Texture2D reflection:register(t5);
    SamplerState s:register(s0);
    cbuffer ConstantBuffer:register(b1){
    Matrix mFull;
    Matrix mFullReflection;
    float4 lightDirection;
    float4 ambientColor;
    float4 diffuseColor;
    float2 sizePlane;
    };
    struct VSin {
    float3 pos: POSITION;
    float3 normal: NORMAL;
    };
    struct VSout {
    float4 pos: SV_POSITION;
    float4 reflectionPosition : TEXCOORD;
    float3 normal: NORMAL;
     
    };
    struct PSin {
        float4 position : SV_POSITION;
    float4 reflectionPosition : TEXCOORD;
    float3 normal : NORMAL;
    };
    VSout VSmain( VSin Vin) {
    VSout Vout = (VSout)0;
    Vout.pos  = mul(float4(Vin.pos,1), mFull );
    Vout.normal=Vin.normal;
    Vout.reflectionPosition =  mul(float4(Vin.pos,1), mFullReflection );
    return Vout;
    };
    float4 PSmain( PSin Pin ) : SV_Target {
        float4 reflectionColor;
        float2 reflectTexCoord;
        reflectTexCoord.x = Pin.reflectionPosition.x / Pin.reflectionPosition.w / 2.0f + 0.5f;
        reflectTexCoord.y = -Pin.reflectionPosition.y / Pin.reflectionPosition.w / 2.0f + 0.5f;
        reflectionColor = reflection.Sample(s, reflectTexCoord);
     
        return reflectionColor;
    };
    Et ma fonction pour créer le plan :

    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
    37
    38
    39
    40
    41
    42
    bool Plane::initBuffers(ID3D11Device* p_device){
    D3DXVECTOR3 v1,v2,v3,v4,v5,v6;
    D3DXVECTOR3 n,n1,n2,n3,n4,n5,n6;
    HRESULT res;
    int index=0;
     
    m_nbVertex = 4;
    m_nbIndices = 6;
    m_nbFaces = 2;
    m_vertex = new Vertex_T[m_nbVertex];
    m_indices= new UINT[m_nbIndices];
     
    m_vertex[0].position=D3DXVECTOR3(0.f,m_height,0.f);
    m_vertex[2].position=D3DXVECTOR3(static_cast<float>(m_width),m_height,0.f);
    m_vertex[1].position=D3DXVECTOR3(0.f,m_height,static_cast<float>(m_lenght));
    m_vertex[3].position=D3DXVECTOR3(static_cast<float>(m_width),m_height,static_cast<float>(m_lenght));
    m_vertex[0].normal=D3DXVECTOR3(0.f,-1.f,0.f);
    m_vertex[1].normal=D3DXVECTOR3(0.f,-1.f,0.f);
    m_vertex[2].normal=D3DXVECTOR3(0.f,-1.f,0.f);
    m_vertex[3].normal=D3DXVECTOR3(0.f,-1.f,0.f);
     
    m_indices[index++] = 0;
    m_indices[index++] = 1;
    m_indices[index++]= 3;
    m_indices[index++] = 0;
    m_indices[index++] = 3;
    m_indices[index++] = 2;
     
    //vertex buffer
    D3D11_BUFFER_DESC BufDescVertex = { m_nbVertex *sizeof(Vertex_T), D3D11_USAGE_DEFAULT, D3D11_BIND_VERTEX_BUFFER, 0,0,0 };
    D3D11_SUBRESOURCE_DATA BufDataVertex = { m_vertex, 0, 0 };
    res=p_device->CreateBuffer(&BufDescVertex, &BufDataVertex, &m_vertexBuffer);
    if(FAILED(res))
      return false;
    // index buffer
    D3D11_BUFFER_DESC BufDescIndex = { m_nbIndices*sizeof(UINT), D3D11_USAGE_DEFAULT,D3D11_BIND_INDEX_BUFFER, 0,0,0 };
    D3D11_SUBRESOURCE_DATA BufDataIndex = {  m_indices, 0, 0 };
    res=p_device->CreateBuffer(&BufDescIndex, &BufDataIndex, &m_indexBuffer);
    if(FAILED(res))
      return false;
    return true;
    }
    Une idée du problème?

    Merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 58
    Par défaut
    Après des heures de recherches j'ai trouvé mon problème, j'avais mal initialisé ma caméra.

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 129
    Billets dans le blog
    149
    Par défaut
    Bonjour,

    Pouvez dans la résolution de votre problème ? Il me semblait qu'il y avait un problème de texture wrapping aussi.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. 2 problèmes : effets visuels et mise en veille
    Par avion148 dans le forum Ubuntu
    Réponses: 4
    Dernier message: 20/09/2009, 14h25
  2. Problème d'effet de bord
    Par DjPoke dans le forum Traitement du signal
    Réponses: 2
    Dernier message: 07/08/2007, 10h13
  3. Effet 3D de bureau - problème aux fenêtres !
    Par arnaud_verlaine dans le forum Administration système
    Réponses: 4
    Dernier message: 14/06/2007, 13h47
  4. Réponses: 1
    Dernier message: 08/05/2007, 13h22
  5. problème avec un rollover (effet de survol) sur une image/bouton
    Par f56bre dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 19/03/2007, 14h10

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