<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[折戟]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/a1047120490</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a1047120490]]></copyright><item><title><![CDATA[C++虚函数的vptr与vtable]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/144410712</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/144410712</guid><author>a1047120490</author><pubDate>Wed, 11 Dec 2024 21:29:44 +0800</pubDate><description><![CDATA[与this指针不同，this指针实际上是编译器用来解析自引用的函数参数，vptr是一个真正的指针。简单的说，通过virtual函数，指向子类的基类指针可以调用子类的函数。除此之外，上述代码大家会看到，也包含了手动获取vptr地址，并调用vtable中的函数，那么我们一起来验证一下上述的地址与真正在自动调用vtable中的虚函数，比如上述。，然后再对比上述的结果会发现与手动调用的fun1一致，fun2类似，以此证明代码正确!代码全部遵循标准的注释风格，相信大家看了就会明白，不明白的话，可以留言！]]></description><category></category></item><item><title><![CDATA[Java多线程知识点总结（思维导图+源码笔记）]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/108602393</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/108602393</guid><author>a1047120490</author><pubDate>Tue, 15 Sep 2020 16:28:02 +0800</pubDate><description><![CDATA[转自：https://blog.youkuaiyun.com/yelvgou9995/article/details/107408709



多线程大家在初学的时候，对这个知识点应该有不少的疑惑的。我认为主要原因有两个：

多线程在初学的时候不太好学，并且一般写项目的时候也很少用得上（至少在初学阶段时写的项目基本不需要自己创建线程）。
	多线程的知识点在面试经常考，多线程所涉及的知识点非常多，难度也不低。
这就会给人带来一种感觉「这破玩意涉及的东西是真的广，平时也不怎么用，怎么面试就偏偏爱问这个鬼东西」

不多BB.]]></description><category></category></item><item><title><![CDATA[向量投影]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107832779</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107832779</guid><author>a1047120490</author><pubDate>Thu, 06 Aug 2020 10:13:11 +0800</pubDate><description><![CDATA[给定一个向量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)

        ...]]></description><category></category></item><item><title><![CDATA[【笔记】状态同步笔记]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107643707</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107643707</guid><author>a1047120490</author><pubDate>Tue, 28 Jul 2020 19:48:26 +0800</pubDate><description><![CDATA[状态同步位置和技能(适用于fps和mmorpg类游戏)
客户端A的同步阀值(减少同步量)
 客户端A本地会存储一份对其他客户端看到的A的预测状态,当本地真实状态和预测状态偏差超过阀值时，则发起同步，同时更新客户端A本地的预测状态
 玩家运动的关键点也会同步，例如起跳坐标点，起跳最高坐标点，落地坐标点，开始跑步的速度方向，停止跑步时的坐标点
插值算法的选择
 客户端插值　和 航位推测的选择
 航位推测只用于预测位移
 客户端插值(线性插值，3次样条插值，曲线的寻路（寻路这个可能会...]]></description><category></category></item><item><title><![CDATA[【笔记】寻路技术整合]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107643694</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107643694</guid><author>a1047120490</author><pubDate>Tue, 28 Jul 2020 19:47:01 +0800</pubDate><description><![CDATA[pathfinding，先用unity navmesh烘培，再用lockstepengine里的工具导出  然后test find
#游戏地图的划分
Grid (方格)
Navigation Mesh(导航网格)

#寻路算法：
1.a*+堆排序+路径平滑（启发式和代价累计）

2.Dijkstra算法

3.Floyd-Warshall algorithm

4.集群寻路
https://wuzhiwei.net/group-path-movement/ 有demo
https://www.zhi...]]></description><category></category></item><item><title><![CDATA[[笔记]物理碰撞整合]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107643681</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107643681</guid><author>a1047120490</author><pubDate>Tue, 28 Jul 2020 19:46:17 +0800</pubDate><description><![CDATA[碰撞总结
点积：两个向量之间的夹角，投影
叉积：两向量组成的平行四边形的面积，两向量的前后关系（方向）

dot(a,a)得到a的长度平方
行列式：体积，行列式转为矩阵公式用克莱姆公式求解
叉积转点积：拉格朗日公式
多边形划分：v域，质心划分，边延长线划分
判断点是否在三角形内，可以判断点是否在所有的面的左边
质心：三个点的为面积比，四个点的为体积比
射线相交：
 以时间t代入求解
 以一元二次方程的思想求解，判断是否有根已经是否合法

1.直线运动的AABB，原则上是进行8条射线的碰撞检测，这...]]></description><category></category></item><item><title><![CDATA[【笔记】unity逻辑类各种即使方案汇总]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107643667</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107643667</guid><author>a1047120490</author><pubDate>Tue, 28 Jul 2020 19:45:43 +0800</pubDate><description><![CDATA[迷雾遮罩：
1.使用war3的地图拼接
2.改变网格范围，传到shader中

寻路：
需要高精度的则不适合用Navmesh

1.https://howtorts.github.io/2014/01/04/basic-flow-fields.html
基于流场，估计类似sdf,使用Dijkstra生成路径

2.rts寻路
A Start Pathfinding Project Pro + Unity NavMesh
寻路算法+精确碰撞（以及避碰）

3.多人寻路中的交互避碰
RVO2

4.定时器，当有]]></description><category></category></item><item><title><![CDATA[【笔记】unity大地图分块加载]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107643649</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107643649</guid><author>a1047120490</author><pubDate>Tue, 28 Jul 2020 19:44:53 +0800</pubDate><description><![CDATA[1.大地图分块加载
 chunk的大小可动态调整
 写工具做地块拆分
  如果地块是由1个个小格子单元组成的，则可按位置进行划分保存成多个chunk预设
  如果地表是Terrain转成的mesh，或者美术做的整个mesh，则需要通过对chunk边界的顶点进行拷贝，分别保存成多个chunk预设
 保存地图上的chunk数据
 地块的加载(通过松散四叉树或者kd树进行管理)
  1是九宫格加载
  2是chunk比较大时，例如角色视野范围...]]></description><category></category></item><item><title><![CDATA[【笔记】PBR，BRDF总结]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107643623</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107643623</guid><author>a1047120490</author><pubDate>Tue, 28 Jul 2020 19:43:52 +0800</pubDate><description><![CDATA[bsdf = brdf + btdf

brdf：用于描述光（辐射能量）在两个物体交界处怎么反射、怎么折射
这个定律的前提是两个表面是光学光滑的，而现实世界中基本不存在这样的表面，所以又搞出来个微表面理论
蒙特卡洛路径追踪：就是计算漫反射的。
pbr就是物理光照建模，然后合理的数学解法
D为法线分布函数(NDF)
F为反射函数(Fresnel 函数)
G为阴影遮罩函数（几何函数），未被shadow或mask的比例

Unity采用pbr材质其实有多种选择的；
1.Standard Shader：建议只作为参]]></description><category></category></item><item><title><![CDATA[[笔记]unity渲染相关各种方案总结]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107643610</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107643610</guid><author>a1047120490</author><pubDate>Tue, 28 Jul 2020 19:43:18 +0800</pubDate><description><![CDATA[shader思路以及解决方案汇总：
手游性能指标
 三角形数上限 的建议是 200K
---------------------------------------

#0.调试shader
 Nsight调试
 Adreno Profiler
---------------------------------------

#1. 下雨：雨丝，潮湿模拟，涟漪，水花，积水,雷电,水交互
 1.1雨丝实现方法：
 1.1.1.粒子
 优点：容易表现方向和深度。缺点：消耗大，...]]></description><category></category></item><item><title><![CDATA[【笔记】unity渲染类名词术语概念总结（30个点）]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107643586</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107643586</guid><author>a1047120490</author><pubDate>Tue, 28 Jul 2020 19:42:14 +0800</pubDate><description><![CDATA[1.线性追踪
亮度值是一个空间函数，而光线追踪做的事情其实是求这个函数在视线线段上的线积分
结果为：光线在视线方向上作用值之和
视线上的所有采样点的亮度之和能用来表示光线在介质中散射的效果

2.光线的衰减
简单的公式：i = l/d^2 [采样点的亮度值 = 光强度/(采样点-光源点)^2]

3.等式
d^2 = dot(d,d);

4.散射
公式:HG公式。就是输入指定方向和光线入射方向夹角的cos值，求出指定方向散射光线的亮度。
我们要计算的是朝着眼睛方向的散射光线亮度。
g:介质散射性质（值越.]]></description><category></category></item><item><title><![CDATA[[笔记]unity渲染类零碎代码记录（100多条）]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107643564</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107643564</guid><author>a1047120490</author><pubDate>Tue, 28 Jul 2020 19:40:34 +0800</pubDate><description><![CDATA[1.获得renderTexture上的4个角的近裁面位置
cam = GetComponent&lt;Camera&gt;();
Matrix4x4 inverseViewProjectionMatrix = GL.GetGPUProjectionMatrix(cam.projectionMatrix, true);
inverseViewProjectionMatrix *= cam.worldToCameraMatrix;
inverseViewProjectionMatrix = inverseVie]]></description><category></category></item><item><title><![CDATA[[笔记]游戏开发中的数学]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107643547</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107643547</guid><author>a1047120490</author><pubDate>Tue, 28 Jul 2020 19:39:10 +0800</pubDate><description><![CDATA[1.dx,dy

dy/dx就是导数或者说斜率, 变化率

dx,dy中的d其实是 differentiation 的简写，意思是微分算子，表示在任意小的范围内的变化量。

dx是对Δx的近似，Δx=dx+dx的高阶无穷小

Δ这里往往是方便数学思想的描述和宏观解释，这个变化量是肉眼可见的，宏观的。dx则是微积分中的微了，表示一点的变化。、

不定积分就是先把fx看成是某个函数的导数，然后给它乘上dx然后fxdx就表示了原函数的纵向增量，也就是fxdx是原函数在x处的微分，然后积分符号S表示对后面整个式子f]]></description><category></category></item><item><title><![CDATA[shader中的几个语义：SV_VertexID, VPOS, VFACE]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107377674</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107377674</guid><author>a1047120490</author><pubDate>Thu, 16 Jul 2020 10:34:51 +0800</pubDate><description><![CDATA[转自：http://blog.coolcoding.cn/?p=798

uintvid: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...]]></description><category></category></item><item><title><![CDATA[球谐光照——简单理解和实现]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107361251</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107361251</guid><author>a1047120490</author><pubDate>Wed, 15 Jul 2020 15:09:23 +0800</pubDate><description><![CDATA[转自：https://blog.youkuaiyun.com/qq_33999892/article/details/83862583



1.简介：
游戏中的光照可以被简单分为两个部分，直接光和间接光。

直接光中我们研究各种不同的BRDF材质，甚至BSDF，BSSSRDF等等。这些模型据有很不错的表现力，足够我们区分金属，皮肤，木头等等不同物体的着色表现。

但这并不能满足我们，因为光并不是那么简单，光会被反射，会被折射，会被透射，会被吸收，所以物体的受光情况同时又由这个场景的其他物体决定，这部分光照同时拥有着.]]></description><category></category></item><item><title><![CDATA[位运算技巧]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107334257</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107334257</guid><author>a1047120490</author><pubDate>Tue, 14 Jul 2020 11:17:43 +0800</pubDate><description><![CDATA[转自：https://www.cnblogs.com/xiaohutu/p/10951911.html

本文发布于游戏程序员刘宇的个人博客，长期更新，转载请注明源地址https://www.cnblogs.com/xiaohutu/p/10951911.html

需要补充或者修改的请留言~

1. 取第n位的值（从右边)


int r = (v &gt;&gt; n) &amp; 1;

2.把某一位置1（从右边)


v = v | (1 &lt;&lt; n);

3.把某一位取反（从右边)


]]></description><category></category></item><item><title><![CDATA[帧同步游戏开发小结]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107334206</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107334206</guid><author>a1047120490</author><pubDate>Tue, 14 Jul 2020 11:16:09 +0800</pubDate><description><![CDATA[转自：https://www.cnblogs.com/xiaohutu/p/12402399.html


1. 帧同步基本特点

所有的逻辑行为运算都在客户端进行，客户端保证彼此之间执行结果的一致性。
	客户端将自己的所有操作发给服务器，服务器转发。
	服务器维持一定的逻辑帧率向客户端发包，每次都带上一间隔的所有客户端发来的操作，如果没有就发空帧，附带上客户端需要执行此包的帧数。
	客户端收到帧数据执行这一逻辑帧的行为，否则等待。
2. 同步性的保证

确保需要同步部分逻辑执行次序的一致性，特别关注各种.]]></description><category></category></item><item><title><![CDATA[大规模单位实时寻路]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107333561</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107333561</guid><author>a1047120490</author><pubDate>Tue, 14 Jul 2020 11:00:01 +0800</pubDate><description><![CDATA[转自：https://www.cnblogs.com/xiaohutu/p/10504586.html

总结下来就是结合以下技术对AI进行处理：

十字链表找最近的敌方单位 ,RVO避障，优化后的jps，地图数据预处理，steer行为控制



某个神秘的时间，我接到了一项神秘的任务，最核心的难度是要求实现：引擎是Unity3D，在手机端可以流畅运行为前提，在一个实时战斗的过程里，地图有地形（而且是会被动态改变的地形），数百个单位独立AI寻路、要实现忽略掉部分单位的筛选寻路、动态避障、满足帧同步需求并可.]]></description><category></category></item><item><title><![CDATA[点至三角形的最近点]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107319501</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107319501</guid><author>a1047120490</author><pubDate>Mon, 13 Jul 2020 16:21:20 +0800</pubDate><description><![CDATA[文章目录已优化版本未优化版本
点P到三角形的相交点分为三种情况：
1.顶点域，相交点为三角形的三个顶点
2.边域，相交点在三角形的三条边上，也就是点P在边上的投影
3.中心域，相交点在三角形内部，也就是点P在三角形中的投影
代码如下：
已优化版本
    /// &lt;summary&gt;
    /// 点到三角形最近点,已优化cross为dot
    /// 求解思路：平面的法线和pa，pb，pc的法线进行dot，可知p是落在哪个域上，再对p在各个边上进行投影，求得边域上最近点。在三角形内就是质心]]></description><category></category></item><item><title><![CDATA[[笔记]松散四叉树，BVH，BSP，KD树的特性以及适用情况]]></title><link>https://blog.youkuaiyun.com/a1047120490/article/details/107319358</link><guid>https://blog.youkuaiyun.com/a1047120490/article/details/107319358</guid><author>a1047120490</author><pubDate>Mon, 13 Jul 2020 16:16:47 +0800</pubDate><description><![CDATA[[笔记]松散四叉树，BVH，BSP，KD树的特性以及适用情况松散四叉树层次包围盒BVH二叉空间分割（BSP）kd树几种结构的比较
松散四叉树
比四叉树多了入口边界(也就是四叉树的边界)和出口边界(比四叉树边界大的边界)
如何判定一个物体现在在哪个节点
    若物体还没添加进四叉树/八叉树，则检测现在位于哪个节点的入口边界内;
    若物体先前已经存在于某个节点，则先检测现在是否越出该节点的出口边界，若越出再检测位于哪个节点的入口边界内
应用场景：
    感知检测的过滤,碰撞检测过滤，光线追踪过滤不必要]]></description><category></category></item></channel></rss>