手把手教你架构3d游戏引擎pdf_【书单】总结一下最近阅读的游戏开发/图形学书籍or开源项目...

书籍

Ray Tracing in One Weekend

中文名:《一个周末实现光线追踪》

da2aff45f429490543ab5ecfd963214c.png

项目地址:

https://github.com/petershirley/raytracinginoneweekend​github.com

这是一本免费的电子书,不过40页,内容非常清晰,PDF可以在项目的README中找到。

这个项目适合入门光线追踪。结合PDF,C++源代码不过几百行,就可以实现一个非常简单的光线追踪(路径追踪)渲染器。代码非常易懂。几天时间就可以了解光线追踪领域所关注的问题。

其实这本书是一个系列,后面还有两本:

petershirley/raytracingthenextweek​github.com
53b40a52db77289215fc0ce155c12ac8.png
petershirley/raytracingtherestofyourlife​github.com
53b40a52db77289215fc0ce155c12ac8.png

都可以在README中找到PDF。

书名用中文说分别是《光线追踪:第二周》和《光线追踪:余生》(这也太吓人了)。

内容和代码依然非常易懂,不过是在第一本书的基础上添加了一些更高级的功能。

非常推荐使用此系列入门光线追踪。

Physically Based Rendering: From Theory to Implementation

中文名:《基于物理的渲染:从理论到实现》

df0548bd47417c088acc218b8fee7a44.png

目前出到了第三版,中文版只有第二版。此书与《Real-Time Rendering》和《Advanced Global Illumination》并称图形学三剑客。

我目前阅读了约三分之一,很佩服作者的水平。作者在书里使用了一种“文学编程”的方法,很好的解决了既不用在书中大量篇幅罗列代码块,又可以讲清楚代码实现的具体细节。个人认为此方法值得所有技术书籍作者学习。

此书每章节详细讲述一个话题,直到第十三章,才讲解蒙特卡洛积分,到此才算是覆盖一个渲染所需的各个必要方面。所以本书不适合初学者作为第一本图形学书籍来入门。因为在真正实现一个渲染器之前,就会陷入无尽的细节泥沼之中。

本书配套实现了一个基于物理的渲染器pbrt,代码质量很高,值得阅读。

项目地址:

https://github.com/mmp/pbrt-v3​github.com

渲染器采用C++实现,除去第三方库和工具,以及一些包含大量数字序列的源文件。整个项目的代码规模在三万行左右。适合有一定C++基础的同学阅读。

与其说书本内容非常有价值,不如说pbrt项目代码更有含金量,而书籍只是此项目的文档或者手册。建议大家阅读此书时,以阅读代码为主,书籍为辅。

另外,我Fork了此仓库,目前在不断添加中文注释,而源代码以及其他部分与源仓库保持一致。英文不好的同学可以关注此仓库:

moranzcw/pbrt-v3​github.com
141f36c6532d3fb255b44d8480f93fcc.png

最后放两张官方渲染图:

c760fb87f63f17afc1444a99856cfecb.png
Modern bathroom scene, modeled by 'nacimus', who made this scene available on BlendSwap under a CC-BY license.

342adb3221f8d9187856c25beb4805f9.png
Model of van der Rohe's classic Barcelona Pavilion. In this variant, all illumination comes from a realistic sky model encoded in an HDR environment map. Thanks to Hamza Cheggour who made this scene available under a CC-BY license.

《Unity Shader 入门精要》

a49dea6742d6d14f8c0618fd9736e371.png

大部分人的实时渲染入门书应该是学校发的图形学教材,或者是RTR3,或者是《3D游戏编程大师技巧》等等比较常见的图形学书籍。

我是这本《Unity Shader入门精要》。。。可以说是路子很野了。

当然Shader并不代表实时渲染。大概去年一时心血来潮,想自己编写着色器,实现一些效果。于是就开始看这本书,但要写着色器,至少要懂GPU渲染管线吧。此书在开头花了不少篇幅讲解渲染管线,数学,着色语言等等。让学习难度骤降,这着实是一本好书。只需要有基本的Unity使用经验,就可以开始学习了。

The Nature of Code

中文名:《代码本色》

525d297c1411da14e63ea9e05f80a0af.png

中英文版目前都有。

对于开发者来说,这书更像是“甜品“,从封面就体现出一股文艺气息。

本书使用Processing作为编程语言,编写了一些很有趣的动画,物理效果。比如烟雾,烟花,刚体碰撞,简单的自治智能体模拟。

说它是物理引擎教程吧,不对,因为内容偏简单了,说它是动画设计教程吧,也不准确。

总之是一个很有意思的书籍,很适合没有游戏物理开发经验的人看一看。

另外,此书也很适合设计,策划相关人士阅读,Processing本质上就是为不懂编程的艺术家设计的开发环境,用于实现一些动画和物理效果的Demo。

Game Physics Engine Development

中文名:《游戏物理引擎开发》

f2d5d0c8d1f476a199d73d8af19d2d7b.png

此书目前有中文版。

这是一本比较早的物理引起入门书籍了,主要讲解了用粒子,质量集合体,刚体模拟物体运动,以及物理引擎最重要的碰撞检测和接触行为。

通读下来,觉得很适合作为游戏物理的入门书籍,当然本书只涉及刚体动力学,更高级的物理引擎,如流体模拟就不涉及了。刚体物理引擎是大部分游戏引擎都会支持的物理系统,理解刚体物理可以在游戏中开发出更健壮的物理逻辑。(比如,Unity的网格碰撞器和盒碰撞器有什么区别?怎么更好的规避穿透?)

