2016-06-09 24 views
1

我仍在使用我自己的自定义游戏引擎开发我的科幻视频游戏。现在,我想在我的游戏和引擎中实施战斗系统。虽然几乎所有的事情都很清楚,但我想知道如何做适当的激光束,如星球大战,星际迷航,巴比伦5等等。如何用HLSL和DirectX 11实现激光效果?

我做了一些在线研究,但是我没有找到任何合适的文章。我很确定我搜索了错误的关键字/标签。你能给我一些提示如何实现激光束等效果吗?我认为,知道我需要的在线研究的适当技术或术语就足够了......

回答

6

一个常见的方法是绘制三个(或更多)相交的透明平面,如果你原谅我的粗略绘图:

1

他们每个人都那么负有相同的激光纹理渐变为黑色靠近顶部和底部边缘:

2

如果添加任何细微的细节,R请根据光束的长度适当缩放纹理坐标并启用包装。

最后,也是最重要的是,使用着色器只显示面对相机的飞机,而以掠角渐行渐远的那些隐藏我们使用相交平面的事实,使光束看起来光滑合理。混合应该是添加剂。你还应该在梁的端部添加一些额外的效果,再次隐藏飞机。

+0

我喜欢这个答案,因为它很简单,不论视角如何,都具有良好的效果,而且几何复杂度低。 – legalize

+1

现在,由于GPU的灵活性,Cross Quad可能不如在屏幕空间中扩展的发送线(可以使用或不使用几何着色器)。通过在屏幕空间中进行展开,您可以控制在线宽仅为几个像素时可能出现的混叠,方法是强制不会降低。 – galop1n

+0

非常感谢你的回答!这听起来完全合理:)在完成我目前的工作包后,我会尝试它! – Endgegner85