Bagaimana Anda menghasilkan angka acak di HLSL?
Saya bertanya karena saya ingin mencoba penelusuran gpu ray . Anda perlu membuat arah acak dalam shader piksel. Jadi saya ingin randFloat()
, di mana hasilnya adalah angka acak antara -1 dan +1.
Juga, apa masalahnya dengan instruksi kebisingan hlsl ? Dokumen mengatakan itu dihapus dari HLSL 2.0 dan lebih tinggi. Mengapa ?
Saya membaca tentang pendekatan di mana Anda mengisi tekstur dengan nilai acak, kemudian memiliki koordinat tekstur di setiap titik yang memiliki indeks ke dalam tekstur itu. Tapi itu per vertex , saya butuh instruksi yang bisa saya panggil dalam pixel shader. Plus pendekatan ini membutuhkan "reseeding" texcoords per-vertex jika Anda ingin nilai yang berbeda setiap frame, dan yang memerlukan buffer vertex memperbarui setiap frame (yang bisa mahal!)
Dengan detail, bagaimana Anda bisa dengan murah menghasilkan angka acak pada GPU?