GT's Indie Road

游戏开发 | 程序设计 | 算法

Cocos Creator流体渲染效率优化

一种粒子渲染优化方法

流体效果相信大家都不陌生,一种常用的实现方式是基于metaballs,可以参考这里和这里获取metaballs的shader代码。如果要渲染有一定体积的流体,需要实时渲染几十上百甚至上千个metaball,此时渲染的效率就需要考虑进来。论坛里已经有不少相关的实现,本文将对两种不同的实现进行学习分析并提出优化方案。优化方案只针对运行效率,本文不讨论metaballs渲染的视觉效果优化。 ...

记人生第一次GameJam

CGJ2020参赛记录

关于活动 活动时间是8月14 18:00 ~ 8月16 18:00,游戏、解说视频提交截止时间8月16 22:00。今年采用线上合作模式,根据主办方赛后直播总结,今年的成品提交数有300+,成品率相当高。 今年的主题是一张图片,需要开发者自己去解读。不少团队基于箱子、蚂蚁或裂痕做文章,也有不少团队解读出“讽刺过度消费主义”的思想,把箱子看成快递盒子,把蚂蚁看成对“蚂蚁花呗”类信贷产品的...

在Shader中处理Atlas的uv以及一点小优化

背景 接上一篇https://forum.cocos.org/t/topic/95986如何在最小改动shader的前提下,让shader支持atlas? 方法 一个相对通用的方法,是将子纹理uv射到[0, 1]区间,其余部分保留shader原来的逻辑。普通的映射函数如下, Remap01 将子纹理uv映射到[0, 1]区间, Remap 则支持任意两个区间的映射。 1 2 3 4 ...

自定义渲染应用——图片遮罩合批

性能和特效我全都要!

背景 不少同学在用shader实现某个特效后都会遇到这样一个问题,在测试的时候效果完全正确,一集成到项目中后纹理就发生错位。这种情况大多是由于shader使用的纹理参与了合图导致uv发生了变化。 简单的处理方法是去掉纹理的packable属性,使其不参与合图。但是这样会带来一个问题: 不合图意味着渲染时无法参与合批,如果有大量节点用到了这个shader,那么drawcall就会较高。 经过...

Shader练习场


Cocos Creator自动分层渲染

背景 在实现背包或者列表页时往往要去考虑合批渲染的问题,因为这两个场景的item往往较多。有时候一个item由多层渲染组件组成,父子节点之间还不能合批,这个时候要考虑通过分层合批的方式降低Draw Call。 目前常用的两种分层合批方式: 拆分无法合批的父子节点,将他们分别装入两个容器,每个容器内可以合批渲染。这种方法对业务改动较大,在原父节点的位置、透明度、active属性被...

Cocos Creator自定义渲染 —— 自定义顶点格式

背景 在Cocos Creator中通过自定义渲染可以实现很多酷炫的shader特效,目前常用的有两种方法: 创建自定义材质,给材质增加参数。这个参数会作为uniform变量传入shader由于渲染合批要求材质参数保持一致,所以如果大量对象使用自定义材质时,并且材质参数各不相同,是无法进行合批渲染的,一个对象占一个draw call 创建自定义assembler,在顶点数据输入...