自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 UE4 Hi-Z遮挡剔除实现详细解析

基于UE4详解解析Hi-Z遮挡剔除的原理和实现细节,也会解析移动端的实现和问题

2022-10-15 22:20:28 2102 1

原创 Unity基于JobSystem的流式LODGroup

目录简介功能展示性能测试与Unity自LODGroup对比技术详解简介 Unity自带LODGroup是黑壳的东西,我们无法做到修改其代码(买源码的例外),在手游项目中往往要控制游戏内存的增长,是否可以从常驻内存的LODGroup入手??这里作者就写了个流式的LODGroup。 源代码连接:https://github.com/aganwenqi/LODGroup功能展示 展示LOD结构常驻内存流式加载常驻内存和流式加载混合...

2021-03-17 16:17:48 3001 9

原创 Unity URP渲染管线---实现自定义渲染物体

Unity内置管线是无法实现控制每个层级的渲染,而URP通用渲染管线却给了我们机会,这里就介绍如何自定义渲染。效果 本次示例场景中有一块plane和几个物体,这里将plane先渲染之后再渲染其他物体,图中是最终结果。 从FrameDebug中看到了先渲染了Plane,这里不是通过改变单独的RendererQueue实现的,这是相当于自己实现了渲染物体。原理详解 URP版本10.3.1,Unity2020.2.3 ...

2021-02-28 18:13:12 2179

原创 Unity URP渲染管线---实现云阴影效果

在很多游戏中都会有体积云这种物种,且很多是会动的体积云,那么云会动就难免会有云阴影,而实时阴影是很耗性能的,原神也是有云阴影的,至于他们怎么实现不得了之,这里作者用深度图重建世界坐标的方式实现云阴影效果,只需要2个DrawCall就可以完成。 实现是在URP下实现,如果不知道URP怎么用可以先看:https://blog.csdn.net/qq_33700123/article/details/114092028效果 主要是由下面参数云阴影,比如在什么时候加入阴影、出...

2021-02-26 17:38:10 2192

原创 Unity URP渲染管线---自定义渲染详解(入门)

本篇文章主要介绍URP自定义渲染RendererFeature、RendererPass的使用,并详细解析继承下来的每个方法什么时候会被调用,基础的URP请参考这位博主文章:https://blog.csdn.net/qq_30259857/article/details/108318528。测试demo效果RendererFeature、RendererPass使用在使用URP的时候先在PackageManager上导入Universal RP1、当Render...

2021-02-25 17:08:23 12296 8

原创 Unity角色残影特效支持gpuInstancing

网上的角色残影实现非常的多,不过大致思想都差不多。 这次作者也不例外,唯一不一样的是作者还实现了节省性能的GPUInstancing的处理,另外支持URP的shader代码也一并给出了。 传统的做法是将角色所有的SkinnedMeshRenderer 拷贝一份出来然后自己把拷贝的mesh通过半透明材质画出来,拷贝mesh这个过程的消耗其实很小不用担心,要担心的是SkinnedMeshRenderer网格可能面数会比较多,残影一下子生成很多个,且每个残影一个DrawCa...

2021-02-22 16:33:58 758

原创 Unity性能优化笔记之MMOARPG手游优化

MMOARPG手游性能优化场景优化 场景优化能够极大提高游戏性能1、花草树木使用Gpu Instancing2、关闭静态合批,因为开启后Unity会把场景所有材质球一样的静态物体合并成大网格,在打包的时候新出来的网格会占用包大小3、场景基本不重复或重复量小的物件让美术合并4、场景分层、分块加载5、一些相同材质球的Mesh被加载出来可用采取动态的静态合批策列,实测性能比不用好太多。UI相关优化 同样能够提高很大的性能1、合理、分类打图集,...

2021-02-21 20:39:38 575

原创 无缝大世界之任意形状切割Mesh

目录1、简介2、技术详解与实现原理简介本篇文章介绍将如何任意对mesh进行无规则切割,如下图,这是一张Unity的Terrain,通过自己指定的切割形状把需要的部分切割了出来,注意,这种算法不是只有地形可用,是针对mesh做的,图中只是示例。题外话:在无缝大世界中,往往一张大地图的地表贴图数量会很多比如有10多张,在某些地方比如下雪和秋天的交界处,往往这个地方的地形贴图是混合有两种类型的刷子贴图,如下图所示,这样shader里混合图通道需要更多,要的刷子纹理也越多,为了避免这个问题,

2021-02-21 16:03:32 1801

原创 无缝大世界之无缝连接Terrain转mesh

目录Terrain转Mesh介绍2、实现方案3、技术原理 (1)Terrain转Mesh (2)减面生成多层LODTerrain转Mesh介绍Unity传统的Terrain面数是非常恐怖的存在,且会产生大量的Draw Call和Terrain Data,内存大加载耗时等,它们都会导致性能的极大消耗,不适合在实际项目中使用,因此Terrain转Mesh诞生。本篇文章介绍的方案与传统的转mesh有所不同,这次转mesh是针对无缝大世界所准备,一下将会介绍方案和技术实现原理。..

2021-02-20 20:37:23 3406

原创 Mesh减面算法详解

