CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • 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
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[HLSL]Problème de positionnement

Myth_Titans
Myth_Titans
Niveau 8
16 juin 2007 à 16:30:09

Bonjour à tous,

voilà j´ai essayé de programmer un shader qui permet de simuler de la lumière sur une image 2D (en fait il crée un cercle et multiplie la teinte des pixels compris dans ce cercle). Seulement voilà j´ai un petit problème pour le placement de la "lumière". Quand il est à 0.5, 0.5 (avec un intervalle 0, 1), donc au centre, il n´y a pas de problème, par contre quand je modifie la position X il ne bouge pas, si je modifie la position Y il se déplace verticalement (donc il déplace a la fois X et Y). Voici le code :

Code :

uniform extern texture ScreenTexture;

//Position de la lumiere
float2 position = (0.5f, 0.5f);

//Rayon du cercle de lumiere
float rayon = 0.15f;

//Intensité de la lumiere
float intensite = 4.0f;

sampler ScreenS = sampler_state
{
Texture = <ScreenTexture>;
};

float4 PixelShader(float2 texCoord: TEXCOORD0) : COLOR
{
float4 color = tex2D(ScreenS, texCoord);

//Calcule la distance entre le centre de la lumiere et le pixel courrant
//Le problème se trouve apparemment dans ma formule
float distance = sqrt((position.x - texCoord.x)*(position.x - texCoord.x) + (position.y - texCoord.y)*(position.y - texCoord.y));
if(distance < rayon)
{
//Illumine le pixel courrant en fonction de sa distance du centre de lumière
color += intensite*(rayon-distance);
}
return color;
}

technique
{
pass P0
{
PixelShader = compile ps_2_0 PixelShader();
}
}

Comme je l´ai mis dans les commentaires, le problème doit venir au niveau du calcul de la distance, mais je ne vois pas l´erreur. Quelqu´un pourrait-il m´aider ?

Merci

godrik
godrik
Niveau 30
16 juin 2007 à 18:48:37

tu devrai utiliser un wall comme rafb.net/paste, cela ameliorerait la lisibilite de to code :)

Je n´y connais rien en graphisme, je ne peut donc pas trop t´aider. Si tu n´as pas de reponses d´ici quelques temps, tentes ta chances sur le forum creation de jeu. (mais nos expert ne sont probablement pas encore passe :) )

LGV
LGV
Niveau 28
17 juin 2007 à 14:02:32

verifie les UV que tu envoies ; il se pourrait que tes texCoord.x/y soient foireux.

Myth_Titans
Myth_Titans
Niveau 8
17 juin 2007 à 18:37:00

Vérifier les UV ? Tu veux dire que j´affiche leur valeur a chaque fois pour voir si il n´y a pas d´erreur ?

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