Mapgen4-4: unity里的Jobs System不好用
主线程卡死
- 刚开始我是直接在主线程计算,主线程渲染,实在慢的惨败
- 后来仔细看了mapgen4的实现,它是开了一个worker的
弄了个Thread计算地形数据也卡
- 我也开了一个线程,专门用来计算地图数据
- 在编辑器上面跑,也才200ms-300ms这样,慢呀
- mapgen4跑起来渲染只用70ms-80ms这样
导出可执行程序,速度很快
- 尝试导出可执行程序
- 刚开始把 调试代码 勾上导出,速度也不理想
- 然后去掉 调试,速度勉强跟得上mapgen4了,80ms-90ms这样
弄了个Jobs System,限制太多
- 某天看到unity有个Jobs System
- 然后尝试用了
NativeArray<T>
- 然后对array不满意,直接用了 IntPtr
- 哇,回到了我的C++时代,各种指针操作随心所欲
- 我想说这个Jobs是弱鸡吗,虽然它 可能可以往GPU上扔数据 计算,但是,但是,它竟然 不能在另外一个线程上调用
弄了个Parallel.For
- 网上搜索了一下C#并行计算
- C#果然有Parallel接口,虽然不能直接往GPU扔数据,但是我对Parallel很满意,之前Jobs的接口直接调用起来
- 好了,导出程序跑起来40ms,我很开心 ^_^..
- 有个缺点,地形计算的时候cpu会占用高一下子
想优化一下河流生成的算法
- 以适应并发计算,但是以失败告终
- 事实证明我没有理解透彻河流生成算法,还是把它翻译一遍吧
- 很遗憾,未能超越前辈
发现gpu占用好像挺高的
- 发现程序跑起来电脑响声很大
- 是gpu占用很高,然后想着,每次更新地图后才渲染一次