<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ToryYang的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ToryYang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ToryYang]]></copyright><item><title><![CDATA[UE4 源码阅读：从引擎启动到Receive Begin Play]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/127042280</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/127042280</guid><author>ToryYang</author><pubDate>Sun, 25 Sep 2022 23:48:05 +0800</pubDate><description><![CDATA[UE4 源码阅读：从引擎启动到ReceiveBeginPlay]]></description><category></category></item><item><title><![CDATA[Games104 引擎工具链笔记]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/125834471</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/125834471</guid><author>ToryYang</author><pubDate>Sun, 25 Sep 2022 19:51:10 +0800</pubDate><description><![CDATA[Games104 引擎工具链笔记]]></description><category></category></item><item><title><![CDATA[Games104 gameplay系统笔记]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/125827391</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/125827391</guid><author>ToryYang</author><pubDate>Sun, 25 Sep 2022 19:49:56 +0800</pubDate><description><![CDATA[Games104 GamePlay系统笔记]]></description><category></category></item><item><title><![CDATA[排序算法总结]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/106911812</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/106911812</guid><author>ToryYang</author><pubDate>Sat, 06 Mar 2021 17:17:23 +0800</pubDate><description><![CDATA[简单排序算法
1、冒泡排序
2、插入排序
3、选择排序
4、归并排序
高级排序算法
1、散列技术：桶排序、基数排序、奇数排序
2、优先级队列：堆排序、锦标赛排序
3、快速排序
（1）思想：如果将左侧元素都小于等于它，右侧元素都大于等于它的元素称为轴点，那么在已经排好序的正序序列中，所有的元素都是轴点。因此可将排序看成是将轴点逐个归位的过程，基于此设计的算法称作快速排序，如何快速确定轴点是快排的核心。
（2）和归并排序的区别：归并排序核心在于如何将子任务的解进行合并，而快速排序的核心在于如何分。
（3）如何寻]]></description><category></category></item><item><title><![CDATA[Games101笔记：几何（二）：曲线]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/113812339</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/113812339</guid><author>ToryYang</author><pubDate>Wed, 17 Feb 2021 23:04:30 +0800</pubDate><description><![CDATA[曲线
1、贝塞尔曲线
（1）目的：用一系列控制点定义曲线，如下图定义了起点为p0，终点为p3，且起始和结束切线为p0p1方向和p2p3方向，属于显式表示。

（2）生成方法：de Casteljau算法，枚举所有的t，递归计算t对应的位置，

计算得到的每个点都是给定点的线性组合：

贝塞尔曲线的性质：

第二条性质仅针对给定三个点。
第三条性质：对于给定点做仿射变换，变换后得到的贝塞尔曲线，一定和对原贝塞尔曲线上每个点做仿射变换后，再次得到的贝塞尔曲线一致。
第四条性质：凸包性质，指贝塞尔曲线一定在控制点]]></description><category></category></item><item><title><![CDATA[Games101笔记：几何（一）：隐式和显式几何表示]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/113804656</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/113804656</guid><author>ToryYang</author><pubDate>Sun, 14 Feb 2021 23:32:39 +0800</pubDate><description><![CDATA[纹理的另外作用：
（1）模拟环境光
纹理可以模拟环境光照（假设环境光线来自无限远处，只记录方向信息），用来执行渲染。
用环境光表示纹理的实例，把环境光记录在球面上：

将环境光记录在球面上会带来扭曲问题（对信息的不均匀描述），是由于球本身的形状导致的。

解决方法：使用包围盒，将信息存储到立方体的表面上，得到六张图。

（2）凹凸贴图，减少着色的计算量
原因是纹理可以定义任意不同点的属性，而不单单是在Phong模型中定义kd值。使用凹凸贴图则是定义了不同点的高度，进而改变了法线，进而影响着色，而不会改变原本]]></description><category></category></item><item><title><![CDATA[C#异步委托检测线程结束的方式]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/113615508</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/113615508</guid><author>ToryYang</author><pubDate>Wed, 03 Feb 2021 20:14:30 +0800</pubDate><description><![CDATA[1、异步委托开启多线程
通过BeginInvoke开启异步委托，BeginInvoke返回IAsyncResult类型的对象，可以通过这个对象获得线程状态，比如线程执行状态。
TakesAWhileDelegate d1 = TakesAWhile; //声明委托
IAsyncResult ar = d1.BeginInvoke(1,3000,null,null); //BeginInvoke:在一个独立的线程上执行引用方法，并且立即返回到原始线程,原始线程可以继续。

2、隐式检测线程结束，并获取返回值
]]></description><category></category></item><item><title><![CDATA[Games101 着色笔记（二）：插值，纹理的其他作用]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/113530952</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/113530952</guid><author>ToryYang</author><pubDate>Tue, 02 Feb 2021 16:16:32 +0800</pubDate><description><![CDATA[三角形内插值：
目的：在三角形内部获得平滑过渡
插值的内容：纹理、颜色、法线（Phong）等等。
怎么做插值：重心坐标
重心坐标的定义：

满足三个顶点的系数之和为1（作用是限制点在三角形所在的平面内），且均非负，三角形内任意一点的属性可表示为顶点属性的线性组合。
顶点自身的重心坐标：

三角形内任意一点的重心坐标：
可通过面积比求出来，各顶点系数等于”对面“三角形面积/总面积

三角形重心的坐标：
系数各为1/3，将三角形均等分为三份

利用重心坐标做插值的一个问题：
在投影变换下，不能够保证重心坐标不变]]></description><category></category></item><item><title><![CDATA[C#反射]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/113375053</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/113375053</guid><author>ToryYang</author><pubDate>Tue, 02 Feb 2021 12:57:12 +0800</pubDate><description><![CDATA[元数据和反射
（1）元数据(metadata)：程序及其类型的数据
（2）反射：运行的程序查看其元数据的行为
Type类
作用：获得反射
特点：抽象类，不能用来实例化对象
程序中的每个类都有一个对应的Type对象，存储这个类的信息(有哪些属性成员等等)
获取Type:
System.Type t = v.GetType();

Type类的常用属性：
（1）Name：类名
（2）Namespace:命名空间
（3）Assembly：程序集类型
Type类获取类的属性，只能获取public：
  System]]></description><category></category></item><item><title><![CDATA[Games101 着色笔记（一）：模型和纹理]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/113447864</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/113447864</guid><author>ToryYang</author><pubDate>Sun, 31 Jan 2021 23:22:31 +0800</pubDate><description><![CDATA[什么是着色：
The process of applying a material to an object.
对不同物体应用不同材质的过程，不同的材质与光线有不同的相互作用。
着色是局部的！ 阴影的产生与着色无关，着色不考虑其他物体的存在
Phong着色模型（Blinn-Phong Reflectance Model）：
（1）几个概念：

Specular highlights：高光部分，镜面反射
Diffuse reflection：漫反射部分，光线均匀发散的部分
Ambient lighting：间]]></description><category></category></item><item><title><![CDATA[Games101 光栅化笔记, 作业二]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/113404643</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/113404643</guid><author>ToryYang</author><pubDate>Sat, 30 Jan 2021 15:42:37 +0800</pubDate><description><![CDATA[1、对屏幕的理解：
（1）像素的二维数组 （2）分辨率：数组的规模 （3）典型的光栅成像设备
2、像素的抽象理解：
（1）内部颜色不会变化的小方块 （2）RGB三者的颜色混合
3、对光栅化的理解：对像素进行着色
4、屏幕空间（在闫老师课上的规定）：
（1）屏幕的左下角是原点
（2）x和y坐标都取整数，下图中蓝色像素坐标为(2,1)
（3）像素的索引范围是（0，0）-&gt; （width-1，height-1）
（4）(x,y)为像素坐标，则像素中心坐标为(x+0.5,y+0.5)
（5）屏幕覆盖范围从（0]]></description><category></category></item><item><title><![CDATA[LINQ做查询]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/113363725</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/113363725</guid><author>ToryYang</author><pubDate>Fri, 29 Jan 2021 11:21:02 +0800</pubDate><description><![CDATA[以人物类的设定为例：
public class people
{
    public string name;
    public int old;
    public int LifeExpectancy;
    public bool sex; //0代表男，1代表女

    //籍贯
    public string birthPlace = ""; //出生地 
    public string birthregion = ""; //出生地区

    public CountryI]]></description><category></category></item><item><title><![CDATA[Games101 作业一 构建模型变换，和透视投影矩阵]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/112745264</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/112745264</guid><author>ToryYang</author><pubDate>Thu, 28 Jan 2021 23:48:24 +0800</pubDate><description><![CDATA[实验目的：
构建变换矩阵
实验

]]></description><category></category></item><item><title><![CDATA[C#委托]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/113183190</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/113183190</guid><author>ToryYang</author><pubDate>Tue, 26 Jan 2021 17:19:37 +0800</pubDate><description><![CDATA[背景：
在游戏中有一些需要经常使用的函数，比如生成Perfab，封装成接口：
 //生成Perfab接口函数, 参数为路径 + 父物体 + 位置
    public Transform GenerateObjects(string path, GameObject Parent, Transform Destination){
        Object perfab = Resources.Load(path, typeof(GameObject));
        GameObject Perfa]]></description><category></category></item><item><title><![CDATA[实现一个简单的shell]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/109017840</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/109017840</guid><author>ToryYang</author><pubDate>Sat, 26 Dec 2020 23:15:05 +0800</pubDate><description><![CDATA[知识总结
一、异常和进程
1、异常，中断的一种类型：

故障： 错误引起，如缺页，除0
陷阱：”故意的异常“，目的是使用系统调用
终止：致命错误，如硬件损坏
2、创建子进程 —— fork()函数：
作用：创建子进程，返回两次，父进程返回创建子进程的pid，子进程返回0
3、僵尸进程：
进程有三种状态：运行、停止、终止；进程终止时仍占用系统资源，终止但未被回收的子进程成为僵尸进程。
子进程的回收交由父进程执行，接收子进程的退出状态，内核删除其信息；如果父进程先于子进程终止，则交由所有进程的祖先–init负责]]></description><category></category></item><item><title><![CDATA[Linux基础知识总结]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/109033854</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/109033854</guid><author>ToryYang</author><pubDate>Sat, 28 Nov 2020 22:19:13 +0800</pubDate><description><![CDATA[1、ls
显示隐藏文件： ls -a ,隐藏文件都是以.开头的
回到home目录 ： ls ~
通配符：
单独的通配符不能识别，必须结合其他字母
(1)*，代表0个或多个任意字符；如只罗列后缀是.cpp的文件：

(2)?,只代表单个字符，如罗列前缀有4个字母后缀为.h的文件：

(3) [],两种用法
1、如检索第一个字母是V或x，以.h为后缀结尾的文件：

2、如检索第一个字母是a-x之间的，以.h为后缀结尾的文件：

2、touch
作用：用来创建文件
3、find
（1）模糊搜索：

...]]></description><category></category></item><item><title><![CDATA[矩阵分块转置降低 cache miss分析 （Cache Lab PartB）]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/109048729</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/109048729</guid><author>ToryYang</author><pubDate>Tue, 13 Oct 2020 16:43:12 +0800</pubDate><description><![CDATA[Lab中给出的cache规格为： s=5, E=1, b=5
矩阵A和B在内存中连续存放。
Lab要求分别对32 * 32 ， 64 * 64， 61 * 67的矩阵做转置优化，用到的都是将矩阵分块分别转置的方法。相较于普通转置，为什么分块能够优化cache miss次数？
分块是通过什么来实现优化的 — &gt; 通过减少B一次访问的列数。
最根本的原因在于： Cache不能够一次装满整个矩阵，以最小的矩阵32 * 32而言，是4个cache的大小。如果矩阵大小为正好能够装满cache的16 * 16或更]]></description><category></category></item><item><title><![CDATA[CSAPP Cache 知识总结； Cache Lab Part A]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/107008471</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/107008471</guid><author>ToryYang</author><pubDate>Sat, 10 Oct 2020 13:02:11 +0800</pubDate><description><![CDATA[学习这部分内容的目的在于：如果理解了计算机系统中数据是如何在不同层次间移动的过程，就可以 优化程序的局部性 ，使自己应用程序的数据存储在层次较高的地方，加速CPU访问。
知识总结
1、程序的局部性
时间局部性：多次引用相同的内存位置
空间局部性：引用之前临近的内存位置
1、高速缓存结构
高速缓存由S个组构成，每个组包含E个行，每行包含m=s+e+b有效位表示这个行中是否包含有效信息，标记位表示

高速缓存结构可以用四元组（S,E,M,B）来表示，高速缓存大小C=SEB
S：
E：
M：
B：

...]]></description><category></category></item><item><title><![CDATA[基于贪心策略的，游戏战略地图着色算法设计 （Unity）]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/108897500</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/108897500</guid><author>ToryYang</author><pubDate>Thu, 01 Oct 2020 22:14:57 +0800</pubDate><description><![CDATA[一共有九种颜色，初始化有11个国家，所以相邻国家势必有颜色冲突的可能性（因为随着游戏进程国家有消失或新增的可能，因此不能写死），为此需要设计一种着色算法，因为游戏中的国家数量不会特别多，所以性能不是考虑的首要因素，因此采取贪心策略，最终算法时间复杂度为O(n2)O(n^2)O(n2)。
初始的游戏地图：

将其抽象成无向图，存储国家间的邻近关系，如下：
（国家序号从0到10：燕、晋、秦、周、郑、楚、吴、越、宋、鲁、齐）
燕 - 齐（0-10） 燕 - 晋(0-1)
晋 - 秦（1-2）  晋 - 齐（1-1]]></description><category></category></item><item><title><![CDATA[CSAPP Link总结；HIT linkbomb实验记录]]></title><link>https://blog.youkuaiyun.com/ToryYang/article/details/108209956</link><guid>https://blog.youkuaiyun.com/ToryYang/article/details/108209956</guid><author>ToryYang</author><pubDate>Thu, 17 Sep 2020 21:33:22 +0800</pubDate><description><![CDATA[实验分成五个phase，每个phase需要将main和对应的phase文件链接，修改可执行文件。
可执行文件框架：
#include &lt;stdio.h&gt;
#include "config.h" 
void (*phase)();   /*初始化为0*/
int main( int argc, const char* argv[] ) {
        if ( phase )
               (*phase)();
        else
               prin]]></description><category></category></item></channel></rss>