gpt4 book ai didi

optimization - OpenGL ES 2.0 中元胞自动机的纹理格式

转载 作者:行者123 更新时间:2023-12-03 16:59:21 25 4
gpt4 key购买 nike

我需要一些快速的建议。

我想在 GPU 上模拟一个元胞自动机(来自 A Simple, Efficient Methodfor Realistic Animation of Clouds)。但是,我仅限于不支持任何位运算的 OpenGL ES 2.0 着色器(在 WebGL 中)。

由于此元胞自动机中的每个单元都代表一个 bool 值,因此每个单元存储 1 位将是理想的。那么在 OpenGL 的纹理格式中表示这些数据的最有效方法是什么?有什么技巧还是我应该坚持使用直接的 RGBA 纹理?

编辑:这是我到目前为止的想法......

目前我正在考虑使用普通的 GL_RGBA8、GL_RGBA4 或 GL_RGB5_A1:

  • 可能我可以选择 GL_RGBA8,并尝试使用浮点运算提取原始位。例如。 x*255.0给出一个近似的整数值。但是,提取单个位有点麻烦(即除以 2 并四舍五入几次)。我也对精度问题保持警惕。
  • 如果我选择 GL_RGBA4,我可以为每个组件存储 1.0 或 0.0,但我可能也可以尝试与之前使用 GL_RGBA8 相同的技巧。在这种情况下,它只是 x*15.0 .不确定它是否会更快或看不到,因为提取位的操作应该更少,但每次纹理读取的信息更少。
  • 使用 GL_RGB5_A1 我可以尝试看看是否可以将我的单元格与一些附加信息打包在一起,例如每个体素的颜色,其中 alpha channel 存储 1 位单元格状态。
  • 最佳答案

    创建第二个纹理并将其用作查找表。在纹理的每个 256x256 block 中,您可以表示一个 bool 运算,其中输入由行/列表示,输出是纹理值。实际上,在每个 RGBA 纹理中,您都可以表示 每个 256x256 区域的 bool 运算。不过要注意纹理压缩和 MIP 贴图!

    关于optimization - OpenGL ES 2.0 中元胞自动机的纹理格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3647815/

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