时域和频域 傅里叶级数 的频谱 正弦波 正弦波就是一个圆周运动在一条直线上的投影。所以频域的基本单元也可以理解为一个始终在旋转的圆 如前两幅图所示,随着正弦波数量逐渐的增长,它们最终会叠加成一个标准的矩形。如果换一个角度来看,便会发现矩形波在频域的样子(即第四幅图)称为频域图像,也成为频谱。完整流程如下: 傅里叶级数 的的相位谱 傅里叶分析的用处 图像处理 图像增强 2021-11-24 知识库 #信号 #时域 #频域
Whitted Style Ray Tracing 从main函数开始,定义场景的参数,添加物体(球体或三角形)到场景中,并设置其材质,然后将光源添加到场景中 调用Render函数。在遍历所有像素的循环里,生成对应的光线并将返回的颜色保存在帧缓冲区中。在渲染过程结束后,帧缓冲区中的信息将被保存为图像 在生成像素对应的光线后,调用CastRay函数,该函数调用trace来查询光线与场景中最近的对象的交点 2021-11-22 图形学 #Graphics #GAMES
Bézier Curve de Castekjau Algorithm 如图所示,对于 3 阶的 Bézier 曲线在 时刻需要寻找 3 次插值点:第一次为 , 和;第二次为 和;第三次为,即曲线上的点。对应的伪代码如下: 1234567recursive(插值点 / 控制点 (points),时刻 (t)): // 递归终止条件 只有一个插值点: return 该插值点; 2021-11-22 图形学 #Graphics #GAMES
Vulkan Note Vulkan的优势 显式的GPU控制 Vulkan把API验证、内存管理、多线程管理等工作交由开发者负责。一旦API使用出错,应用就会出现crash CPU多线程的效率提升 Vulkan中引入了 Command Buffer 的概念,每个线程都可以往Command Buffer 提交渲染命令,给开发者提供了充分发挥CPU多核多线程的优势。在复杂场景下,性能的提升非常客观 可移植性 Vulk 2021-11-22 游戏开发 #Vulkan #API
红黑树 红黑树 虽然平衡树解决了二叉查找树退化为近似链表的缺点,不过不是最佳方案。因为平衡树要求每个节点的左子树和右子树的高度差至多等于 1,这个要求实在是太严了,导致每次进行插入 / 删除节点的时候,几乎都会破坏平衡树的第二个规则,进而我们都需要通过左旋和右旋来进行调整,使之再次成为一颗符合要求的平衡树。显然,如果在那种插入、删除很频繁的场景中,平衡树需要频繁着进行调整,这会使平衡树的性能大打折扣,为 2021-11-22 数据结构 #数据结构 #红黑树
Lua GC 机制 垃圾回收 采用了自动内存管理。 这意味着你不用操心新创建的对象需要的内存如何分配出来, 也不用考虑在对象不再被使用后怎样释放它们所占用的内存。 Lua 运行了一个垃圾收集器来收集所有死对象 (即在 Lua 中不可能再访问到的对象)来完成自动内存管理的工作。 Lua 中所有用到的内存,如:字符串、表、用户数据、函数、线程、 内部结构等,都服从自动管理。 垃圾回收器函数123456789101112 2021-11-22 Lua #lua
包围盒 轴对齐包围盒(Axis-Aligned Bounding Box,AABB)三维的 AABB 就是一个简单的六面体,每一边都平行于一个坐标平面,矩形边界框不一定都是立方体,它的长、宽、高可以彼此不同。AABB 内的点满足以下条件:优点是简单;缺点是紧密型较差。 有向包围盒(Oriented Bounding Box,OBB)OBB 包围盒根据物体本身的几何形状来决定包围盒的大小和方向,包围盒无须和 2021-11-17 图形学 #Graphics