如何使用 HLSL 和 DirectX 11 制作激光效果?

How to do a laser effect with HLSL and DirectX 11?

我仍在使用我自己的自定义游戏引擎开发我的科幻视频游戏。现在,我想在我的游戏和引擎中实现战斗系统。虽然几乎所有事情对我来说都很清楚,但我想知道如何制作像星球大战、星际迷航、巴比伦 5 等中已知的激光束?

我在网上做了一些调查,但是没有找到合适的文章。我很确定我搜索错误 keywords/tags。你能给我一些提示,说明如何实现激光束等效果吗?我认为,了解在线研究所需的正确技术或术语就足够了...

一个常见的方法是像这样画三个(或更多)相交的透明平面,请原谅我粗略的画法:

它们中的每一个都具有相同的激光纹理,在顶部和底部边缘附近逐渐变黑:

如果添加任何细微的细节,请记住根据梁的长度适当缩放纹理坐标并启用环绕。

最后,也是最重要的,使用一个只显示面向相机的平面的着色器,同时以掠射角淡化那些平面,以隐藏我们正在使用相交平面的事实,并使光束看起来平滑且似是而非的。混合应该是附加的。您还应该在梁的末端添加一些额外的效果,再次隐藏平面。