2016-06-09 85 views
1

我仍在使用我自己的自定義遊戲引擎開發我的科幻視頻遊戲。現在,我想在我的遊戲和引擎中實施戰鬥系統。雖然幾乎所有的事情都很清楚,但我想知道如何做適當的激光束,如星球大戰,星際迷航,巴比倫5等等。如何用HLSL和DirectX 11實現激光效果?

我做了一些在線研究,但是我沒有找到任何合適的文章。我很確定我搜索了錯誤的關鍵字/標籤。你能給我一些提示如何實現激光束等效果嗎?我認爲,知道我需要的在線研究的適當技術或術語就足夠了......

回答

6

一個常見的方法是繪製三個(或更多)相交的透明平面,如果你原諒我的粗略繪圖:

1

他們每個人都那麼負有相同的激光紋理漸變爲黑色靠近頂部和底部邊緣:

2

如果添加任何細微的細節,R請根據光束的長度適當縮放紋理座標並啓用包裝。

最後,也是最重要的是,使用着色器只顯示面對相機的飛機,而以掠角漸行漸遠的那些隱藏我們使用相交平面的事實,使光束看起來光滑合理。混合應該是添加劑。你還應該在梁的端部添加一些額外的效果,再次隱藏飛機。

+0

我喜歡這個答案,因爲它很簡單,不論視角如何,都具有良好的效果,而且幾何複雜度低。 – legalize

+1

現在,由於GPU的靈活性,Cross Quad可能不如在屏幕空間中擴展的發送線(可以使用或不使用幾何着色器)。通過在屏幕空間中進行展開,您可以控制在線寬僅爲幾個像素時可能出現的混疊,方法是強制不會降低。 – galop1n

+0

非常感謝你的回答!這聽起來完全合理:)在完成我目前的工作包後,我會嘗試它! – Endgegner85