J'essais d'utiliser le code provenant de : http://zach.in.tu-clausthal.de/teach...ial/index.html. Rien ne fonctionne. Je dois probablement mal utiliser le code. Est-ce que quelqu'un peu m'aider a l'implenter la lumiere dans mon code actuel?
Version imprimable
J'essais d'utiliser le code provenant de : http://zach.in.tu-clausthal.de/teach...ial/index.html. Rien ne fonctionne. Je dois probablement mal utiliser le code. Est-ce que quelqu'un peu m'aider a l'implenter la lumiere dans mon code actuel?
Et si tu essaies de passer la direction de ta lumière via une variable uniform, et que dans ton code C++ tu fais varier cette direction, ça donne quoi ?
Parce que là, l'affichage me semble correct, du fait que la source lumineuse est une lumière directionnelle (source située à l'infini)
En fonction de ce que tu veux, c'est juste pour tester si la modification se répercute bien sur l'affichage final (pour tester si ça marche bien, quoi)
Ok ben avec une valeur fixe, l'affichage de la lumière ce fait correctement (correctement dans le sens ou il y a de la lumière, mais elle reste toujours fixe comme avant). Faudrait que je trouve un moyen de faire varier la lumiere en fonction du déplacement de lutilisateur.
Pour observer des changements succincts, tu peux ajouter la composante spéculaire à ton calcul de lumière sur la sphère. Certes la partie diffuse ne varierait pas en fonction de la position de la caméra, mais la partie spéculaire oui. Pour rappel en la spéculaire peut se calculer comme suit : pow( max( dot( S, Normal), 0), Shininess) * LightSpecular * MaterialSpecular, S = normalize( LightDir - EyePos),
J'ai déjà implenté la partie spéculaire et cela fonctionne bien. Mais ca ne regle pas le problème que je vois toujours le meme diffuse peut importe de quelle position je regarde la sphère. Je suis toujours à la recherche d'une solution.
C'est complètement normal d'avoir la même diffuse.
Quel type de lumière désires-tu ? Actuellement , comme je le disais plus haut, tu as implémenté une lumière directionnelle, type lumière du soleil. Pour ce type de lumières, la valeur diffuse sera constante sur tes sphères, où qu'elles soient et où que ta caméra soit, car la source de la lumière est située à l'infini.
Tu as au moins 2 autres types de lumières : point light et spot light.
La point light est une lumière dont la source est à une position connue et qui émet sa lumière dans toutes les directions (une ampoule s'approcherait de ce type de lumière)
La spot light quand à elle est une lumière qui est à une position connue et qui émet ses rayons lumineux dans un cône dont on connait les paramètres (direction et angle d'ouverture).
La lumière directionnelle n'a aucune atténuation en fonction de la distance contrairement aux 2 autres.
Donc, quel type de lumière veux-tu utiliser ?
En effet j'aurais du préciser. Je veux avoir une lumière de type spotlight pour émiter le soleil. En même temps, il serait bien de pouvoir faire du soft shadow. Le lien suivant montre ce que j'aimerais obtenir en terme de lumière et de shadow : http://www.youtube.com/watch?v=Tnc_I...?v=Tnc_IoXwH24.
bon, j'ai une démo fonctionnelle en dx, vu que j'ai toujours pas pris la peine d'essayer opengl, je commente et nettoie le code et je poste ça ce soir.
j'utilise un quad généré par le geometry shader, pas un point sprite directement, ça n'existe plus en tant que tel en dx10/11.
ça ne change rien à la technique à utiliser (enfin j'espère XD)
bon voilà le code, je n'ai pas mis la solution, ni d'exécutable, je rajouterai si il y en a besoin.
Quelque chose dans ce genre la http://morgan.leborgne.free.fr/wiki/...e=GLSL_Shaders? J'avais essayé d'implanter le tout dans mon code, sans succès!
ouais exactement ça.
hésite pas à poser des questions
J'ai essayé d'utiliser le code dans spheresprite.hlsl dans mes shaders, rien de fonctionne plus lol! Mon code source est fait pour utiliser un vbo et un vertex shader, un fragment shader et un geometry shader. Je sais que de base, le tout fonctionne. Il faudrait un expert en convertion directx -> opengl!