ShaderMaterial

时间:2018-05-03 18:02:09

标签: colors 3d three.js webgl shader

我需要战略帮助才能开始。

我需要使用自定义(顶点)颜色(RGBA)为THREE.LineSegments(大约150k段,静态)的大型网络设置动画。对于每个细分,我在7天内有24个测量值[{5.04 × 10^7测量值,或2.016 × 10^8 vec4颜色缓冲区数组大小,float32array约为770Mb大小。

动画以2.5秒的步长每天经历每一小时,并且需要在每帧的基础上对每个片段应用插值颜色(通过时间delta)。为了能够将alpha值应用于顶点颜色,我需要使用具有THREE.ShaderMaterial颜色属性的vec4

我不理解的是如何最好地处理每个顶点的数据量。一些想法是

  • 计算渲染循环中的RGBA值(当前颜色数组与未来一小时之间的RGBA值,通过插值时间delta)并更新color缓冲区属性[我期待帧率大幅下降]
  • 具有currentColornextColor缓冲区属性(当前小时和下一小时),在每个步骤(2.5秒)内重新上传到GPU并在着色器中进行插值(具有附加时间) delta制服)
    [对我来说似乎是最好的选择]
  • 最初将所有数据上传到GPU,使用多个自定义属性或一个 very 大缓冲区数组,并在着色器中进行迭代和插值[可能更好如果可能;我知道我可以设置缓冲区数组的偏移量来读入每个顶点,但不确定它是否像我认为的那样有效...]
  • 在两者之间做一些事情,比如在一个块中上传一天的数据而不是所有数据或每小时数据

情景和想法是否有意义?如果是这样的话:

  • 这样做最合适的方法是什么?
  • 我感谢任何其他建议。

0 个答案:

没有答案