【问题标题】:Opengl Es liquid shaderOpengl Es 液体着色器
【发布时间】:2014-06-19 19:51:42
【问题描述】:

我目前在 android opengl 中有一个粒子系统。物理都得到了照顾,粒子很好地吸引到屏幕上。唯一的问题是它们呈现为 GL_Points。所以它们只是彩色方块。我想知道是否有人知道如何将这些点组合成当粒子足够接近时看起来像液体的斑点。能够避免纹理会很好,但任何着色器建议将不胜感激。

【问题讨论】:

  • 您正在寻找“网格化”这些点。
  • 没有任何细节是没有意义的
  • 这很有意义。您从粒子系统中获取点并将它们变成“网格”。这就是你想要的名字。
  • 除非行不通...
  • 您在帖子中描述的是一个粒子网格系统,它们当然可以工作。

标签: android opengl-es shader liquid particles


【解决方案1】:

有一些技术,比如移动立方体,可以从点云中创建一个网格。但这永远不会在智能手机上实时运行。除非你模拟一个超微小的液体。

您可以使用网格行进对渲染进行光线追踪,附近的粒子可能具有距离阈值,该距离阈值将使像素退出行进循环并根据此时附近粒子的距离渲染一些颜色。这对于智能手机来说非常沉重(但对于 GTX480 来说完全可行)。

您可以放弃高科技并使用广告牌渲染,每个点变成 4 个点(由于几何着色器或由于一些 CPU 端粒子场扩展副本传递到四边形缓冲区)然后使用球形广告牌渲染正确的混合设置(添加剂会很好)以避免广告牌相互交叉并需要排序,这会在小型设备上扼杀您的性能。

这里有一些关于球形广告牌的资源: http://www.gamerendering.com/category/particle-systems/

您可以根据每个像素的字段评估来发明自己的广告牌渲染着色器。广告牌几何图形只是一种“支持”,可以像空间分区优化一样工作。如果你现在正在评估一个片段,而不是行进一个网格,你会知道,这是因为你在粒子场附近。因此,您可以加速对 narby 粒子的研究并从中计算 blob 场,并从中决定像素的渲染。请注意,如果影响函数返回低于阈值的值,则结果可能是丢弃。这将有助于创建具有清晰界面的表面,例如水。 (而不是像烟雾或蒸汽这样的气体)。但它需要在每一帧为纹理准备一个很好的查找结构。比如说一个带有粒子信息的立方体纹理,以便在着色器中快速查找。我怀疑这可以在智能手机上完成,除了超小型模拟。

【讨论】:

    【解决方案2】:

    您正在寻找一种称为元球的技术。 这是一个参考:http://nullcandy.com/2d-metaballs-in-xna/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多