Problème de positionnement [HLSL] - C#/.NET managed - Programmation
MarshPosté le 15-06-2007 à 13:04:14
Bonjour à tous,
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
//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 ?
Marsh Posté le 15-06-2007 à 13:04:14
Bonjour à tous,
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 :
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