2015-06-22 125 views
0

通過編寫一個Filter類和適當的帶有頂點和片段着色器的JME材質定義,我正在實施魔獸爭霸/帝國時代風格的「戰爭迷霧」。JMonkey濾鏡着色器 - 獲取片段的世界位置

我能夠很容易地弄清楚,我現在可以例如爲整個屏幕着色。

但是我現在又陷入了計算一個給定的片段位於世界的哪裏。

那麼,這怎麼辦呢?

爲什麼我需要這個,基本上我有一個紋理(32x32),可以根據紋理的alpha通道在特定位置使世界變暗。

0,0在紋理中將對應於世界上的0,0,0。給定一個尺寸爲100,100的「世界地圖或地形」。

+0

碎片已經在Projection Space中,作爲輸入屏幕位置。您正在尋找頂點着色器在着色過程中使用的世界空間。您必須通過這些預測後退工作,可能會更容易從原始幾何圖形開始工作。有關更多信息,請參閱:http://wiki.jmonkeyengine.org/doku.php/jme3:advanced:jme3_shaders –

回答

0

這不回答關於如何獲得在過濾器中使用的着色器碎片的世界上的地位的問題,但無論如何:

有人向我解釋說,這將是明智的執行戰爭迷霧用於遊戲中物體所使用的所有着色器,因爲它更容易並且更容易擴展(可以在個別對象或材質上切換FOW效果)。

答案是添加一個新的varying vec2例如名爲「worldPos」,並將其設置爲頂點着色器中的worldPos = g_WorldMatrix * vec4(inPosition, 1.0);

就是這樣。這雖然不適用於過濾器。