Colors ShaderMaterial中的数据处理/自定义颜色策略

Colors ShaderMaterial中的数据处理/自定义颜色策略,colors,3d,three.js,webgl,shader,Colors,3d,Three.js,Webgl,Shader,我需要战略帮助才能行动。 我需要用自定义(顶点)颜色(RGBA)设置一个由三个线段组成的大型网络的动画(大约150k段,静态)。对于每个段,我在7天内有24个测量值[因此5.04×10^7测量值,或2.016×10^8vec4颜色缓冲区数组大小,大约770Mb在float32array大小]。< 动画每天每小时以2.5秒的速度播放,需要在每帧的基础上(通过时间delta)为每个片段应用插值颜色。为了能够将alpha值应用于顶点颜色,我需要使用带有vec4颜色属性的THREE.ShaderMate

我需要战略帮助才能行动。

我需要用自定义(顶点)颜色(RGBA)设置一个由三个线段组成的大型网络的动画(大约150k段,静态)。对于每个段,我在7天内有24个测量值
[因此
5.04×10^7
测量值,或
2.016×10^8
vec4颜色缓冲区数组大小,大约770Mb在
float32array
大小]。
< 动画每天每小时以2.5秒的速度播放,需要在每帧的基础上(通过时间
delta
)为每个片段应用插值颜色。为了能够将alpha值应用于顶点颜色,我需要使用带有
vec4
颜色属性的
THREE.ShaderMaterial


我不明白的是如何最好地处理每个顶点的数据量。有一些想法需要改进

  • 计算渲染循环中的RGBA值(在当前颜色数组和未来一小时的颜色数组之间,通过插值时间
    增量
    ),并更新
    颜色
    缓冲区属性
    [我预计帧率会大幅下降]
  • 拥有
    currentColor
    nextColor
    缓冲区属性(当前小时和下一小时),在每一步(2.5秒)将这两个属性重新上传到GPU,并在着色器中进行插值(使用传统时间
    delta
    统一)
    [对我来说似乎是最好的选择]
  • 最初,使用多个自定义属性或一个非常大的缓冲区数组将所有数据上载到GPU,并在着色器中进行迭代和插值
    [如果可能,可能会更好;我知道我可以设置缓冲区数组的偏移量,以便为每个顶点读入,但不确定这是否像我认为的那样工作…]
  • 在这两者之间做一些事情,比如在一块中上传一天的数据,而不是所有数据或每小时的数据
场景和想法有意义吗?如果是:

  • 最合适的方法是什么?
  • 我很感激你的建议

所有这些都要试一试吗?就我个人而言,我可能会尝试“上传所有数据”,无论是在缓冲区还是纹理中。好的,谢谢@gman…是的,我会尝试不同大小的数据块,看看它会去哪里。我希望有一个既定的方法;在three.js/webgl中使用缓冲区属性进行操作时,要获得正确的想法并不容易。