本书也使用C++实现了一个物理引擎cyclone,值得一读。

idmillington/cyclone-physics​github.com
e767fe9eec97abcd86155fe164b64a6d.png

虽然代码比较古老(约9年前),但是还是可以build的,我在macOS mojave上可以成功运行,Windows应该问题不大。

项目没有第三方依赖,纯C++。当然在演示引擎效果的demo里使用了OpenGL画界面。

Game Engine Architecture

中文名《游戏引擎架构》

557a4bb6b6feabdae5433f2309b2d459.png
没理由看英文版了,翻译质量非常高

这里要吹一波翻译 @Milo Yip ,在书里写了非常多的技术注释,可以看出译者非常喜欢这本书。

如果站在一个游戏引擎开发者的视角看,这本书其实应该算游戏引擎的“科普”。全书虽然800多页,但并没有什么代码,即使有也是类似伪代码,以讲述逻辑为主。

对于许多游戏开发者来说,游戏引擎像是一个黑盒子,只知道引擎里有很多东西,脚本引擎,渲染引擎,物理和动画引擎,资源管理,AI,调试工具。但开发者很少知道这些东西以什么样的方式组织起来。

第一部分是基础,包括数学(线性代数),语言(C/C++)和工具(版本控制,IDE,调试器等),几乎任何一本图形学相关书籍都会覆盖到的内容,这里就不详细讲了。

第二部分是低层次系统,这里关注操作系统可以为我们提供什么资源和工具,例如文件系统和资源管理,输入输出,内存管理,基本容器等,把它们组织起来,服务于真正的上层游戏引擎。

第三部分是游戏引擎最重要的部分,即渲染引擎,物理引擎和动画系统。它们直接关系到游戏引擎所能实现游戏效果的上界。因为这部分非常强调性能,几乎所有引擎都采用C/C++实现。

第四部分将游戏性,如果更具体一点,就是脚本引擎,在游戏逻辑编程方面,引擎往往提供一种简单的脚本语言,这样可以提高引擎的易用性,降低开发者的心智负担。例如Unity以C#组为编程语言(当然C#不是脚本语言,但C#非常易用),Cocos-2dx以Lua脚本语言作为开发语言。

非常感慨此书作者涉猎之广,不愧是3A游戏开发者。

《3D游戏与计算机图形学中的数学方法》

f9bd6ee9158f8c4e9f784b07faf26194.png

几乎任何一本图形学或游戏开发书籍,在最开始的章节,都会讲解基本线性代数作为铺垫,如果是离线渲染,可能还会讲一些概率论。

这本书把离线渲染,实时渲染,游戏物理所需要的基础数学知识,基本都覆盖到了。

如果不打算一口气读完,放在手边作为速查手册,也是极好的。

《游戏设计梦工厂》

3c52b7c1caf3ffe9e2de3b0fe7b0c265.png

这是一本写给游戏策划和设计师的书,作为开发,应该是不需要去读这类书的。

但是作为独立游戏爱好者,基本的设计意识还是要有,系统了解游戏设计还是有必要的,以免变成设计“民科”而不自知。

这是一本游戏设计入门书,在这个人人都是游戏玩家的时代,这本书的许多内容看起来非常的“理所当然”,不过此书很系统的讲述的游戏策划工作是什么,算是“科普”类型的书籍之一。

而游戏设计方面,它讲述了一些思考方法和分析方法,但并没有太多让人眼前一亮的时刻,也许是我没有发现书中的宝藏。

本书值得一看的另一个理由就是,每章后面都有了两篇知名游戏设计师的访谈,其中包括风之旅人的作者陈星汉的访谈,陈星汉也为此书中文版作序。

其他项目or教程

smallpt: Global Illumination in 99 lines of C++

03912130004404f0b8a5f1ef46fc3e04.png

官网地址:

smallpt: Global Illumination in 99 lines of C++​kevinbeason.com
47475105a1f4990ddcc6bd8607f87753.png

99行C++实现的光线追踪渲染器。

它的功能与本文开头介绍的 Ray Tracing in One Weekend 非常接近,都实现了漫反射,玻璃和金属材质。

虽然代码较短,但不是特别好读,这属于大神秀操作,看着玩玩就可以了,不建议新手用这个入门。

box2d-lite

项目地址:

erincatto/box2d-lite​github.com
0c34ebaa30ef9a4b49e27a123d7454f8.png

box2d是非常著名的2d物理引擎,C++实现。愤怒的小鸟,蜡笔物理学和鳄鱼小顽皮爱洗澡采用了这款引擎。

box2d-lite是作者另外编写的一个非常轻量的版本,只有几百行C++,相比box2d易读不少。刚体碰撞,摩擦,该有的都有,可以结合《游戏物理引擎开发》学习,值得一读。

cd25cb569d840569156a39e6c4a1f601.png
box2d-lite效果演示https://www.zhihu.com/video/1112188159269502976

TANKS!

05d22f52d5cbd593df7d34a8672d333e.png

教程地址:

Tanks - Unity Learn​learn.unity.com
b9887f68bb4802e03c40f3e88d42fb85.png

最近一直找Unity教程,发现中文书籍质量都不怎么样(至少电商网站上销量靠前的几本书风评都一般),除了本文推荐的《Unity Shader入门精要》。

于是就找Unity官网资源。官方文档就不说了,必须会查的东西。然后我不知道Unity官方是出于引擎闭源,不能泄漏实现细节,还是想吸引非技术出身的开发者的考虑,Unity官网的视频教程好像都不怎么强调编程。

这个TANKS教程还算难度适中,而且主讲人逻辑清晰,PPT做得很好,推荐一波。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值