5.5k 5 分钟

以下为个人学习笔记整理,课程官网传送门,作业传送门,会议系统传送门。 # Real-time Global Illumination 实时渲染中所描述的全局光照实际上就是比「直接光照」多一次的「间接光照」。 # Reflective Shadow Maps(RSM) 由于要用「次级光源(反射物)」去照亮周围的物体,又因为周围物体对「次级光源」的观察方向都是不同的 —— 需要知道「次级光源」各个方向上的光照强度。因此为了简化计算:不考虑观察方向带来的影响,假设所有的「反射物」的「BRDF」都是 diffuse 的。这样从任意方向的观察结果都是一致的。 GAME101...
6.7k 6 分钟

以下为个人学习笔记整理,课程官网传送门,作业传送门,会议系统传送门。 # Real-time Environment Mapping 环境光照认为所有的光线都是来自「无限远」的(所有光线强度是相同的)。 # Shading from Environment Lighting 环境光也被称为「Image-Based Lighting」(IBL)。 # How to use it to shade a point(without shadows)? Solving the rendering equation:由于环境光不考虑阴影(遮挡)因此不需要计算「Visibility...
7.6k 7 分钟

以下为个人学习笔记整理,课程官网传送门,作业传送门,会议系统传送门。 # Real-time Shadows Shadow mapping The math behind shadow mapping Percentage closer soft shadows Variance Soft Shadow Mapping MIPMAP and Summed-Area Variance Shadow Maps Moment shadow mapping Distance field soft shadows # Shadow mapping 2-Pass Algorithm:详细说明见...
1.9k 2 分钟

以下为个人学习笔记整理,课程官网传送门,作业传送门,会议系统传送门。 # Recap of CG Basics Basic GPU hardware pipline OpenGL OpenGL Shading Language(GLSL) The Rendering Equation Calculus # Graphics(Hardware) Pipeline 下图为渲染管线的渲染流程: 【Input】输入的数据是一堆「模型上」的「顶点」。 【Vertex Processing】经过一系列顶点的处理...
5.1k 5 分钟

以下为个人学习笔记整理。组内分享文档 # JPS 算法分享 # 介绍 JPS 又名跳点搜索算法(Jump Point Search),是由澳大利亚两位教授于 2011 年提出的基于 Grid 格子的寻路算法。 JPS 算法在保留 A* 算法的框架的同时,进一步优化了 A* 算法寻找后继节点的操作。 # A * 算法 由于 JPS 的实现是基于 A* 算法的基础上完成的。因此,让我们简单回顾一下 A* 算法: # 算法核心 # 数据结构 open_map :待遍历字典,存储需要遍历的节点。 close_map :已遍历字典,存储已经遍历过的节点。 p_queue...
2k 2 分钟

以下为个人学习笔记整理。总所都周知,做游戏的, A* 寻路是基础,作为一个游戏研发工程🦁,不会 A* 属实说不过去。 在这个英才辈出,手撕红黑的时代,不会 A* 无异于身处食物链的低端。所以!痛定思痛,最终决定还是学习一下(狗头。 # A_star 算法 # 什么是 A* 算法❓ A * 是一种明智的搜索算法,或 “最佳优先” 搜索,意味着它是根据加权图来表示的:从图的特定起始节点开始,它的目的是找到到给定目标节点的路径最小的路径费用(最短路程,最短时间等)。它通过维护始于起始节点的路径树并一次扩展一条路径直到满足其终止标准来做到这一点。——Wikipedia # 扩展路径 A*...
5.7k 5 分钟

以下为个人学习笔记整理。参考书籍《C++ Primer Plus》 # 十八、C++11 新功能 # 新类型 long long unsigned long long char16_t char32_t string # 新的统一初始化规则 支持大括号初始化列表。 int x = {5};double y {2.1};short lst[6] = {1,2,3,4,5,6};# 缩窄 初始化列表可以防止缩窄,即禁止将数值赋值给无法存储它的数值变量。 #...
7.5k 7 分钟

以下为个人学习笔记整理。参考书籍《C++ Primer Plus》 # 十七、输入、输出和文件 # C++ 输入和输出概述 # 流和缓冲区 在流的「搬运」工程中,程序本身起到了流缓冲的作用。而输入和输出则可以是任意的文件、程序、设备等。 将流与输入去向的程序关联起来。 将流与输出去向的程序关联起来。 相比于每次读取一个字符再进行处理,一口气读取大量数据,在进行批量处理不失为一种高效的方式。缓冲区可以高效的批量处理数据,就像一个蓄水池。 由此缓冲区便横空出世了。程序每次从输入方获取大量数据到缓冲区,并通过刷新缓冲区的方式批量写入到输入方,之后清空缓冲区。 这种方式也被称为...
13k 12 分钟

以下为个人学习笔记整理。参考书籍《C++ Primer Plus》 # string 类和标准模板库 # string 类 # 构造字符串 string 类的 string::npos 被定义为字符串的最大长度,通常是 unsigned int 的最大值。 通常用 NBTS(null-terminated string)表示空字符结束的字符串 —— 传统的 C 字符串。 # C++11 新增的构造函数 构造函数 string(string&& str) 类似于复制构造函数。会为 str 创建一个新的 string 副本,但是过程中不能保证 str...
1.7k 2 分钟

以下为个人学习笔记整理 # 三、小李在箱根 # 第⑨课 四川料理 (しせんりょうり) は  辛 (から) いです # 语法解释✨ # 「名」は「一类形」です 日语的形容词分为两种,其中「一类形容词」都以 い 结尾。做谓语时后面需要带上 です 。 示例 四川料理 (しせんりょうり) は  辛 (から) いです。(四川菜很辣。) # 「一类形」做谓语时的否定形式 「一类形容词」用作谓语时的否定形式是将词尾的 い 变为 く 再加上 ないです 或 ありません 。 示例 この スープは  熱 (あつ) く ないです/ありません。(这个汤不热。) #...