colors - ShaderMaterial 中数据处理/自定义颜色的策略
问题描述
我需要战略帮助才能开始。
我需要THREE.LineSegments
使用自定义(顶点)颜色(RGBA)为一个大型网络(大约 150k 段,静态)制作动画。对于每个段,我在 7 天内有 24 个测量值
[所以5.04 × 10^7
测量值或2.016 × 10^8
vec4
颜色缓冲区数组大小,大小约为 770Mb float32array
]。动画以 2.5 秒的步长为每一天的每一小时播放一次,并且需要在每帧的基础上(通过 time )
将插值颜色应用于每个片段。delta
为了能够将 alpha 值应用于顶点颜色,我需要使用THREE.ShaderMaterial
带有vec4
颜色属性的 a。
我不明白的是如何最好地处理每个顶点的数据量。有些想法是
- 计算渲染循环中的 RGBA 值(在当前颜色数组和未来一小时的颜色数组之间,通过插值 time
delta
)并更新color
缓冲区属性
[我预计帧率会大幅下降] - 有一个
currentColor
和nextColor
缓冲区属性(当前小时和下一小时),在每一步(2.5秒)中重新上传到GPU并在着色器中进行插值(使用额外的时间delta
统一)
[对我来说似乎是最好的选择] - 最初将所有数据上传到 GPU,使用多个自定义属性或一个非常大的缓冲区数组,并在着色器中进行迭代和插值[如果
可能的话可能会更好;我知道我可以设置缓冲区数组的偏移量以读取每个顶点,但不确定这是否像我认为的那样工作......] - 在两者之间做一些事情,比如上传一天的数据,而不是所有数据或每小时数据
场景和想法有意义吗?如果是这样:
- 这样做最合适的方法是什么?
- 我感谢任何额外的建议。
解决方案
推荐阅读
- typescript - 如何使用已知但可选的键为 GraphQL 添加类型
- javascript - How can I examine the actual grid area of my grid items in dense auto-flow
- c# - 无法使用“/connect/authorize”端点从 IdentityServer4 获取授权码
- java - 使用 android studio 写入实时数据库
- mysql - Spring Boot 自动增量预处理
- java - ChromeOptions 的 addArguments(java.lang.String... arguments) 方法给出错误
- typescript - TS:使用其余参数键入高阶函数 ...args
- javascript - JavaScript 仅在按下 Ctrl + F5 时有效
- python - 在布局中找不到 ID > 当我想点击提交按钮时
- git - 我需要在 git status 中取消看到字符