gpt4 book ai didi

opengl-es - 使用 OpenGl 渲染真实的闪电

转载 作者:行者123 更新时间:2023-12-05 05:28:42 37 4
gpt4 key购买 nike

我正在为我的 3D 游戏实现一个简单的闪电效果,如下所示:

http://www.krazydad.com/bestiary/bestiary_lightning.html

我正在使用 opengl ES 2.0。不过,我正在考虑在 3D 环境中渲染它的最佳外观和性能效率最高的方式是什么,因为从任何角度观看时,组成电动 bolt 的线条都需要看起来“坚固”。

我想为每个线段生成两个平面,在 X 交叉中以创建线条粗细的效果。通过禁用深度缓冲区写入进行渲染,使用某种关闭的加法混合模式。使用带 alpha channel 的电子外观纹理对每个线段进行纹理处理。

不过,我有点担心使用这种方法生成必要的三角形列表会影响性能,因为我的游戏可能会同时生成大量闪电。但由于闪电的长度和厚度会有很大差异,我怀疑简单地使用闪电的动画 3D 对象,拉伸(stretch)并指向正确的位置是否会很好看,这是我最初的想法。

我正在考虑另一种方法,即在后处理过程中使用投影端点之间的二维线来渲染闪电。这应该很好用,因为在我的例子中透视效果可以忽略不计,除非让线条出现在遮挡物体后面会很棘手。

关于这里的最佳方法有什么好的想法吗?

编辑:我从 nVidia 找到了这份白皮书:

http://developer.download.nvidia.com/SDK/10/direct3d/Source/Lightning/doc/lightning_doc.pdf

它使用一种为每个线段设置广告牌的方法,然后应用一些过滤来平滑每个广告牌产生的间隙和重叠。

似乎产生了相当不错的视觉效果,但我对额外的过滤 channel 不太满意,因为该游戏是针对手机的,这样的步骤成本很高。而且,事实证明,由于额外的矩阵计算开销,广告牌的 CPU 开销也相当大,这在移动设备上很慢。

最佳答案

我最终做了一些类似于 nVidia 论文建议的事情,但是为了避免后处理步骤的需要,我为不同类型的分支角度使用了不同类型的纹理,以避免段角的间隙和重叠,结果相当出色地。为了避免昂贵的广告牌矩阵计算,我改为使用更二维的方法绘制线段,但手动计算线段中每个顶点的深度值。这会产生可接受的性能和视觉效果。

关于opengl-es - 使用 OpenGl 渲染真实的闪电,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8640940/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com