首先,我是通用的WebGL,OpenGL編程的新手。我認爲這些工具可以讓我解決一個問題,但我不知道從哪裏開始。大規模光線投射和計數命中
我的問題: 給定一個起點,一個目標(三角形或網狀)和多方向矢量(千)清單,有沒有用我的GPU來算擊中目標的光線數量的方式?理想情況下,我想用我的GPU的能力來解決這個問題,因爲它似乎比我的CPU更適合它。
我相當肯定我可以用我的cpu編寫一些代碼來做到這一點,但是它需要很長時間才能在for循環中通過我的向量。
感謝
首先,我是通用的WebGL,OpenGL編程的新手。我認爲這些工具可以讓我解決一個問題,但我不知道從哪裏開始。大規模光線投射和計數命中
我的問題: 給定一個起點,一個目標(三角形或網狀)和多方向矢量(千)清單,有沒有用我的GPU來算擊中目標的光線數量的方式?理想情況下,我想用我的GPU的能力來解決這個問題,因爲它似乎比我的CPU更適合它。
我相當肯定我可以用我的cpu編寫一些代碼來做到這一點,但是它需要很長時間才能在for循環中通過我的向量。
感謝
你可以試試這個,這不是begginers的事情,但:
現在絕對超出我的能力,但至少這是一個起點。我現在可以研究這些概念並希望能夠解決這個問題。以前甚至都不知道我的搜索中包含哪些條款。 – user2693883
我看到實現你正在嘗試做的一種方式,就是用另一種方式來思考你的問題,在屏幕上的一種「反向」光線投射。
你說你只有一個原點,一個目標,和很多的方向。因此,它大致類似於光線跟蹤渲染,因此您可以從WebGL製作的角度來思考問題:使用投影矩陣在屏幕上繪製3D對象。
創建一個投影矩陣對應於您的原點爲的觀點,在看目標,與適當的FOV
渲染在平坦顏色的對象(黑色背景上的例如白色)在一個紋理,使用這個投影矩陣。
使用相同的投影矩陣將射線「投影」到2D紋理座標中。
檢查光線方向的結果2D座標中的紋理像素:如果像素是白色,則此光線會撞擊物體。
你甚至可以使用另一種着色器來實現的最後兩個部分,通過傳送光線方向的頂點緩存,與在片段着色器之前創建的質感。問題將是從着色器獲得遞增的值。
你的光線的方向矢量是隨機分佈還是形成一個統一的網格?與光線數量相比,您有多少個三角形? – Quinchilion
方向儘可能隨機,但只限於一個半球。一般來說,我將處理一個簡單的目標與少於十幾個三角形。在某些情況下,需要查看3到4個單獨的目標。 – user2693883