2011-07-12 22 views

回答

0

正如之前所說的,甚至有軟件渲染演示實現實時光線追蹤,如Heaven7Nature Suxx。我記得當時以200Mhz的速度在奔騰MMX上以320 * 200的分辨率以不俗的速度運行它們。這些工作如此之快,可以通過細分屏幕中的瓦片並對瓦片角落中的像素進行光線追蹤,並且只有在4 * 4瓦片或2 * 2瓦片等等的不同細分和做更多計算的值的情況下。否則,插入它們之間的值。

現在,使用着色器代碼優化GPU上的光線跟蹤並且在高分辨率下以很好的幀速率進行每像素光線跟蹤變得容易得多。 Sult只是使用另一種稱爲raymarching的技術,但實質上它是光線跟蹤的另一種方式(取決於您如何定義術語),它具有優點和缺點,例如,它非常適合小尺寸引導和特定扭曲對象以及空間中物體的重複傳統的光線追蹤技術並不那麼容易或快速。

但基於你原來的問題的措辭,我想你可能也想知道,爲什麼這些人這樣做,我們沒有看到它在主流?我們都從遊戲行業的開發者那裏聽說,光線追蹤是未來的事情,在遊戲中還是不可行的。那麼,來自展示會的一些業餘愛好者如何讓它成爲可能,但業界資深人士說現在還沒有呢?從技術上講,我們已經可以對50個球體或raymarch進行光線追蹤,重複同一個球體並使其扭曲和扭曲。但是,遊戲正在使用多邊形,數十萬甚至數百萬個。對數百萬個多邊形檢查單一射線是完全不同的故事。我知道,有些方法像kd-tree細分空間,只檢查本地多邊形很少的光線,但即使使用強大的GPU,它仍然是一個非常棘手的問題。也許沒有什麼可以獲得的,除了擁有完美的陰影和反射免費(在多邊形引擎中你必須用乏味的方式實現它),而且很多都會失去。雖然demoscene介紹主要是在具有抽象幾何形狀,隱式函數或體素數據的場景中進行光線跟蹤,但對於真實生活的3D幾何場景和視頻遊戲角色而言,這些都非常抽象。大多數場景都很小,不會輕易在開放的沙盒遊戲中工作。

因此,雖然這些介紹確實實現了實時光線跟蹤,並且我們自2000年以來即使在CPU上也做到了這一點,但對於在現實世界中多邊形引擎仍然更加高效和有用的遊戲開發來說,這並不實際。所以,你會聽到專業人士聲稱硬件沒有準備好進行光線追蹤(在他們的數百萬個多邊形場景中),但是看到一些業餘愛好者在GPU上做這件事,甚至是4k的尺寸。