自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(160)
  • 资源 (1)
  • 论坛 (1)
  • 收藏
  • 关注

转载 Java多线程知识点总结(思维导图+源码笔记)

转自:https://blog.csdn.net/yelvgou9995/article/details/107408709多线程大家在初学的时候,对这个知识点应该有不少的疑惑的。我认为主要原因有两个:多线程在初学的时候不太好学,并且一般写项目的时候也很少用得上(至少在初学阶段时写的项目基本不需要自己创建线程)。 多线程的知识点在面试经常考,多线程所涉及的知识点非常多,难度也不低。这就会给人带来一种感觉「这破玩意涉及的东西是真的广,平时也不怎么用,怎么面试就偏偏爱问这个鬼东西」不多BB.

2020-09-15 16:28:02 55

转载 向量投影

给定一个向量u和v,求u在v上的投影向量,如下图。假设u在v上的投影向量是u’,且向量u和v的夹角为theta。一个向量有两个属性,大小和方向,我们先确定u’的大小(即长度,或者模),从u的末端做v的垂线,那么d就是u’的长度。而u’和v的方向是相同的,v的方向v/|v|也就是u’的方向。所以有 (1)再求d的长度。 (2)最后求cos(theta) ...

2020-08-06 10:13:11 25

原创 【笔记】状态同步笔记

