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

XNA/Monogame Discussion :

Passer un fichier effect.fx XNA pour Monogame


Sujet :

XNA/Monogame

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut Passer un fichier effect.fx XNA pour Monogame
    Bonjour,

    J'ai un soucis de build de mon fichier fx avec Monogame alors que avec XNA tout ce passe bien.

    J'ai cru comprendre que les list de struct ne passaient pas avec Monogame mais sans en être sur, mon anglais n'est pas terrible.

    Fichier fx XNA
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
     
    struct Light
    {
    	float3 position;
    	float3 color;
    	float invRadius;
    };
     
    texture normaltexture;
    int numberOfLights;
    Light lights[3];
     
    float3 ambientColor;
    float screenWidth;
    float screenHeight;
     
    sampler ColorMap : register(s0);
     
    sampler NormalMap : samplerState
    {
    	Texture = normaltexture;
    	MinFilter = Linear;
    	MagFilter = Linear;
    	AddressU = Clamp;
    	AddressV = Clamp;
    }; 
     
    float3 CalculateLight(Light light, float3 normal,float3 pixelPosition)
    {
    	float3 direction = light.position - pixelPosition;
    	float atten = length(direction);
     
    	direction /= atten;
     
    	float amount = max(dot(normal, direction), 0);
     
    	atten *= light.invRadius;
     
    	float modifer = max((1 - atten), 0);
     
    	return light.color * modifer * amount;
    }
     
    float4 DeferredNormalPS(float2 texCoords : TEXCOORD0) : COLOR
    {
    	float4 base = tex2D(ColorMap, texCoords); 
    	float3 normal = normalize(tex2D(NormalMap, texCoords) * 2.0f - 1.0f); 
     
    	float3 pixelPosition = float3(screenWidth * texCoords.x,screenHeight * texCoords.y,0);
     
    	float3 finalColor = 0;
     
    	for (int i=0;i<numberOfLights;i++)
    	{
    		finalColor += CalculateLight(lights[i], normal, pixelPosition);
    	}
     
    	return float4((ambientColor + finalColor) * base.rgb, base.a);
    }
     
    technique Deferred
    {
        pass Pass0
        {
            PixelShader = compile ps_2_0 DeferredNormalPS();
        }
    }
    Fichier fx de Monogame
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    struct Light
    {
    	float3 position;
    	float3 color;
    	float invRadius;
    };
     
    int numberOfLights;
    Light lights [3];
     
    float3 ambientColor;
    float screenWidth;
    float screenHeight;
     
    sampler ColorMapSampler : register(s0);
     
    sampler NormalMapSampler : register(s1)
    {
    	Texture = (normaltexture);
    	MinFilter = Linear;
    	MagFilter = Linear;
    	AddressU = Clamp;
    	AddressV = Clamp;
    }; 
     
    float3 CalculateLight(Light light, float3 normal, float3 pixelPosition)
    {
     
    	float3 direction = light.position - pixelPosition;
    	float atten = length(direction);
     
    	direction /= atten;
     
     
    	float amount = max(dot(normal, direction), 0);
     
    	atten *= light.invRadius;
     
     
    	float modifer = max((1 - atten), 0);
     
     
    	return light.color * modifer * amount;
    }
     
    float4 DeferredNormalPS(float2 texCoord : TEXCOORD0) : COLOR0
    {
    	float4 base = tex2D(ColorMapSampler, texCoord); 
    	float3 normal = normalize(tex2D(NormalMapSampler, texCoord) * 2.0f - 1.0f); 
     
     
    	float3 pixelPosition = float3(screenWidth * texCoord.x, screenHeight * texCoord.y,0);
     
     
    	float3 finalColor = 0;
     
    	for (int i=0;i<numberOfLights;i++)
            {
     
    		finalColor = CalculateLight(lights, normal, pixelPosition);
    	}
     
    	return float4((ambientColor + finalColor) * base.rgb, base.a);
    }
     
    technique Deferred
    {
        pass Pass1
        {
            PixelShader = compile ps_4_0_level_9_1 DeferredNormalPS();
        }
    }
    Le message d'erreur est le suivant

    Erreur Processor 'EffectProcessor' had unexpected failure! Light E:/projetWinDev/Light/Light/Content/Deferred.fx

    Je vous remercie d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut
    Bon apparemment il n'est pas possible de créer la struct dans le fichier fx dans lequel je la déclare.

    Je vous tiens au courant, je sens que je tiens le bon bout là.

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut
    Bon apparemment personne ne sait créer des fichier fx.

    J'ai quand même réussi à faire en sorte d'avoir une source de lumière avec monogame oui quand même, pas si dur c'est sûr, mais dès que j'utilise des tableaux, un tableau se déclare comme ça int source[4], la valeur à l'intérieur c'est pour initialiser le tableau j'ai mes sources de lumière qui se figent.

    Oui J'ai beau mettre à jour les positions, elles ne veulent pas bouger. Pourquoi?

    Je vais aller dormir un peu, la nuit porte conseil, ou pas...

    Si quelqu'un par hasard pouvais m'aider se serait pas du luxe.

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 72
    Par défaut
    Seule solution pour pouvoir avancer, malheureusement c'est du n'importe quoi, mais bon.

    je vais dupliquer autant de fois variables par le nombre de lumière, en changeant juste le nom, position1,position2..., color1,color2... avec 50 lumiere ça va être carrément crado mais au moins ça fonctionnera.

    Merci de votre aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/06/2014, 15h21
  2. Réponses: 8
    Dernier message: 11/06/2007, 09h20
  3. Fichier texte trop gros pour etre ouvert
    Par tavman dans le forum C++
    Réponses: 5
    Dernier message: 05/10/2005, 01h07
  4. Réponses: 3
    Dernier message: 04/10/2005, 10h33
  5. Réponses: 11
    Dernier message: 22/03/2005, 02h04

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