Rust 学习资源
博主发现咸鱼咸鱼着居然到 2022 年了,忽然良心不安,因此先从这篇比较水的资源总结开始吧!
这篇文章主要是总结下学 Rust 参考过的资料,会随着博主对 Rust 的关注随缘更新。
更新日志
2023/03/02 新增 noxasaxon/learning_rust.md。
2023/01/06 新增 mouse 姐姐新书《Rust Atomics and Locks: Low-Level Concurrency in Practice》 和STATE MACHINES。
2022/12/28 新增 Ray Tracing in One Week
2022/12/27 新增 LSM in a week
2022/12/25 新增 tfpk/macrokata
2022/12/22 新增 Comprehensive Rust
2022/12/06 新增 night-cruise/async-rust
2022/11/28 新增 《dyn async traits》系列 中文版
2022/11/28 新增 Writing Interpreters in Rust: a Guide W ...
用 Rust 实现简单的光线追踪
学 Rust 十来天了,自己被这个语言惊艳到,就跟着教程 Ray Tracing in One Weekend 写了个很简陋的光线追踪示例练习,项目在 Latias94/rust_raytracing。
学这门语言的时候,感觉就是上手容易遇到很多新概念,容易学不下去,跟编译器作斗争…不过作为一个还很新的系统编程语言,工具链如文章、包管理、格式化、编译器等很完善,官方教程很棒,社区也很活跃。
学 Rust 的契机其实是在 V2EX 上看到有人在纠结学 Go 还是 Rust,底下的帖子也有不少夸 Rust 语言的,因此自己也开始关注 Rust 语言。后来发现 Rust 的用武之地非常广,Github 上还能找到不少 Rust 做的游戏引擎,其中一部分主打 ECS 功能,例如:bevyengine/bevy 、Ralith/hecs 等。
学习 Rust 语言,其实也是在了解一个现代化的语言该有的样子,了解 C++ 或其他语言部分设计上的不足,以及 Rust 是打算如何从根源解决这些问题的。这部分我作为一个初学者,不打算展开讲。大家有空可以了解一下 Rust 语言,看看官方的教程《Rust ...
24 天像素画从入门到放弃
前不久十分厌学,想着是不是学废了,就想找到其他的东西学学,于是有一天周日尝试了同时入门 Blender 和 像素画。
建模其实和 Unity 用初始模型搭积木差不多,入门也还好。但是自己从小就是对美术绝缘,只有初中的时候会和其他同龄人一样照着漫画书瞎画。后来就直到现在,因此开始画像素画的时候还是十分不适应,感觉每一个点都是为无用艺术界添砖加瓦。
后来决定画像素画的契机是听播客介绍到一个码农姐姐为了做游戏坚持 100 天画像素画,于是少年那颗不知天高地厚的心怦然地燃烧起来。
教练!我想学画画!
兴起
作为一个资深松鼠症患者,Steam 里早已经躺着不知道什么时候打折入手的像素画神器 “Asprite”,我原本以为一辈子再也不会下载它,这就是命运的安排吧。
很多软件能画像素画,毕竟像素画就只是由点构成的,不过好的工具能事半功倍。用习惯 PS 的美术朋友可能会选择继续用 PS 改笔触画像素画,对于我来说,功能太多的软件反而会打压我的一时兴起的兴趣,于是我跟着 Aseprite!超方便的像素画软件初学者教程 花半小时大概清楚 Aseprite 有的功能。
Aseprite 是收费的,在 Gi ...
Compute Shader 简介
做游戏的时候,我们经常要面对各种优化问题。DOTS 技术栈的出现提供了一种 CPU 端的多线程方案,那么我们是否也能将一些计算转到 GPU 上面,从而平衡好对 CPU 和 GPU 的使用呢?对我而言,以前使用 GPU 无非是通过写 vert/frag shader、做好渲染相关的设置等操作,但实际上我们还能使用 GPU 的计算能力来帮我们解决问题。Compute Shader 就是我们跟 GPU 请求计算的一种手段。
本文将从并行架构开始,依次讲解一个最简单的 Compute Shader的编写、线程与线程组的概念、GPU 结构和其计算流水线,并讲解一个鸟群 Flocking 的实例,最后介绍 Compute Shader 的应用。全文较长,读者可以通过目录挑想看的看。
Compute Shader 也和传统着色器的写法十分不一样,写传统 Shader 写怕了的同学请放心~
介绍
当今的 GPU 已经针对单址或连续地址的大量内存处理(亦称为流式操作,streaming operation)进行了优化,这与 CPU 面向内存随机访问的设计理念则刚好背道而驰。再者,考虑到要对顶点与像素分 ...
博客新增公开笔记部分
我认为博客应该放一些经过思考的、实践的、适合读者阅读的文章,自己有时候也会在看其他视频教程或文章时记一些笔记。有些笔记本身不太适合分享出来,因为做笔记不可避免的会按照自己的思路和现有知识来定制,可能和别人注意重点不太一样。
因此我打算将一些比较成文的、有结构性的、有参考价值的笔记分享出来,这也能锻炼我把笔记组织成文的能力。
这些公开的笔记我放在独立的一个 Notion 页面中,这个页面可以点击博客上方的公开笔记,或者这个链接找到:公开笔记。
Notion 本身对公式、排版都比较友好,但是打开可能要科学上网,我是懒得把这些文章往博客搬了…不过用 Notion 有个好处就是,我对公开笔记的编辑都能实时更新到。
正文太空了也不好,就放个我笔记的主页图吧~
图形学常见的变换推导
注意:由于这个博客主题对 MathJax 支持不好,部分推导转用图片代替,或者可以移步我的 Notion 笔记:Transformation。
本文是 Games101-现代计算机图形学入门 第三和第四节课的笔记,文中对二维变换、三维变换、视图变换、正交投影和透视投影做了推导,相关视频在下方。
GAMES101-Lecture03 Transformation
GAMES101-Lecture04 Transformation Cont.
本文同时参考了《Unity Shader 入门精要》的第四章,作者公开了第四章的 PDF,可以在下面下载到。
candycat1992/Unity_Shaders_Book
闫老师的推导十分简洁易懂,我也尽量把过程补充到文章中,读者看了我相信肯定也能跟着思路把变换公式推导出来。
在读本文的过程中,也推荐参考上面提到的视频和 pdf 互相参考,本文是视频中推导的详细笔记,冯乐乐的 pdf 中虽然没有投影变换的推导,但是在很多地方都把理论讲的十分清晰,例如必要的数学基础和各种图形学概念的讲解。
线性变换
x′=ax+by y′=cx+dy\begin{ ...
2020年5月技术导读
最近一直在思考自己在技术学习上是否过于低效的问题。出现这个问题的缘由是,自己工作下班之后没多少精力和时间去留给自己学习。本来就有限的时间,如果还没有合适的学习计划,而是一昧凭兴趣去学一些离自己目标方向比较远的东西,可能会事倍功半。
就我而言,自己目前的水平更像是“磨”出来的,东学学西学学,什么都有点印象,但是专业方向的知识之间的连接却非常离散。读研的时候有大量时间给我“磨”,总归能学会点什么,但工作则不一样。
例如一本《Shader 入门精要》目前看了两次,但仍然害怕离开书来写 Shader。再者,一门技术很久不用,再拿起来也需要时间。为此,我总结了三点原因:
工作中很少用到,游戏有特效师,自己也不会主动地思考怎样的 Shader 能为游戏带来更好的效果。
学的时候只光看了,跟着书敲了,但一直没有走出书本,去自己实现自己想要的功能。
觉得 Shader 像 CSS 一样,要记各种东西,凭经验实现效果,而这种知识自己最容易不用就忘。(当然这是错的,这也是为什么我在上期导读选择跟 Games101 图形学课程打基础)
基于上面的原因,导读也是偏向自己打基础的方面。
上一期的博文在:《 ...
2020年4月技术导读
首先,感谢所有将自己时间贡献在知识分享的人们。
本文将简单地介绍下最近我看到的想学的、有意思的教程、视频等,内容不仅限于游戏开发。大家可以做个参考,说不定其中就能找到适合自己的教程,进一步打算接下来的学习。
这个文章类型和之前写的都不一样,一方面有自己时间少、沉淀不够、不能持续输出的原因,另一方面是因为这些东西都比较碎,也不好在记录生活的微博上发布一些专业的东西。至于这个导读会不会成为一个系列来更新,还要看看我有没有足够东西来分享啦。
书籍
《程序员修炼之道(第2版)》
豆瓣地址
在我经过了入门阶段之后,发现很多以前学的很多教程,都很难在工作中进行参考。恰巧云风翻译的第二版已经出版了,里面的内容让我对编程“修炼”有了更深的理解。
投资知识,收益最佳。
——本杰明·富兰克林
学习学习再学习!
游戏开发:世嘉新人培训教材
豆瓣地址
这本书我从 17 年等到现在,三年了,拿到手之后觉得所有的等待都是值得的。
从第一章就能看出作者踏实的编程功底和力求和对优化的不倦追求。一个命令行推箱子游戏从过程式的实现,到运用 C++风格的面向对象的实现,到章节末为了讲解底层内存存储结构而把项目中所有 ...
《图解 C# 教程 第5版》与性能优化
这本书仍然是入门 C# 最好的一本书。
这本书新版出来的时候我十分关注,于是英子姐送了一本给我,本文也是答应英子姐所写的一篇文章。她一开始还问我“你现在还需要看这本入门书吗?”,我认为是的。工作了遇到了不少问题,大都跟自己基础不牢有关系。
这本书以图形为载体,生动地介绍了 C# 语言本身。其中图形对我们了解 C# 语法在内存中的本质十分有帮助,异步、异常等章节中的处理流程图也很清晰明了,这也是我看重的一点。
本文会从本书出发,简单讲讲代码优化的一些点。
在内存中的形态
为什么要了解 C# 在内存中的形态呢?
书中第四章介绍内存区域的栈中,有一句话说的很好:
作为程序员,你不需要显式地对它做任何事情。但了解栈的基本功能可以更好地了解程序在运行时在做什么,并能更好地了解 C# 文档和著作。
游戏开发中,除了业务逻辑,我们还会更关注游戏的性能本身。我们需要保证游戏能流畅运行在大部分机型上,保证每一帧能流畅地播放,例如 CPU 需要处理渲染代码、物理模拟、动画回调等等,其中我们的代码也有可能引起性能问题。我们需要更了解执行代码的代价,例如:
这些代码产生了多少 GC
GC 只会产生一次 ...
2019 年的收获与成长
今年发生了很多事情,博客也因此从七月停更到了现在,实在惭愧…现在趁着年终,赶紧抓住 2019 年的尾巴了,来总结下我的这一年。
本文真的会很啰嗦,但是希望能帮到希望用 Unity 恰饭或者其他技术恰饭的同学。
毕业
今年的上半年完成了研究生的学业,结束了留学生涯。
我的专业课程比较松,总共两年要修 16 节课的学分,但是必修课只有四节,因此我可以尽可能的选择有实战的课程。这边课程的大作业大多需要团队协作,但是有些 IT 研究生同学是跨专业过来的,不是很能写代码,所以有时候挺考验自身能力的(笑。 我组完队一般都希望能把大作业的规模做大些,一方面是作业能拿比较好的分数,另一方面是求职的时候可以拿出能往简历上放的项目经验。
毕业后我发现这种选择是对的,我的队友在毕业后还问我们的线上项目怎么开不起来了,他们也到了找工作的时间,还让我帮忙看了看简历。澳洲工作是很休闲的,大部分下午五六点就能下班。身边同学也在努力地留下来,考 PTE、CCL 考试凑分拿 PR。自己因为还是想做游戏,澳洲环境不太好,就回了国。
从面试到工作
由于课程结束三个月后才能参加毕业典礼拿到毕业证,当时我对求职还不太上心,还 ...