状态同步位置和技能(适用于fps和mmorpg类游戏)客户端A的同步阀值(减少同步量) 客户端A本地会存储一份对其他客户端看到的A的预测状态,当本地真实状态和预测状态偏差超过阀值时,则发起同步,同时更新客户端A本地的预测状态 玩家运动的关键点也会同步,例如起跳坐标点,起跳最高坐标点,落地坐标点,开始跑步的速度方向,停止跑步时的坐标点插值算法的选择 客户端插值 和 航位推测的选择 航位推测只用于预测位移 客户端插值(线性插值,3次样条插值,曲线的寻路(寻路这个可能会...

2020-07-28 19:48:26 138

原创 【笔记】寻路技术整合

pathfinding,先用unity navmesh烘培,再用lockstepengine里的工具导出 然后test find#游戏地图的划分Grid (方格)Navigation Mesh(导航网格)#寻路算法:1.a*+堆排序+路径平滑(启发式和代价累计)2.Dijkstra算法3.Floyd-Warshall algorithm4.集群寻路https://wuzhiwei.net/group-path-movement/ 有demohttps://www.zhi...

2020-07-28 19:47:01 168

原创 [笔记]物理碰撞整合

碰撞总结点积:两个向量之间的夹角,投影叉积:两向量组成的平行四边形的面积,两向量的前后关系(方向)dot(a,a)得到a的长度平方行列式:体积,行列式转为矩阵公式用克莱姆公式求解叉积转点积:拉格朗日公式多边形划分:v域,质心划分,边延长线划分判断点是否在三角形内,可以判断点是否在所有的面的左边质心:三个点的为面积比,四个点的为体积比射线相交: 以时间t代入求解 以一元二次方程的思想求解,判断是否有根已经是否合法1.直线运动的AABB,原则上是进行8条射线的碰撞检测,这...

2020-07-28 19:46:17 93

原创 【笔记】unity逻辑类各种即使方案汇总

迷雾遮罩:1.使用war3的地图拼接2.改变网格范围,传到shader中寻路:需要高精度的则不适合用Navmesh1.https://howtorts.github.io/2014/01/04/basic-flow-fields.html基于流场,估计类似sdf,使用Dijkstra生成路径2.rts寻路A Start Pathfinding Project Pro + Unity NavMesh寻路算法+精确碰撞(以及避碰)3.多人寻路中的交互避碰RVO24.定时器,当有

2020-07-28 19:45:43 623

原创 【笔记】unity大地图分块加载

1.大地图分块加载 chunk的大小可动态调整 写工具做地块拆分 如果地块是由1个个小格子单元组成的,则可按位置进行划分保存成多个chunk预设 如果地表是Terrain转成的mesh,或者美术做的整个mesh,则需要通过对chunk边界的顶点进行拷贝,分别保存成多个chunk预设 保存地图上的chunk数据 地块的加载(通过松散四叉树或者kd树进行管理) 1是九宫格加载 2是chunk比较大时,例如角色视野范围...

2020-07-28 19:44:53 403

原创 【笔记】PBR,BRDF总结

bsdf = brdf + btdfbrdf:用于描述光(辐射能量)在两个物体交界处怎么反射、怎么折射这个定律的前提是两个表面是光学光滑的,而现实世界中基本不存在这样的表面,所以又搞出来个微表面理论蒙特卡洛路径追踪:就是计算漫反射的。pbr就是物理光照建模,然后合理的数学解法D为法线分布函数(NDF)F为反射函数(Fresnel 函数)G为阴影遮罩函数(几何函数),未被shadow或mask的比例Unity采用pbr材质其实有多种选择的;1.Standard Shader:建议只作为参

2020-07-28 19:43:52 509

原创 [笔记]unity渲染相关各种方案总结

shader思路以及解决方案汇总:手游性能指标 三角形数上限 的建议是 200K---------------------------------------#0.调试shader Nsight调试 Adreno Profiler---------------------------------------#1. 下雨:雨丝,潮湿模拟,涟漪,水花,积水,雷电,水交互 1.1雨丝实现方法: 1.1.1.粒子 优点:容易表现方向和深度。缺点:消耗大,...

2020-07-28 19:43:18 218

原创 【笔记】unity渲染类名词术语概念总结(30个点)

1.线性追踪亮度值是一个空间函数,而光线追踪做的事情其实是求这个函数在视线线段上的线积分结果为:光线在视线方向上作用值之和视线上的所有采样点的亮度之和能用来表示光线在介质中散射的效果2.光线的衰减简单的公式:i = l/d^2 [采样点的亮度值 = 光强度/(采样点-光源点)^2]3.等式d^2 = dot(d,d);4.散射公式:HG公式。就是输入指定方向和光线入射方向夹角的cos值,求出指定方向散射光线的亮度。我们要计算的是朝着眼睛方向的散射光线亮度。g:介质散射性质(值越.

2020-07-28 19:42:14 245

原创 [笔记]unity渲染类零碎代码记录(100多条)

1.获得renderTexture上的4个角的近裁面位置cam = GetComponent<Camera>();Matrix4x4 inverseViewProjectionMatrix = GL.GetGPUProjectionMatrix(cam.projectionMatrix, true);inverseViewProjectionMatrix *= cam.worldToCameraMatrix;inverseViewProjectionMatrix = inverseVie

2020-07-28 19:40:34 145

原创 [笔记]游戏开发中的数学

1.dx,dydy/dx就是导数或者说斜率, 变化率dx,dy中的d其实是 differentiation 的简写,意思是微分算子,表示在任意小的范围内的变化量。dx是对Δx的近似,Δx=dx+dx的高阶无穷小Δ这里往往是方便数学思想的描述和宏观解释,这个变化量是肉眼可见的,宏观的。dx则是微积分中的微了,表示一点的变化。、不定积分就是先把fx看成是某个函数的导数,然后给它乘上dx然后fxdx就表示了原函数的纵向增量,也就是fxdx是原函数在x处的微分,然后积分符号S表示对后面整个式子f

2020-07-28 19:39:10 76

转载 shader中的几个语义:SV_VertexID, VPOS, VFACE

转自:http://blog.coolcoding.cn/?p=798uintvid:SV_VertexID表示第几个顶点,依次从第0开始…这样在进行顶点动画时,可以对指定顶点进行采样v2f vert (appdata v, uint vid : SV_VertexID){float x = vid;…VPOS:屏幕像素坐标,用于片段着色器,需要添加#pragma target 3.0编译指令。fixed4 frag (v2f i, UNITY_VPOS_TYPE scre...

2020-07-16 10:34:51 292

转载 球谐光照——简单理解和实现

转自:https://blog.csdn.net/qq_33999892/article/details/838625831.简介:游戏中的光照可以被简单分为两个部分,直接光和间接光。直接光中我们研究各种不同的BRDF材质,甚至BSDF,BSSSRDF等等。这些模型据有很不错的表现力,足够我们区分金属,皮肤,木头等等不同物体的着色表现。但这并不能满足我们,因为光并不是那么简单,光会被反射,会被折射,会被透射,会被吸收,所以物体的受光情况同时又由这个场景的其他物体决定,这部分光照同时拥有着.

2020-07-15 15:09:23 154

转载 位运算技巧

转自:https://www.cnblogs.com/xiaohutu/p/10951911.html本文发布于游戏程序员刘宇的个人博客,长期更新,转载请注明源地址https://www.cnblogs.com/xiaohutu/p/10951911.html需要补充或者修改的请留言~1. 取第n位的值(从右边)int r = (v >> n) & 1;2.把某一位置1(从右边)v = v | (1 << n);3.把某一位取反(从右边)

2020-07-14 11:17:43 26

转载 帧同步游戏开发小结

转自:https://www.cnblogs.com/xiaohutu/p/12402399.html1. 帧同步基本特点所有的逻辑行为运算都在客户端进行,客户端保证彼此之间执行结果的一致性。 客户端将自己的所有操作发给服务器,服务器转发。 服务器维持一定的逻辑帧率向客户端发包,每次都带上一间隔的所有客户端发来的操作,如果没有就发空帧,附带上客户端需要执行此包的帧数。 客户端收到帧数据执行这一逻辑帧的行为,否则等待。2. 同步性的保证确保需要同步部分逻辑执行次序的一致性,特别关注各种.

2020-07-14 11:16:09 56

转载 大规模单位实时寻路

转自:https://www.cnblogs.com/xiaohutu/p/10504586.html总结下来就是结合以下技术对AI进行处理:十字链表找最近的敌方单位 ,RVO避障,优化后的jps,地图数据预处理,steer行为控制某个神秘的时间,我接到了一项神秘的任务,最核心的难度是要求实现:引擎是Unity3D,在手机端可以流畅运行为前提,在一个实时战斗的过程里,地图有地形(而且是会被动态改变的地形),数百个单位独立AI寻路、要实现忽略掉部分单位的筛选寻路、动态避障、满足帧同步需求并可.

2020-07-14 11:00:01 168

原创 点至三角形的最近点

文章目录已优化版本未优化版本点P到三角形的相交点分为三种情况:1.顶点域,相交点为三角形的三个顶点2.边域,相交点在三角形的三条边上,也就是点P在边上的投影3.中心域,相交点在三角形内部,也就是点P在三角形中的投影代码如下:已优化版本 /// <summary> /// 点到三角形最近点,已优化cross为dot /// 求解思路:平面的法线和pa,pb,pc的法线进行dot,可知p是落在哪个域上,再对p在各个边上进行投影,求得边域上最近点。在三角形内就是质心

2020-07-13 16:21:20 61

原创 [笔记]松散四叉树,BVH,BSP,KD树的特性以及适用情况

[笔记]松散四叉树,BVH,BSP,KD树的特性以及适用情况松散四叉树层次包围盒BVH二叉空间分割(BSP)kd树几种结构的比较松散四叉树比四叉树多了入口边界(也就是四叉树的边界)和出口边界(比四叉树边界大的边界)如何判定一个物体现在在哪个节点 若物体还没添加进四叉树/八叉树,则检测现在位于哪个节点的入口边界内; 若物体先前已经存在于某个节点,则先检测现在是否越出该节点的出口边界,若越出再检测位于哪个节点的入口边界内应用场景: 感知检测的过滤,碰撞检测过滤,光线追踪过滤不必要

2020-07-13 16:16:47 168

转载 圆,扇形,胶囊体,凸多边形,OBB,AABB相交检测

转自:https://blog.csdn.net/qq_37043683/art图形相交检测常常用在伤害判定,使用自定义的图形相交检测,可以在一定程度上控制性能。比如2D格斗游戏中使用的矩形包围盒(AABB),一些动作游戏中常常出现的扇形攻击。2D的图形相交检测能够满足大部分的需求,且可以拓展成为柱状的3D物体,2D比3D的计算复杂度会低很多,3D的图形检测原理与2D相似,本文会实现几个圆形与其他2D图形的相交检测:1、圆形与圆形2、圆形与胶囊体3、圆形与扇形...

2020-07-13 15:31:25 158

原创 向量投影推导

给定一个向量u和v,求u在v上的投影向量,如下图。假设u在v上的投影向量是u’,且向量u和v的夹角为theta。一个向量有两个属性,大小和方向,我们先确定u’的大小(即长度,或者模),从u的末端做v的垂线,那么d就是u’的长度。而u’和v的方向是相同的,v的方向v/|v|也就是u’的方向。所以有 (1)再求d的长度。 (2)最后求cos(theta) ...

2020-07-13 15:07:13 157

原创 点是否在三角形内

2种方法1是用之前的射线判断交点的奇偶数2是这一篇的叉乘方向判断/// <summary> /// 点是否在三角形内 /// 将三角形ABC三个边(AB,BC,CA)分别与比较点判断叉乘,如果这3个叉乘结果表示的方向一致,说明就在三角形内 /// </summary> /// <param name="point"></param> /// <param na...

2020-07-13 11:16:30 41

原创 两线段相交

/// <summary> /// 2个线段是否相交(已验证) /// 有线段AB和线段CB /// 用线段AB的方向和C,D两点分别做差乘比较。如果C,D在同侧则return跳出 /// 用线段CD的方向和A,B两点分别做差乘比较。如果A,B在同侧则return跳出 /// 最终返回相交 /// </summary> public static bool ...

2020-07-13 10:56:48 56

转载 2D空间求一点是否在多边形内

转自:https://www.cnblogs.com/hont/p/6105997.html大致流程:1.随便选取多边形上任意一条边,以比较点和边的中心点做一条射线(这里用的伪射线)。2.用这条射线与其他所有边判断是否相交。3.将所有与线段相交的数量相加,如果是奇数就在多边形内。特殊情况:1.刚好在点上或者在线上。实际运用时会有点误差,但不影响。2.必须是闭合线段,且不能存在包含的情况。但如果是一个数组生成的线段,不会有这种情况代码(Unity3D):...

2020-07-13 10:55:58 36

转载 Unity中差乘判断目标是否在左边或右边

转自:https://www.cnblogs.com/hont/p/6017172.html使用差乘判断左右一般是比较差乘的y,小于0是左,大于0是右。特殊情况可以用其他分量来比较默认情况:var cross = Vector3.Cross(lhsObject.transform.position, rhsObject.transform.position);if (cross.y > 0) //sideif(cross.y < 0)//another side..

2020-07-13 10:25:49 107

转载 unity通过深度缓冲计算该深度对应的世界坐标

来源:https://zhuanlan.zhihu.com/p/92315967感觉写的很好,记录下来,如果侵权的话请留言,必删总结:2种计算深度值对应世界坐标的的方法以及正交相机下的处理------------------------------------------------------------------------------------------可视化深度github:https://link.zhihu.com/?target=https%3A.

2020-07-10 11:30:00 217

转载 shader常见的空间变换

转自:https://blog.csdn.net/kenight/article/details/81486214

2020-07-09 12:12:36 45

原创 shader内置变量和函数

光照函数float3 WorldSpaceViewDir(float4 v);//输入模型顶点坐标,得到世界空间中从该点到摄像机的观察方向float3 ObjSpaceViewDir(float4 v);//输入模型顶点坐标,得到模型空间中从该点到摄像机的观察方向float3 WorldSpaceLightDir(float4 v);//输入模型顶点坐标,得到世界空间中从该点到光源的光照方向//(方向没有归一化,且只可用于前向渲染)float3 ObjSpaceLightDir(float4 v)

2020-07-09 12:00:45 136

转载 转置矩阵(matrix transpose)和逆矩阵(matrix inverse)的相关公式

转载自:https://blog.csdn.net/yinhun2012/article/details/84236202这一篇是为了后面着色效果的数学基础做积累,之前我们使用矩阵的大部分情况都是直接的仿射空间变换,就是仿射空间A变换到仿射空间B,使用矩阵也都是如下: 矩阵T*齐次坐标V = 齐次坐标V' 其计算细节也就是矩阵行与向量列的点积,其计算意义也就是获得新仿射空间中的坐标分量,也聊了很多了。 这次我们就来学两个矩阵的操作,一个是矩阵的转置...

2020-07-09 11:33:01 766

原创 法线从模型空间转换到视图空间时保持法线与切线垂直

结论:Unity内置的矩阵UNITY_MATRIX_IT_MV,是UNITY_MATRIX_MV的逆转置矩阵,其作用正是将法线从模型空间转换到观察空间-------------------------

2020-07-09 10:45:55 94

转载 unity profiler中教重要的参数

转自:https://www.cnblogs.com/yanghui0702/p/yanghui20181026.htmlUnity3D为我们提供了一个强大的性能分析工具Profiler。今天我们就使用Profiler来详细分析一下官方例子AngryBots的内存使用信息数据。首先打开Profiler选择Memory选项,在游戏运行的某一帧查看Detailed选项数据(Simple模式的数据很直观,可以知道内存大体被哪部分占用了),如下图所示:选中后,unity会自动获取这一帧的内...

2020-07-08 19:24:34 146

转载 半透明粒子特效优化

转自:https://blog.csdn.net/Game_jqd/article/details/79370970CPU计算部分1.DrawCall(耗费中。因为粒子支持动态Batch,且通常不会以Z轴作为排序标准,合并概率很高。只有在确实使用了大量不同材质或者强制排序的情况才会出现性能热点,然而这种情况还是挺常见的)2.粒子网格计算(以前高,现在低。因为目前的粒子计算已经分摊到了子线程上由任意空闲核心来执行,而现在是八核机的时代。最多也就是核心利用率高导致一点点发热,但绝不会成为卡顿的.

2020-07-08 12:41:53 92

转载 模板测试

转自:https://www.cnblogs.com/lyh916/p/10555963.html结论:下文的Stencil+Stencil2可做限制绘制区域的功能,只有指定的参考值才能绘制出来模板测试不通过的像素也会有OverDraw----------------------------------------------------------------------------------------------参考链接:https://blog.csdn.net/u0110

2020-07-07 21:25:12 47

转载 垂直同步、绘制效率、显示器刷新频率与帧率

转:https://blog.csdn.net/leonwei/article/details/7998412从后缓存到显示器最近在看D3D的架构,在这过程中对帧率这个一直认为很简单的东西有了更多的理解。在过去看来,帧率就是显卡渲染一帧所用时间的倒数,现在看来远远不是这个样子。要真正理解这个问题要从绘制数据从显存中到屏幕的这一个过程来说起,下图就是这个过程显存中存在前后缓存,前缓存就是屏幕上最终看到的像素,而后缓存是绘制使用,后缓存绘...

2020-07-06 19:52:46 61

转载 shadow acne(阴影失真)和peter panning(阴影悬浮)

原文链接:https://blog.csdn.net/lawest/article/details/106364935总结下来就是:因为深度贴图的分辨率有限,导致多个像素点采样1个深度,导致阴影失真(acne)1个解决方法是添加bias,也就是给像素的z加上偏移,这个方法会导致阴影悬浮(peter panning)最好的解决阴影失真的方法是cull font,只渲背面的深度可参考:https://zhuanlan.zhihu.com/p/45653702------------.

2020-07-02 12:32:33 206

转载 unity资源加载和卸载(脚本加载卸载,资源序列化后的结构,bundle内的序列化结构)

转自:https://www.cnblogs.com/zblade/p/11095338.html一、概要在了解unity的资源管理方式之后,接下来细谈一下Unity的资源是如何从磁盘中加载到运行时的内存中,以及又是如何被卸载的。这部分较为繁琐,可能会写较多的过程。二、脚本资源的加载和卸载在unity中的脚本资源,大体可以分为C++编译的引擎dll文件,c#编译的dll文件,lua脚本文件(基于lua热更的方式下)。2.1 dll文件的加载和卸载在工程的Library/Scri.

2020-06-30 08:11:24 71

转载 NavMesh寻路中的漏斗算法

转自:https://www.cnblogs.com/pointer-smq/p/11332897.htmlNavMesh是广泛使用的一种寻路技术,将地图中可走的部分生成连续的多边形/三角形网格,寻路在网格中进行,主要包含两步:1、根据网格的邻接信息构造图,使用A*之类的寻路算法计算出从起点到重点需要走过的多边形/三角形集合;2、使用漏斗算法/拉绳子算法,将多边形列表转换为一条最优的路店。本文主要讲一下对于三角形列表的漏斗算法原理。诸位读者如果搜索过网络,会发现有一年GDC有人讲了这个算法,也.

2020-06-27 15:21:50 143

转载 合批失败问题

转自:https://www.cnblogs.com/zsb517/p/5837781.html合批失败问题游戏场景中存在大量例子的时候,DrallCall的压力很大,但是遍历一遍之后发现,为啥一样的粒子特效竟然没有合并,why?经过很多测试后发现,如果把透明材质的修改为非半透明的,就可以合并,这就让我很奇怪了?Unity提供了材质动态合并的功能,虽然限制很多,但是对于透明材质的合并,Unity似乎给了一个很玄乎的答案:Semitransparent shaders most often ...

2020-06-15 18:16:27 102

转载 星际2数据编辑器

转自:https://blog.csdn.net/xoyojank/article/details/8122886只列了技能的划分,其余的参考链接对象类型星际2就对象有很多类型, 这里只说一下比较常见的. 这些类型还有子类型, 对象的实例之间是可以进行数据拷贝和派生的.Units(单位)大多数人应该知道Unit是个什么东西, 因为它就是个东西的意思. 一个兵是Unit, 建筑也是, 子弹也是. 这个类型里你可以找到Unit的生命值, 能量值, 护盾值等. 所有可见的部分并..

2020-06-15 17:42:36 116

转载 ZTest,ZWrite,Early-Z优化,为什么Alpha Test消耗较大

来自:https://blog.csdn.net/puppet_master/article/details/53900568unity渲染顺序Early-Z优化,也就是Depth-Test发生在Vertex阶段和Fragment阶段之间,之后Fragment结束后还有一次AlphaTest,确保遮挡顺序正确简单总结一下Unity中的渲染顺序:先渲染不透明物体,顺序是从前到后;再渲染透明物体,顺序是从后到前Alpha Test(Discard)在移动平台消耗较大的原因从本人刚..

2020-06-15 14:51:23 301

Easy Touch 4 Touchscreen Virtual Controls

EasyTouch可以让你快速和轻松地开发基于触摸屏手势、操纵杆、按钮、DPadn触摸板和EasyTouch控件的操作。

2017-10-13

csdn的ios应用点击目录不会跳转到相应的位置

发表于 2020-07-29 最后回复 2020-07-29

空空如也

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

TA关注的人 TA的粉丝

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