我正在製作一款遊戲,基本上是一個快速變化的2D場景,其中一些點光源(每個都可以有自己的顏色)被放置在屏幕上,也可以自己移動框架。webGL/openGL中多個2D點光源的最高性能方法? [動態燈光]
讓我先給你,我在紙上勾勒少數情況下今天早些時候:
終產物應該像4所示。我的問題歸結爲: 你會選擇哪一個執行爲了表現,爲什麼你會這樣做。
- 多少着色器程序,將需要哪些資源&有多大(紋理?VBO?)
- 方面有多少開關(程序更改,其他制服,..)
我目前的做法將是有光的地方和不光的地方。這將在每幀開始時渲染,但僅用於下一幀。所以Light總是會落後1幀,反正這看起來不錯。在對象的正常渲染過程中(例如藍色矩形),我將在片段着色器中查找光照紋理,並將該值與對象之一組合。
然而,我看到以下缺點:
- 燈總是laags後面(60 FPS => 16.6ms)。隨着對象每幀移動15個像素,這看起來可能很糟糕。
- 無論屏幕上有多少指示燈(可以是0,可以是100),我都需要保持一個很大的紋理。
- 每一幀,我需要清除光質感灰色與阿爾法全球dimmdown然後重繪所有的燈..
最大的優點我看到的是,這僅僅是2D,因此它並不需要知道任何陰影或其他東西。
隨時發佈任何建議,我很高興閱讀和測試它們。不想浪費任何不必要的表現。
嘿,我只是張貼這在這裏也許它仍然releavant。我爲我的庫創建了自定義照明方法:https://github.com/azarus/SGL.js/ **示例:** https://azarus.github.io/sgl.js/examples/light。 html 因爲它使用頂點着色器來計算陰影,所以速度相當快。 – Azarus