0x5f3759df

Израчунавања осветљења и рефлексија (овде приказани у пуцачини из првог лица OpenArena) користе брзи инверз квадратног корена за налажење упадног угла.

Брзи инверз квадратног корена (познат и као Fast InvSqrt() или по хексадекадној константи 0x5f3759df) је метод за рачунање x−½, мултипликативног инверза квадратног корена броја записаног у 32-битној прецизности покретног зареза у IEEE 754 формату. Алгоритам је вероватно развијен у компанији Силикон графикс почетком 1990-их, а његова имплементација се јавила 1999. у изворном коду игрице Quake III Arena, али сам метод се није појавио на јавним форумима као што је Usenet све до 2002 или 2003.[1] У то време, првенствена предност алгоритма се састојала у избегавању рачунски скупих аритметичких операција у покретном зарезу, уместо којих се користе целобројне операције. Инверзни квадратни корен се користи у рачунању упадних углова и рефлексије светлости и сенки у рачунарској графици.

Алгоритам узима 32-битни број у покретном зарезу као улаз, и складишти његову половину за каснију употребу. Затим се, посматрајући битове који представљају број у покретном зарезу као 32-битни цео број, спроводи операција логичког шифтовања удесно за један бит, а резултат те операције се одузима од „магичне“ константе 0x5f3759df. Ово је прва апроксимација инверзног квадратног корена улаза. Затим се битови поново посматрају као број у покретном зарезу и спроводи се једна итерација Њутновог метода како би се добила прецизнија апроксимација. Ово рачуна апроксимацију инверза квадратног корена броја у покретном зарезу отприлике четири пута брже него коришћењем дељења бројева у покретном зарезу.

Алгоритам је првобитно приписиван Џону Кармаку, али је истраживање показало да овај код има дубље корене у хардверској и софтверској страни рачунарске графике. Прилагођавања и измене су пролазиле кроз компаније Силикон графикс и 3dfx Interactive, а имплементација Гарија Таролија за SGI Indigo представља најранију познату употребу алгоритма. Није познато како је константа првобитно откривена, мада је истраживање навело на неке могуће методе.

  1. ^ Sommefeldt, Rys (29. 11. 2006). „Origin of Quake3's Fast InvSqrt()”. Beyond3D. Архивирано из оригинала 09. 02. 2009. г. Приступљено 12. 02. 2009. 

© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search