自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Unity Terrain Virual Texture

Terrain Virual Texture 简称RVT一种空间换时间的技术正常地形需要做混合,Unity支持12层纹理混合,3个Control纹理假如只有Diffuse和Normal12*2+3需要27次纹理采样,如果是PBR还需要增加12*3+3如果我们用RVT,我们会先把地形烘培到一组纹理数组里面运行的时候,只需要一次Diffuse和Normal,一次,一共3次纹理采样先来看下效果,帧率大概可以提升80左右,CPU也从2.4ms点击到2.0msFrame Debugger查看下,

2024-04-29 16:50:28 1313 1

原创 游戏地形渲染GPU Driven

GPU Driven顾名思义,所有信息由GPU处理计算或渲染很多文章也有介绍,这里记录下自己的一个思路先看下效果图用的Unity商城免费的资源。

2024-04-06 15:51:38 1019 1

原创 3D世界如何寻路,导航寻路RecastNavigation解析(下)

3D世界如何寻路,导航寻路RecastNavigation解析(下)

2024-03-21 21:54:43 1949

原创 3D世界如何寻路,导航寻路RecastNavigation解析(中)

我们把距离场看成到水平面的距离(最高就到水平面),每次灌入一些水,做一些标记。遍历整个列表,每2个点组成一条线A,B,查找这条线A为起点,B为终点的所有点。如果四周都是同一区域,二进制表示1111 ,最后再取反,四周都是一样的。继续往里面灌水,水位开始上升,level每次减少2。只要有一个不属于同一区域,结果就会大于0,属于边界。白线就是算出的轮廓,查找方向是从左上右下,,还去需要拆分,找到2条线中间点添加。灌满水,给这个区域的水分配一个新的。,水开始向四周蔓延水位,标记符合。这次主要说下分水岭算法。

2024-03-17 19:10:08 1100

原创 3D世界如何寻路,导航寻路RecastNavigation解析(上)

Recast Navigation是一个开源的导航网格生成库,用于为游戏和模拟应用提供动态寻路能力。通过对网格模型进行精细的处理,Recast Navigation能够生成高效且可靠的导航网格,使得寻路和移动变得既快捷又精确。这一创新的技术在游戏开发和仿真领域中有着广泛的应用,其设计的巧妙之处值得每一位开发者学习和探索。接下来,让我们深入了解Recast Navigation的核心原理,并总结其设计精髓。

2024-03-14 17:07:41 1744

原创 ILRuntime寄存器模式源码解析

用寄存机模式,就不要把a和b推入堆栈了,调用函数的时候已经在分配的寄存器中,一条指令搞定了以前4条指令需要做的事情,效率大幅提升。加载后,把所有类转成ILType,里面的方法转成ILMethod,CLR绑定转成CLRType,方法转成CLRMethod。看完ILRuntime源码感觉受益匪浅,代码写的很漂亮,这里只讲了一部份的内容,如果有兴趣还是很推荐阅读下源码的。ILRuntime用寄存器指令表示,大大优化了指令的数量,而且只生成一次,第二次使用直接运行指令,效率大大提升。转成il指令是这样子。

2024-03-10 10:20:45 394

原创 unity大气散射

大气散射效果对游戏画质提升来说巨大,本文主要从代码层面讲解下大气散射。

2024-03-09 11:18:29 2192

原创 PE(CLR)格式解析(附带工具源码)

最近在看hybridclr源码,发现对PE格式不太了解,在网上查查资料,发现PE格式大有学问,于是打算写个工具解析它,边学边实践!选择用C#来实现,winform还是很好用的哈!PE文件是Windows操作系统下使用的一种可执行文件,由COFF(UNIX平台下的通用对象文件格式)格式文件发展而来。32位成为PE32,64位称为PE+或PE32+。

2024-03-08 15:21:23 1107

原创 Injectfix源码解析

这个是生成补丁的函数,会有一个唯一id,对应Instruction[][] methods = new Instruction[][]里面的一条条指令,是二维数组,id就是Array对应的索引。这就是注入的函数,会根据WrappersManagerImpl.IsPatched查看是否有补丁,有补丁的话就跳转运行虚拟机指令,没有就原函数运行。1.首先通过标签获取需要fix的函数,字段,包括新增,写入配置表,注入dll,生成fix bytes。函数参数,局部变量都有了,就开始调用指令了,操作指令。

2024-03-07 08:22:32 491

原创 unity动态图集(附带工程)

静态图集经常会用到,有时候为了极致的性能,降低dc,不得不使用动态图集。动态图集原理也很简单,就是把多张散图,放到一张大图里面。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)图片必须开启可以读写,这样内存就翻倍了。当然使用动态图集也有一些限制。

2024-03-06 11:53:41 605

原创 高度贴图转法线贴图HeightMap to NormalMap

如果和模型的的法线一致,那么就是0,0,1一般法线的范围在-1和1之间,我们需要*0.5并且+0.5。其实只要能拿到三角形3个点的坐标,就是可以算出各个点法线,经过谷歌大法寻找,让我找到可以用。2个三角形完全覆盖了UV,那么T(1,0,0) B(0,1,0) N(0,0,1)TBN大家都知道,T切线,B副切线,N法线,3个互相垂直的向量组成一个坐标系。其中有变化的,就是它的法线在TBN空间相对于法线0,0,1的扰动。举个例子,一个平面,在0,0,0,朝向0,1,0。添加图片注释,不超过 140 字(可选)

2024-03-05 21:20:18 1205

原创 Mac 编译 Recastnavigation vscode cmake

首先下载ma-D CMAKE_BUILD_TYPE=True 为开启debug模式会出现报错需要下载SDL2库查看安装位置输出然后找到/recastnavigation/RecastDemo/CMakeLists.txt在开头添加顺利编译。

2024-03-04 22:50:15 524

空空如也

空空如也

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

TA关注的人

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