Where is my life? 我的人生在哪里
前言他,23岁,一事无成,但是找到了自己的路。
很久没有写文章了,前段时间一直很迷茫,我总是想为我所做的事情赋予一些意义,说服我自己去完成它,真让我感觉非常痛苦。
明知它是没有意义的,但我却要不停的相信它是有意义的,这甚至让我有点精神分裂。
直到昨天,我洗澡的时候在想,为什么我不干脆直接承认所有的一切都是无意义的呢?
将我的人生比作游戏,不断地发起挑战。
也许这样的人生态度可以支撑我走的更远。
这不禁让我想起了《西西弗斯神话》,加缪说我们应该想象西西弗斯是快乐的,在那一刻我终于理解了他,西西弗斯应该是快乐的,他也许就在不断地挑战着他自己。
更快,更高,更持久。
从今年2月到现在,9个月的时光,我一直在思考这个问题,很庆幸我现在终于有了自己的答案,终于可以更加坦然的面对自己。
为了纪念,于第二天(2024/11/15)写下这篇文章,同时也会在今年将其做成视频,希望能给有相同困境的朋友们一些启发。
正文What is the meaning of life? Everyone has their own answers, maybe eating everything, ...
Blender基础全流程
前言总所周知,美术是独立游戏很重要的一块,可以不好,但是不能没有,所以就开始学Blender啦。
然后油管上有个视频展示了一下他学了一周Blender的成果,看着还不错 https://www.youtube.com/watch?v=OrmKzaeoL2c,所以我也打算先努力学习一周,至少得做到可以自己制作想要的场景。
Day1 & Day2找了油管比较火的教程来看 https://www.youtube.com/watch?v=B0J27sf9N1Y,先做个甜甜圈,熟悉一下Blender。
Part1Follow the part1, I make some caps/hats for the monkey.
Part2 & Part3: ModellingBefore it, I try to place three simple torus, it is pretty interesting.
However, we should make our models a little strange, not prefect, or they are ...
基于Blender的三维Logo
ToolsDue to it is a 3D logo, I decide to use Blender but not PS or AI.
MeaningsIn any 3D softwares, there is an axis which is consisting of three colored arrows.
So I use three ‘Z’ words to make up my logo.
Moreover, different color is a symbol of different spirit which you can search on this web site https://www.color-name.com/.
Red(X axis): Passion, #92162D(Red Passion Color). Red is a very eye-catching color. It commands attention and gives off a feeling of energy, vitality, confidence, power ...
基于OpenGL的光栅化渲染管线
前言最近在写游戏引擎,在这里将主要记录一下如何架构跨平台的 Rendering Pipeline。
在大部分人眼中,这就是 Rendering Pipeline,但是其实这只能说是 Shader Pipeline,真正的渲染管线远比这更加复杂。
光栅化的渲染管线固定的渲染管线这是早期架构的渲染管线,因为引擎的交互还不完善,所以暂时不需要考虑动态的情况。
Rendering/
RenderingInterface.hpp
Platform/
Windows/
WindowsRenderingPipeline.hpp
WindowsRenderingPipelineState.hpp
DirectXInterface.hpp
Android/
AndroidRenderingPipeline.hpp
AndroidRenderingPipelineState.hpp
OpenGLInterfac ...
Games101学习笔记
前言感觉自己一开始没有认真学,所以现在基础有点差,最近打算重学一遍,该手推就手推,不偷懒了。
这次主要是跟着 GAMES-Webinar 的课程学习,所以如果你想要看懂这份笔记,我建议先去学习相应的课程。
TransformationView transformation相机需要设置的参数。
将相机平移至原点并同时将 look at 和 up 及其叉乘共三个向量同时对其标准坐标轴的矩阵即为 View matrix。
唯一要注意的就是由于直接计算旋转矩阵比较复杂(从任意向量变换到标准坐标轴),所以先计算其逆矩阵(从标准坐标轴变换到任意向量)。
Projection transformation其实只要求从四棱台压缩到矩形的矩阵就行了。
直觉上其实很容易得出结论,难点在于求出相应的变换矩阵。
为了计算出来就得补充两个假设。
Any point on the near plane will not changeAny point’s z on the far plane will not change
解方程后也能求出来最后的投影矩阵(还需要用 FOV 和长宽比进行参数替代)。 ...
DX12渲染管线学习笔记
前言零散的笔记,是我在学习过程中的思考,自认为简单的东西并不会记录在内。
Direct3D 基础初始化 D3DFactory 和 Device说实话 DirectX 中的架构思路真的值得去学习,这里的工厂和驱动都是蕴含了很多的设计思想的,但我目前还不能真正的理解。
WRAP应该不需要去写它的意义吧,猜猜就知道了。
命令个人感觉 CommandList 类似于资源描述符,而 CommandAllocator 类似于缓冲区,将 CommandList 中的命令传入 CommandQueue 中,但是 CommandAllocator 还是原来的,这也是为什么在 CommandQueue 的命令被执行完前不能重置 CommandAllocator。
渲染流水线目前这里指的就是普通的光栅化流水线。
这里特地拍了一张我在书上的笔记,是想展示一下数据的流向。
Step1 内存数据流向显存可以先到后面看一下流水线状态,可以发现主要就是绑定根签名表和 Shader,缓冲区都是在创建时绑定的,当然绑定的都是描述符,绑定数据的话带宽直接废掉了。
书里也说得很清楚了绑定的时候 GPU 会自动创建描述符 ...
游戏引擎架构阅读笔记
前言不只是阅读《游戏引擎架构》的笔记,更多的是做引擎时的心得。
项目管理版本控制、项目构建等等其它方面的工具自选就行,好用就完事了。
引擎核心层引擎入口建立 Engine 的基类,同时在 main/WinMain 中创建 Engine,将其编译成 Lib 库后暴露给编辑器,编辑器通过继承 Engine 类以实现对引擎的配置。
1234567891011121314class Editor : public Engine{public: Editor() {}; ~Editor() {};private:};Engine* CreateEngine(){ Editor *editor = new Editor(); return editor;}
实例化引擎顺序书里面说要注意,但我觉得还好,不容易崩,实在不行就用书里面的优先级队列吧。
不过引用友元也是会初始化的,所以最好还是在 PreInit 或者 Init中完成。
事件日志管理和计时器这种都是自己想怎么弄都行,不会消耗太多性能,不同的日志和计时 ...
基础篇
前言好久没更新了,之后尽量日更,最近在 gap,下半年去北欧读研,最近就随便学点感兴趣的东西。
我会尽量研究的透彻点,到研一的 level 吧(hope),代码基本都会附,但不会给全,不然你们都不思考。
定义Artificial Intelligence模拟人类的行为来解决问题。
Machine Learning和传统算法的区别在于目的是发现规律(Rules),和不是获取结果。
Deep Learning / Neural Networks相比于 ML,多了很多中间层。
NN 不是模拟人脑。
路线分成 Search,Knowledge,Uncertainty,Optimization,Learning,Neural Networks 和 Language 七个 Part 来理解 AI。
参考资料Harvard CS50’s Artificial Intelligence with Python – Full University Course
Machine Learning with Python Certification | freeCodeCamp.org
以及 ...
如何从RNN走向LSTM和GRU
为什么会出现LSTM和GRU呢?因为 RNN 会出现梯度消失和梯度爆炸,梯度消失就意味着模型缺少长期记忆。
如果你问我为什么 RNN 会出现梯度消失,这是由它的训练公式决定的。
LSTM这也解释了为什么 LSTM 多加了一条贯穿时间的,不直接施加任何权重的 cell state,就是为了解决梯度消失的问题,从而获取长期记忆。
理解了这一点,也许你再看 LSTM 的流程就会豁然开朗了,这边推荐油管上的一个视频 https://www.youtube.com/watch?v=YCzL96nL7j0,它甚至还举了一个计算的例子。
最后来解决最关键的问题:为什么 LSTM 是这样的结构?一个遗忘门,一个输入门,一个输出门?
本质其实就是在用最简单的模型模拟人的记忆过程,遗忘门决定了长期记忆里多少要被遗忘,输入门决定了新的记忆要加入多少,输出门决定了记忆的输出,同时这也是研究人员用各种参数和模型结构测试出来的结果。
切记不要神话任何模型的诞生,因为你只看到了最后的结果。
GRUGRU 其实就是 LSTM 的简化版,它把遗忘门和输入门合并成了一个更新门,这样就减少了参数,也减少了计算量。
为 ...
深度学习的本质
前言要想讲清楚深度学习的本质,就要先从显示编程和隐式编程开始讲起。
显示编程所谓显示编程,顾名思义,就是咱们让计算机干什么,计算机就干什么,比如让计算机走迷宫,我们就是让它上下左右都试探一边。
123456def solve(maze): while not at_end(maze): for direction in ['up', 'down', 'left', 'right']: if can_move(maze, direction): move(maze, direction) break
隐式编程隐式编程其实就是指人工智能中的那些学习方法,它就是由机器学习之父提出来的,旨在不通过显示的告诉计算机怎么做,就能让计算机自己学会怎么做。
机器学习为了方便理解,所以我这里只讨论线性回归的方案,线性回归从本质上来说就是只有输入层和输出层的神经网络。
深度学习深度学习的提出其实就是为了让机器学习在特征提取时 ...