即時通訊基本上試圖提供關於對象的不同形狀信息到用glsl編寫的光線跟蹤器。訪問來自glsl着色器的自定義數據
形狀像
球體:VEC3中心;浮動半徑;
box:vec3 center; vec3 halfSize;
等
的問題有以下要求:
- 在片段着色器可以訪問所有的形狀
- 不使用統一的變量,給他們的每一幀,不知何故緩存它們更長的時間直到手動移除。
- 能夠從應用程序
- 數據是可變長度每種類型的更新數據(球,箱的計數,...)
數據沒有被交織。
- 所以統一變量發送太多的數據。似乎
- 屬性不被換貨很多種對象(屬性陣列使用一個位置上的每個元件)
- 紋理改變數據不期望且難看訪問形狀信息
這樣一個如何能做到這一點?
最好還具有代表數據的結構。像結構體Sphere {vec3 p; float r; }; ...
一般來說,在片段着色器你將有機會獲得的唯一途徑「所有」的東西,如果你使用的紋理或最近(的OpenGL 4.2+)圖像加載/存儲的狀態存儲。計算着色器是一個非常適合這種事情,所以很高興知道你所瞄準的是哪一代硬件G。 –