Unity
文章平均质量分 66
無惧
游戏开发
展开
-
Injectfix源码解析
这个是生成补丁的函数,会有一个唯一id,对应Instruction[][] methods = new Instruction[][]里面的一条条指令,是二维数组,id就是Array对应的索引。这就是注入的函数,会根据WrappersManagerImpl.IsPatched查看是否有补丁,有补丁的话就跳转运行虚拟机指令,没有就原函数运行。1.首先通过标签获取需要fix的函数,字段,包括新增,写入配置表,注入dll,生成fix bytes。函数参数,局部变量都有了,就开始调用指令了,操作指令。原创 2024-03-07 08:22:32 · 474 阅读 · 0 评论 -
高度贴图转法线贴图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 · 1048 阅读 · 0 评论 -
unity动态图集(附带工程)
静态图集经常会用到,有时候为了极致的性能,降低dc,不得不使用动态图集。动态图集原理也很简单,就是把多张散图,放到一张大图里面。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)图片必须开启可以读写,这样内存就翻倍了。当然使用动态图集也有一些限制。原创 2024-03-06 11:53:41 · 527 阅读 · 0 评论 -
ILRuntime寄存器模式源码解析
用寄存机模式,就不要把a和b推入堆栈了,调用函数的时候已经在分配的寄存器中,一条指令搞定了以前4条指令需要做的事情,效率大幅提升。加载后,把所有类转成ILType,里面的方法转成ILMethod,CLR绑定转成CLRType,方法转成CLRMethod。看完ILRuntime源码感觉受益匪浅,代码写的很漂亮,这里只讲了一部份的内容,如果有兴趣还是很推荐阅读下源码的。ILRuntime用寄存器指令表示,大大优化了指令的数量,而且只生成一次,第二次使用直接运行指令,效率大大提升。转成il指令是这样子。原创 2024-03-10 10:20:45 · 367 阅读 · 0 评论