|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() Inscription : mai 2004 Messages : 127 ![]() |
Bonjour à tous,
Dans l'optique d'un moteur 3D gérant des scènes avec plusieurs lumières, je souhaiterais savoir comment je peux gérer dynamiquement une liste de lumières dans mon shader HLSL. J'ai regardé du côté de la doc MSDN mais je n'ai pas trouvé comment gérer des listes en HLSL (en tous cas, pas de liste de plus de 4 éléments, c'est très limitant ^^). L'idée serait que je fasse un truc du genre : côté c# : Code :
Merci d'avance de vos réponses.
__________________
Chen norris C/C++, C#, Java, PHP & SQL coder Web developer |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : mars 2011 Messages : 531 ![]() |
Salut,
Je ne connais pas le HLSL, mais en GLSL je passerai une texture 1D RGBF32 avec la position de chaque lumière.
__________________
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry |
|
|
10
|
|
|
#3 |
|
Membre habitué
![]() Inscription : mai 2004 Messages : 127 ![]() |
Pas bête du tout ça !! (comment j'y ai pas pensé plus tôt).
En effet, j'ai déjà vu ce genre de technique dans des tutos sur les shaders. J'essaye de suite...
__________________
Chen norris C/C++, C#, Java, PHP & SQL coder Web developer |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() |
Pour indexer des paramètres (vs/ps input, constants, textures), les anciennes versions (1.1, 2.0) sont très très limitées. Ce sont juste des versions un peu améliorées des anciens fixed pipeline. <- il y a beaucoup de choses qui ne sont possibles qu'en emulation software : substituer les lumières avant un draw call par exemple. Mais si ton jeu est en mode 1.1/2.0 il n'est peut-être pas très gourmand en CPU et donc ça peut passer.
Dans les dernières versions (shader 4/5), tu peux indexer tout avec tout quasiment y compris lire les informations de matériel depuis une texture. Ceci dit même avec une version récente ça peut rester une arbitration entre coût CPU et coûts GPU sans parler de certaines limitations des techniques dites "deferred shading" (où les infos de matériels sont sauvés dans une texture).
__________________
Mon site web | Mon blog | Mes photos | Groupe USA > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM > presse la touche caps lock, stp > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA |
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : mai 2004 Messages : 127 ![]() |
Le souci, c'est que je ne suis pas certain que mon ordi portable permette d'aller jusqu'au versions 4-5 des shaders (c'est un chipset intégré) et donc je souhaite limiter au maximum la config nécessaire pour faire tourner mon moteur. C'est pour cela que je me limite à ces versions-là pour le moment.
Pour en revenir à ma question d'origine, j'ai effectué des tests pour pouvoir enregistrer mes positions de lumières dans une texture… mais je me suis rendu compte qu'une texture stockait des couleurs, donc des bytes de 0 à 255 : comment stocker des positions qui peuvent potentiellement aller de -∞ à +∞ du coup ?
__________________
Chen norris C/C++, C#, Java, PHP & SQL coder Web developer |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
tu utilises des textures à précision flottantes (formats 32F, 16F etc).
__________________
Mon site web | Mon blog | Mes photos | Groupe USA > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM > presse la touche caps lock, stp > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA |
|
00
|
|
|
#7 | ||
|
Membre habitué
![]() Inscription : mai 2004 Messages : 127 ![]() |
Je ne savais qu'il existait de telles textures. Mais en fouinant sur le net, j'ai fini par trouver une solution qui semble pas mal du tout :
Code :
J'ai par contre été contraint de faire mes tests sur une config un peu meilleure que celle de mon portable car sur ce dernier, j'obtiens cette erreur : Code :
The device does not support creating a texture of the given format with the given TextureUsage.
Je note toutefois le sujet comme résolu. Merci beaucoup pour vos réponses.
__________________
Chen norris C/C++, C#, Java, PHP & SQL coder Web developer |
||
|
|
00
|
|
|
#8 | |
|
Membre Expert
![]() ![]() |
Citation:
Si vraiment tu veux aller dans la voie des effets de lumière complexes, je te conseille d'upgrader ton portable (avec GPU distinct NVIDIA et pas intégré Intel si possible) ils en font des compatibles Dx11 pour pas cher ces temps-ci. Sinon si tu vises le bas de bas de gamme (jeu qui tourne sur PC de 2002), alors tu dois sérieusement réviser tes ambitions à la baisse : simple texturing * diffuse, une lumière à la fois, pas d'ombres ou ombres sous forme de texture projetée etc.
__________________
Mon site web | Mon blog | Mes photos | Groupe USA > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM > presse la touche caps lock, stp > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com