本篇文章所讲述如何实现mesh减面工具。思想由作者创建。目录1、Unity Mesh对象里的数据构成2、智能减面详解Unity Mesh对象里的数据构成 这里主要介绍相关的数据,如下图。 Triangles数组存储的是所有三角形对应于vertices数组里的顶点,triangles从坐标0~n依次存储了每个三角形三个顶点在vertices下的位置,uv也是跟vertices对应的,知道这些后我们就可以对mesh任意操作了。智能减面详解减面前数据结构准备...

2021-02-20 20:29:58 4337 1

原创 Unity HLOD System(官方插件)详细解析

Unity HLOD System(官方插件)详细解析 目录简介 功能与支持 技术解析 实际使用中的扩展 改进的地方一、简介 HLOD System主要的目标是为了减少Draw Call。然后,进行更多的Batch批处理。其次,减少面数和纹理,这样我们相应地节省了内存,并提升了加载时间。 HLOD System只针对当前所在的地方进行加载,它会流式加载网格和纹理,在后台进行异步的操作。 本篇文章将细说Unity官方的HLOD做了什么工作以及他们是如何做的,...

2021-02-19 17:02:04 9643 10

原创 Unity HLOD System

1.1 HLOD System简介首先,HLOD System主要的目标是为了减少Draw Call。然后,进行更多的Batch批处理。其次,减少面数和纹理,这样我们相应地节省了内存,并提升了加载时间。 HLOD System只针对当前所在的地方进行加载,它会流式加载网格和纹理,在后台进行异步的操作。本次HLOD是基于官方AutoLOD代码的扩展和改进制作出来了的,链接:https://github.com/Unity-Technologies/AutoLOD,链接里有一篇官方的文章,...

2021-02-17 20:34:48 5148 3

原创 C++高性能内存池,支持动态分配内存块

在C/C++中内存的管理是非常头痛的事情,这里作者不再多解释,请参考这篇文章:https://blog.csdn.net/business122/article/details/80566230,作者也是参考这篇文章进行对内存池的改进和进化。 1、封装一个类用于管理内存池的使用如下,很容易看得懂,其实就是向内存池申请size个空间并进行构造,返回是首个元素的地址。释放也是一样,...

2019-12-22 10:57:07 1251

原创 将Unity导航网格(navmesh)模拟输出到二维数组并导出xml

先看效果,下面两张图,第一张是unity烘焙好的网格,第二张是导出的文件,第二张因为数字长和宽不相等,所以形状被压缩了下。一、实现1、这个方法做的功能就是将navmesh网格的顶点和顶点索引导出并封装成方便操作的数据。private void LoadNavMeshToArray(){ NavMeshTriangulation tmpNavMeshTriang...

2019-12-08 20:47:36 2267 5

原创 对一亿个数据排序时间少于1秒排序算法WaveSort

前言:干货干货,作者偶然在工作中悟出来了一种排序算法,听标题就很牛逼,下面开始一一让大家了解此算法。一、首先我们直接与现有的排序算法:快速排序、C++库里的Sort、计数法桶排序进行速度对比1、如图所示,这就是测试所需要的数据和方法。2、用1000个升序数据进行排序,小于几毫秒我就不写了,直接写毫秒C++Sort时间为:2ms,快排:2ms,波浪:1ms,桶排1ms,桶...

2019-12-08 15:44:40 2701

原创 解决C++shared_ptr循环链表无法释放内存的指针full_ptr

今天废话不多说,直接进入主题。full_ptr制作背景:C++auto_ptr指针不做解释,shared_ptr是引用计数智能指针,它可以帮助你托管你的内存,但在有循环引用的地方比如循环链表它就会失效,需要利用week_ptr进行配合使用,相当麻烦和不智能,因此作者兴趣之作衍生出了full_ptr来解决shader_ptr的问题。使用并介绍功能:这个是测试类,用来给f...

2019-11-02 16:35:49 649

原创 对C++17类库中any万用类容器进行执行速度创新的Any

相信打开本篇文章的读者都应该了解C++中的any是什么,就算不知道C++17的any也应该知道boost库的any,如果还不知道那就把它当作是C#或者Java里的Object类,也就是万用类型。重点:作者也研究出了一种Any容器,看标题就感觉很nb。步骤:1、首先与C++17的any进行运作速度、内存使用、功能等进行对比 2、介绍实现思想...

2019-10-07 21:14:12 787

原创 数组或指向数组的指针在cout或printf上如何使用

这里解决如何非常容易的理解这种表达式的运算:cout<<*(++p)<<*(p)<<*(++p)<<endl<<endl;两种情况注意,++和--符号运算规则都一样,下面只展示++1、如果本身是*(++p)或*p,那么值 = 还没执行表达式的时候的值 + 整条表达式包括自己所有的(*(++p)和*(p++)的)的总数比如下...

2019-09-25 22:58:27 381

原创 用C++自写的Any

相信大家都很熟悉JAVA的Object类,或多少也知道boost里的any吧,而小编不才写了个类似的玩意出来,下面我来说下这个玩意有啥不同和特别之处及实现的原理。 首先展示Any类型功能:1.首先肯定是一个Any对象哈,(注意:这个Any不是boost库的,这是作者写的哈)2.其次直接给它赋值一个字符串s,拿出来的时候用泛型转换后得到该字符串并输出...

2018-03-01 23:13:27 640

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除