首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之ECS渲染Sprite(一百一十二)
2019
12-28

Unity3D研究院之ECS渲染Sprite(一百一十二)

首先我们先借助Unity的SpriteAtlas构建一个图集,同一个图集只会占用一个DrawCall。

Unity3D研究院之ECS渲染Sprite(一百一十二) - 雨松MOMO程序研究院 - 1

接着写一个脚本,把需要参与ECS渲染的Sprite拖上去。

Unity3D研究院之ECS渲染Sprite(一百一十二) - 雨松MOMO程序研究院 - 2

渲染的原理就是 m_BatchRendererGroup.AddBatch

ECS负责坐标的修改

1.参与渲染的sprite数量发生变化(增加、删除)需要重新m_BatchRendererGroup.AddBatch

2.参与渲染的sprite数量没有发生变化,只是坐标发生变化,那么在Job里重新计算坐标

3.参与渲染的sprite数量没有发生变化、坐标也没有发生变化,例如:血条 显示图片一部分,只需要重新刷新MaterialPropertyBlock即可。

渲染区域需要动态的传入shader中。

最后就是结果 图片锚点、显示图片一部分、或者完整显示图片,一个drawcall全部渲染完毕。

Unity3D研究院之ECS渲染Sprite(一百一十二) - 雨松MOMO程序研究院 - 3

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院之ECS渲染Sprite(一百一十二)》有 5 条评论

  1. li 说:

    向站长学习

  2. STHMZ 说:

    最近看了DOTS的哔哩哔哩的《Unity DOTS技术详解 – 宣雨松》,是不是3D游戏的DOTS实现要自己写ECS渲染,才能实现视频里的千人同屏60帧,而如果只是用DOTS修改GameObject数据,是达不到优化效果的?第一遍看演讲的时候’ECS渲染’最后才讲,甚至没给我感觉很重要,最后发现这部分才是最困难最吓人的,将创建出来的Entities 3D数据最终渲染到画面上,这要从什么领域入手?最后发现看蒙了。

    • 雨松MOMO 说:

      目前 unity提供将 meshrenderer直接转成ECS 并且不支持lighmap ,还有别的渲染组件 比如 动画、 粒子、这些都需要开发者自己来做。
      根据unity公布的消息,后面会慢慢都支持,现阶段只能自己来做。

  3. Lookchard 说:

    我想请教一下 ECS能不能使用类似Renderer的sortingOrder进行渲染排序的呢

    • 雨松MOMO 说:

      ECS是处理数据的,本身是不包含渲染的, 你可以想象ECS先把需要显示的数据在JOB中 处理完,然后在通过GPU instancing m_BatchRendererGroup.AddBatch 、 SRPBather渲染出来。 渲染的时候是支持sortingOrder的

STHMZ的回复 取消回复

你的email不会被公开。