第七课

为什么要渲染阴影

为了让画面看起来更加真实合理不是么?

如何渲染阴影

我们先用在光源的方向放一个摄像机,可以拿到一个图像的深度值,透过MVP变换之后,我们拿到摄像机视角的一个图像,我们只需要这张图像上的深度就好了。也就是各个片元的z值。

这里渲染深度值一直是黑色的,卡壳了。

第六课后半部分

Reference

Lesson 6bis: tangent space normal mapping · ssloy/tinyrenderer Wiki (github.com)
从零开始的TinyRenderer(6.5)——切线空间法线贴图 - 知乎 (zhihu.com)
几何向量:计算光线反射reflect向量_反射向量-CSDN博客
为什么要有切线空间(Tangent Space),它的作用是什么? - 鸡哥的回答 - 知乎
为什么要有切线空间(Tangent Space),它的作用是什么? - Milo Yip的回答 - 知乎

上节课的末尾

漫反射

这里的漫反射只是使用了phone模型

diff = l dot n

高光

我们可得高光模型:

Read More

转载-Navigation Mesh寻路算法

著作权归作者所由,如有侵权请联系我删除
作者: Deadexow
笑看人间沧海,独活岁月轮转
地址:Navigation Mesh寻路算法 - 知乎 (zhihu.com)

首先这是翻译的是澳大利亚维多利亚大学(Victoria University)由Xiao Cui和Hao Shi两位大佬写的一篇关于Navigation Mesh的算法

Summary Pathfinding is a fundamental problem that most commercial games must deal with. Due to the increase in game complexity, early solutions to the problem of pathfinding were soon overwhelmed. $A^*$ alone, a classic search algorithm, is no longer sufficient to provide the best solution. The popularization of using navigation mesh in pathfinding makes $A^*$ search a very small proportion of pathfinding implementation. In this paper, it systematically reviews the entire process of using a navigation mesh to find an optimal path. First a general pathfinding solution is described. Then examples of using $A^*$ in a navigation mesh are given. Additionally, implementation details of using funnel algorithm in both triangulation and polygonization are given, which is a major contribution of this paper.
Key words Pathfinding, $A^*$, navigation mesh, triangulation, funnel algorithm

Read More

TCP的一些问题

频繁发送消息可能导致接收方面临以下问题:

消息堆积: 如果消息发送速率高于接收方处理消息的速率,消息可能会在接收方的缓冲区中堆积。这可能导致缓冲区溢出,使得部分消息丢失或被丢弃。

资源消耗: 高频率的消息接收会增加系统资源的消耗,包括CPU和内存。如果处理消息的速度跟不上消息的到达速度,系统可能会因资源不足而变得不稳定。

延迟增加: 如果接收方处理消息的速度跟不上消息的到达速度,消息在缓冲区中等待处理的时间会增加,导致消息的传输延迟增加。

响应性下降: 高频率的消息接收可能会影响接收方对其他任务的响应性能。如果接收方花费过多的时间处理消息,可能会影响到对其他事件或请求的及时响应。

Read More