Comment générer un nombre aléatoire dans HLSL?
Je demande parce que je veux essayer le tracé de rayons gpu . Vous devez générer des directions aléatoires dans un pixel shader. Je veux donc randFloat()
, où le résultat est un nombre aléatoire entre -1 et +1.
Aussi, quel est le problème avec l' instruction de bruit hlsl ? Les documents indiquent qu'il a été supprimé de HLSL 2.0 et versions ultérieures. Pourquoi ?
J'ai lu une approche où vous remplissez une texture avec des valeurs aléatoires, puis avez une coordonnée de texture dans chaque sommet qui a un index dans cette texture. Mais c'est par sommet , j'ai besoin d'une instruction que je peux appeler dans le pixel shader. De plus, cette approche nécessite de "réamorcer" les texcoords par sommet si vous voulez des valeurs différentes pour chaque trame, et cela nécessite une mise à jour du tampon de sommet chaque trame (ce qui peut être coûteux!)
Avec des détails, comment pouvez-vous générer à moindre coût un nombre aléatoire sur le GPU?