» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[其他] 戴森球这团队神了,一个程序员能搞定这种级别的开发

引用:
原帖由 mimicry 于 2021-2-3 01:45 发表
posted by wap, platform: iPhone
Gpu instancing和ECS吧?早都是unity标配了。gpu instancing要兼容gles2的手机gpu很麻烦的,不做手机的话没啥难度
U3D自带的GPU Instancing其实和通常意义的GPU Instancing,也就是当年ATI和NV宣传的那个不同。而更接近于Shader Instancing的实现方式(用Constant Buffer传Instancing数据)。所以会有比较严格的instancing number限制,尤其是在GL系硬件上,缺省把ConstantBuffer容量给乘1/4了。而原本的GPU Instancing的InstancingData是通过VertexStream传的,所以限制小的多。按理说U3D的实现方式,应该可以兼容GLES2硬件的,但印象中它要求GLES3。当然ES2的硬件,在现在这年代对于有诸如GPU Instancing功能需求的App,一般也不会考虑了吧。
当然,其实戴森球主程使用的是类似于Indirect Instancing的方法,没有前面说的这个限制。
另外在他的这个优化里,预先把模型动画直接给采样成顶点变形动画这点,我觉得其实有待商榷。因为诸如旋转等动画,按顶点形变来做,采样少了会形变明显,就好像一个圆周运动只采样6次就变成了六边形轨迹运动;采样多了又数据量爆炸。所以我个人觉得还是应该维持骨骼动画的格式,使用ComputeShader计算Instancing的BoneMatrix这样来实现.十来年前,还是DX9c时代。ATI就实现过GPU完成的Instancing骨骼动画,那时候DX10还没出来更没有ComputeShader,RWStructBuffer这些东西,ATI用的是R2VB。


TOP

发新话题
     
官方公众号及微博