有人知道Js四维胎儿面部有肉东西面部提升吗?效果咋样?

&h2&应该先学哪一门编程语言?&/h2&&p&图源:&a href=&//link.zhihu.com/?target=http%3A//carlcheo.com/startcoding& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CarlCheo.com&/a&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-3df86ec3c1f556c7efae96_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1432& data-rawheight=&782& data-default-watermark-src=&https://pic4.zhimg.com/50/v2-ae09e5f3a51e1a9e1bed_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1432& data-original=&https://pic4.zhimg.com/50/v2-3df86ec3c1f556c7efae96_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=https%3A//www.tiobe.com/tiobe-index/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TIOBE Index:编程语言每月热度排名&/a&&/p&&h2&九种编程语言简介&/h2&&p&图源:&a href=&//link.zhihu.com/?target=https%3A//makeawebsitehub.com/which-programming-language/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&makeawebsitehub.com&/a&&/p&&p&翻译:&a href=&//link.zhihu.com/?target=https%3A//mp.weixin.qq.com/s%3F__biz%3DMjM5MDE0Mjc4MA%3D%3D%26mid%3D%26idx%3D1%26sn%3De3bdddd929e%26scene%3D27%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&极客邦&/a&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-b125bddb044ea29ccc84a54bbd679e37_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&1813& data-default-watermark-src=&https://pic1.zhimg.com/50/v2-5e4d8cd42eb90dbad8390_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/50/v2-b125bddb044ea29ccc84a54bbd679e37_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/50/v2-8b3b2aa09da461fbc59fd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&1829& data-default-watermark-src=&https://pic2.zhimg.com/50/v2-2fcd1f2c7aecca1c7dc6b53cc07c9b97_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/50/v2-8b3b2aa09da461fbc59fd_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/50/v2-edb1c422e3a7b0a900a01_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&1678& data-default-watermark-src=&https://pic4.zhimg.com/50/v2-206ba9be3f6a6aa2c52bc9e7da1171df_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/50/v2-edb1c422e3a7b0a900a01_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/50/v2-517c42e4bcd308f6c7c4d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&1807& data-default-watermark-src=&https://pic3.zhimg.com/50/v2-f29881cfb20c995e3c50cd4d01c8eacd_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/50/v2-517c42e4bcd308f6c7c4d_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/50/v2-df9aebf5e56f6f5e23104_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&2016& data-default-watermark-src=&https://pic1.zhimg.com/50/v2-31b4cdce228d_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/50/v2-df9aebf5e56f6f5e23104_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/50/v2-b58cceb7a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&1963& data-default-watermark-src=&https://pic3.zhimg.com/50/v2-e5a8e6dc5_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/50/v2-b58cceb7a_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/50/v2-ea298acc2f131a2eb9f3a2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&2257& data-default-watermark-src=&https://pic3.zhimg.com/50/v2-566b634ee6299dcda8e11_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/50/v2-ea298acc2f131a2eb9f3a2_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/50/v2-a0abcbf33e4fcb72e1c5782cab04fb86_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&1774& data-default-watermark-src=&https://pic4.zhimg.com/50/v2-d8bf86e05ca09c5ba4c54_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/50/v2-a0abcbf33e4fcb72e1c5782cab04fb86_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/50/v2-a2df89c2a62fe3bf7cf8b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&2059& data-default-watermark-src=&https://pic4.zhimg.com/50/v2-d5bff49dff21c3ff95eb79_b.jpg& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/50/v2-a2df89c2a62fe3bf7cf8b_r.jpg&&&/figure&&h2&知识结构图&/h2&&p&图源:&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/bases& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CSDN知识库&/a&&/p&&p&&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/base/c/structure& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&C知识结构&/a&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-fb848f77f0de33a08d71_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&980& data-rawheight=&742& class=&origin_image zh-lightbox-thumb& width=&980& data-original=&https://pic4.zhimg.com/50/v2-fb848f77f0de33a08d71_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/base/cplusplus/structure& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&C++知识结构&/a&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-0f5d2dc94bf06fc0d340b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&980& data-rawheight=&742& class=&origin_image zh-lightbox-thumb& width=&980& data-original=&https://pic2.zhimg.com/50/v2-0f5d2dc94bf06fc0d340b_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/base/csharp/structure& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&C#知识结构&/a&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-fbfca4032584feac30e02f2a91e1ad09_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&980& data-rawheight=&742& class=&origin_image zh-lightbox-thumb& width=&980& data-original=&https://pic2.zhimg.com/50/v2-fbfca4032584feac30e02f2a91e1ad09_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/base/java/structure& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java知识结构&/a&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-347a8f6b3ed0887395dcff84eb0e6bd1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1532& data-rawheight=&1410& class=&origin_image zh-lightbox-thumb& width=&1532& data-original=&https://pic4.zhimg.com/50/v2-347a8f6b3ed0887395dcff84eb0e6bd1_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/base/javaee/structure& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JavaEE知识结构&/a&&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-465ebdff8f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&980& data-rawheight=&1426& class=&origin_image zh-lightbox-thumb& width=&980& data-original=&https://pic1.zhimg.com/50/v2-465ebdff8f_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/base/javase/structure& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JavaSE知识结构&/a&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-ab9f970de8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&980& data-rawheight=&741& class=&origin_image zh-lightbox-thumb& width=&980& data-original=&https://pic3.zhimg.com/50/v2-ab9f970de8_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/base/javascript/structure& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JavaScript知识结构&/a&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-bdd88ae708bbcb76938b93_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&980& data-rawheight=&741& class=&origin_image zh-lightbox-thumb& width=&980& data-original=&https://pic3.zhimg.com/50/v2-bdd88ae708bbcb76938b93_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/base/go/structure& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Golang知识结构&/a&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-693e90feafddc2b75af4fb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&980& data-rawheight=&1914& class=&origin_image zh-lightbox-thumb& width=&980& data-original=&https://pic3.zhimg.com/50/v2-693e90feafddc2b75af4fb_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/base/php/structure& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PHP知识结构&/a&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-9bd5e3f8812efedec338f5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&980& data-rawheight=&978& class=&origin_image zh-lightbox-thumb& width=&980& data-original=&https://pic4.zhimg.com/50/v2-9bd5e3f8812efedec338f5_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/base/python/structure& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python知识结构&/a&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-40d4fed4a12aa2b9e6f05f6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&980& data-rawheight=&762& class=&origin_image zh-lightbox-thumb& width=&980& data-original=&https://pic3.zhimg.com/50/v2-40d4fed4a12aa2b9e6f05f6_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/base/swift/structure& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Swift知识结构&/a&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-811bed03f3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&980& data-rawheight=&742& class=&origin_image zh-lightbox-thumb& width=&980& data-original=&https://pic4.zhimg.com/50/v2-811bed03f3_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=http%3A//lib.csdn.net/base/scala/structure& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Scala知识结构&/a&&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-c3ea993c53e5b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&980& data-rawheight=&742& class=&origin_image zh-lightbox-thumb& width=&980& data-original=&https://pic1.zhimg.com/50/v2-c3ea993c53e5b_r.jpg&&&/figure&&h2&语言宗教&/h2&&figure&&img src=&https://pic2.zhimg.com/50/v2-ea8677a4ccceeb88b3a9f6a6100668bd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&547& data-rawheight=&478& data-default-watermark-src=&https://pic4.zhimg.com/50/v2-028fe9a0193dfd5f93f4b303dd2dc6ab_b.jpg& class=&origin_image zh-lightbox-thumb& width=&547& data-original=&https://pic2.zhimg.com/50/v2-ea8677a4ccceeb88b3a9f6a6100668bd_r.jpg&&&/figure&
应该先学哪一门编程语言?图源:九种编程语言简介图源:翻译:知识结构图图源:
&figure&&img src=&https://pic4.zhimg.com/v2-c3fc948b9_b.jpg& data-rawwidth=&900& data-rawheight=&471& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&https://pic4.zhimg.com/v2-c3fc948b9_r.jpg&&&/figure&&p&在我刚开始学习 Kubernetes(大约是一年半以前吧?)时,我真的不明白为什么应该去关注它。&/p&&p&在我使用 Kubernetes 全职工作了三个多月后,我才逐渐明白了为什么我应该使用它。(我距离成为一个 Kubernetes 专家还很远!)希望这篇文章对你理解 Kubernetes 能做什么会有帮助!&/p&&p&我将尝试去解释我对 Kubernetes 感兴趣的一些原因,而不去使用 “原生云(&i&cloud native)&/i&”、“编排系统(&i&orchestration)&/i&”、“容器(&i&container)&/i&”,或者任何 Kubernetes 专用的术语 :)。我去解释的这些观点主要来自一位 Kubernetes 操作者/基础设施工程师,因为,我现在的工作就是去配置 Kubernetes 和让它工作的更好。&/p&&p&我不会去尝试解决一些如 “你应该在你的生产系统中使用 Kubernetes 吗?”这样的问题。那是非常复杂的问题。(不仅是因为“生产系统”根据你的用途而总是有不同的要求)&/p&&h2&&b&Kubernetes 可以让你无需设置一台新的服务器即可在生产系统中运行代码&/b&&/h2&&p&我首次被说教使用 Kubernetes 是与我的伙伴 Kamal 的下面的谈话:&/p&&p&大致是这样的:&/p&&ul&&li&Kamal: 使用 Kubernetes 你可以通过一条命令就能设置一台新的服务器。&/li&&li&Julia: 我觉得不太可能吧。&/li&&li&Kamal: 像这样,你写一个配置文件,然后应用它,这时候,你就在生产系统中运行了一个 HTTP 服务。&/li&&li&Julia: 但是,现在我需要去创建一个新的 AWS 实例,明确地写一个 Puppet 清单,设置服务发现,配置负载均衡,配置我们的部署软件,并且确保 DNS 正常工作,如果没有什么问题的话,至少在 4 小时后才能投入使用。&/li&&li&Kamal: 是的,使用 Kubernetes 你不需要做那么多事情,你可以在 5 分钟内设置一台新的 HTTP 服务,并且它将自动运行。只要你的集群中有空闲的资源它就能正常工作!&/li&&li&Julia: 这儿一定是一个“坑”。&/li&&/ul&&p&这里有一种陷阱,设置一个生产用 Kubernetes 集群(在我的经险中)确实并不容易。(查看 &a href=&https://link.zhihu.com/?target=https%3A//github.com/kelseyhightower/kubernetes-the-hard-way& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Kubernetes 艰难之旅&/a& 中去开始使用时有哪些复杂的东西)但是,我们现在并不深入讨论它。&/p&&p&因此,Kubernetes 第一个很酷的事情是,它可能使那些想在生产系统中部署新开发的软件的方式变得更容易。那是很酷的事,而且它真的是这样,因此,一旦你使用一个运作中的 Kubernetes 集群,你真的可以仅使用一个配置文件就在生产系统中设置一台 HTTP 服务(在 5 分钟内运行这个应用程序,设置一个负载均衡,给它一个 DNS 名字,等等)。看起来真的很有趣。&/p&&h2&&b&对于运行在生产系统中的代码,Kubernetes 可以提供更好的可见性和可管理性&/b&&/h2&&p&在我看来,在理解 etcd 之前,你可能不会理解 Kubernetes 的。因此,让我们先讨论 etcd!&/p&&p&想像一下,如果现在我这样问你,“告诉我你运行在生产系统中的每个应用程序,它运行在哪台主机上?它是否状态很好?是否为它分配了一个 DNS 名字?”我并不知道这些,但是,我可能需要到很多不同的地方去查询来回答这些问题,并且,我需要花很长的时间才能搞定。我现在可以很确定地说不需要查询,仅一个 API 就可以搞定它们。&/p&&p&在 Kubernetes 中,你的集群的所有状态 – 运行中的应用程序 (“pod”)、节点、DNS 名字、 cron 任务、 等等 —— 都保存在一个单一的数据库中(etcd)。每个 Kubernetes 组件是无状态的,并且基本是通过下列方式工作的:&/p&&ul&&li&从 etcd 中读取状态(比如,“分配给节点 1 的 pod 列表”)&/li&&li&产生变化(比如,“在节点 1 上运行 pod A”)&/li&&li&更新 etcd 中的状态(比如,“设置 pod A 的状态为 ‘running’”)&/li&&/ul&&p&这意味着,如果你想去回答诸如 “在那个可用区中有多少台运行着 nginx 的 pod?” 这样的问题时,你可以通过查询一个统一的 API(Kubernetes API)去回答它。并且,你可以在每个其它 Kubernetes 组件上运行那个 API 去进行同样的访问。&/p&&p&这也意味着,你可以很容易地去管理每个运行在 Kubernetes 中的任何东西。比如说,如果你想要:&/p&&ul&&li&部署实现一个复杂的定制的部署策略(部署一个东西,等待 2 分钟,部署 5 个以上,等待 3.7 分钟,等等)&/li&&li&每当推送到 github 上一个分支,自动化 &a href=&https://link.zhihu.com/?target=https%3A//github.com/kamalmarhubi/kubereview& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&启动一个新的 web 服务器&/a&&/li&&li&监视所有你的运行的应用程序,确保它们有一个合理的内存使用限制。&/li&&/ul&&p&这些你只需要写一个程序与 Kubernetes API(“controller”)通讯就可以了。&/p&&p&另一个关于 Kubernetes API 的令人激动的事情是,你不会局限于 Kubernetes 所提供的现有功能!如果对于你要部署/创建/监视的软件有你自己的方案,那么,你可以使用 Kubernetes API 去写一些代码去达到你的目的!它可以让你做到你想做的任何事情。&/p&&h2&&b&即便每个 Kubernetes 组件都“挂了”,你的代码将仍然保持运行&/b&&/h2&&p&关于 Kubernetes 我(在各种博客文章中 :))承诺的一件事情是,“如果 Kubernetes API 服务和其它组件‘挂了’也没事,你的代码将一直保持运行状态”。我认为理论上这听起来很酷,但是我不确定它是否真是这样的。&/p&&p&到目前为止,这似乎是真的!&/p&&p&我已经断开了一些正在运行的 etcd,发生了这些情况:&/p&&ol&&li&所有的代码继续保持运行状态&/li&&li&不能做 &i&新的&/i& 事情(你不能部署新的代码或者生成变更,cron 作业将停止工作)&/li&&li&当它恢复时,集群将赶上这期间它错过的内容&/li&&/ol&&p&这样做意味着如果 etcd 宕掉,并且你的应用程序的其中之一崩溃或者发生其它事情,在 etcd 恢复之前,它不能够恢复。&/p&&h2&&b&Kubernetes 的设计对 bug 很有弹性&/b&&/h2&&p&与任何软件一样,Kubernetes 也会有 bug。例如,到目前为止,我们的集群控制管理器有内存泄漏,并且,调度器经常崩溃。bug 当然不好,但是,我发现 Kubernetes 的设计可以帮助减轻它的许多核心组件中的错误的影响。&/p&&p&如果你重启动任何组件,将会发生:&/p&&ul&&li&从 etcd 中读取所有的与它相关的状态&/li&&li&基于那些状态(调度 pod、回收完成的 pod、调度 cron 作业、按需部署等等),它会去做那些它认为必须要做的事情&/li&&/ul&&p&因为,所有的组件并不会在内存中保持状态,你在任何时候都可以重启它们,这可以帮助你减轻各种 bug 的影响。&/p&&p&例如,如果在你的控制管理器中有内存泄露。因为,控制管理器是无状态的,你可以每小时定期去重启它,或者,在感觉到可能导致任何不一致的问题发生时重启它。又或者,在调度器中遇到了一个 bug,它有时忘记了某个 pod,从来不去调度它们。你可以每隔 10 分钟来重启调度器来缓减这种情况。(我们并不会这么做,而是去修复这个 bug,但是,你&i&可以这样做&/i& :))&/p&&p&因此,我觉得即使在它的核心组件中有 bug,我仍然可以信任 Kubernetes 的设计可以让我确保集群状态的一致性。并且,总在来说,随着时间的推移软件质量会提高。唯一你必须去操作的有状态的东西就是 etcd。&/p&&p&不用过多地讨论“状态”这个东西 —— 而我认为在 Kubernetes 中很酷的一件事情是,唯一需要去做备份/恢复计划的东西是 etcd (除非为你的 pod 使用了持久化存储的卷)。我认为这样可以使 Kubernetes 运维比你想的更容易一些。&/p&&h2&&b&在 Kubernetes 之上实现新的分布式系统是非常容易的&/b&&/h2&&p&假设你想去实现一个分布式 cron 作业调度系统!从零开始做工作量非常大。但是,在 Kubernetes 里面实现一个分布式 cron 作业调度系统是非常容易的!(仍然没那么简单,毕竟它是一个分布式系统)&/p&&p&我第一次读到 Kubernetes 的 cron 作业控制器的代码时,我对它是如此的简单感到由衷高兴。去读读看,其主要的逻辑大约是 400 行的 Go 代码。去读它吧! =& &a href=&https://link.zhihu.com/?target=https%3A//github.com/kubernetes/kubernetes/blob/ec089aab6fca64bc09ae/pkg/controller/cronjob/cronjob_controller.go& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&cronjob_controller.go&/a& &=&/p&&p&cron 作业控制器基本上做的是:&/p&&ul&&li&每 10 秒钟:&/li&&ul&&li&列出所有已存在的 cron 作业&/li&&li&检查是否有需要现在去运行的任务&/li&&li&如果有,创建一个新的作业对象去调度,并通过其它的 Kubernetes 控制器实际运行它&/li&&li&清理已完成的作业&/li&&li&重复以上工作&/li&&/ul&&/ul&&p&&br&&/p&&p&Kubernetes 模型是很受限制的(它有定义在 etcd 中的资源模式,控制器读取这个资源并更新 etcd),我认为这种相关的固有的/受限制的模型,可以使它更容易地在 Kubernetes 框架中开发你自己的分布式系统。&/p&&p&Kamal 给我说的是 “Kubernetes 是一个写你自己的分布式系统的很好的平台” ,而不是“ Kubernetes 是一个你可以使用的分布式系统”,并且,我觉得它真的很有意思。他做了一个 &a href=&https://link.zhihu.com/?target=https%3A//github.com/kamalmarhubi/kubereview& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&为你推送到 GitHub 的每个分支运行一个 HTTP 服务的系统&/a& 的原型。这花了他一个周末的时间,大约 800 行 Go 代码,我认为它真不可思议!&/p&&h2&&b&Kubernetes 可以使你做一些非常神奇的事情(但并不容易)&/b&&/h2&&p&我一开始就说 “kubernetes 可以让你做一些很神奇的事情,你可以用一个配置文件来做这么多的基础设施,它太神奇了”。这是真的!&/p&&p&为什么说 “Kubernetes 并不容易”呢?是因为 Kubernetes 有很多部分,学习怎么去成功地运营一个高可用的 Kubernetes 集群要做很多的工作。就像我发现它给我了许多抽象的东西,我需要去理解这些抽象的东西才能调试问题和正确地配置它们。我喜欢学习新东西,因此,它并不会使我发狂或者生气,但是我认为了解这一点很重要 :)&/p&&p&对于 “我不能仅依靠抽象概念” 的一个具体的例子是,我努力学习了许多 &a href=&https://link.zhihu.com/?target=https%3A//jvns.ca/blog//container-networking/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linux 上网络是如何工作的&/a&,才让我对设置 Kubernetes 网络稍有信心,这比我以前学过的关于网络的知识要多很多。这种方式很有意思但是非常费时间。在以后的某个时间,我或许写更多的关于设置 Kubernetes 网络的困难/有趣的事情。&/p&&p&或者,为了成功设置我的 Kubernetes CA,我写了一篇 &a href=&https://link.zhihu.com/?target=https%3A//jvns.ca/blog//how-kubernetes-certificates-work/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2000 字的博客文章&/a&,述及了我不得不学习 Kubernetes 不同方式的 CA 的各种细节。&/p&&p&我觉得,像 GKE (Google 的 Kubernetes 产品) 这样的一些监管的 Kubernetes 的系统可能更简单,因为,他们为你做了许多的决定,但是,我没有尝试过它们。&/p&&hr&&p&via: &a href=&https://link.zhihu.com/?target=https%3A//jvns.ca/blog//reasons-kubernetes-is-cool/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&jvns.ca/blog/&/span&&span class=&invisible&&/reasons-kubernetes-is-cool/&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&作者:&a href=&https://link.zhihu.com/?target=https%3A//jvns.ca/about& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Julia Evans&/a& 译者:&a href=&https://link.zhihu.com/?target=https%3A//github.com/qhwdw& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&qhwdw&/a& 校对:&a href=&https://link.zhihu.com/?target=https%3A//github.com/wxy& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&wxy&/a&&/p&&p&本文由 &a href=&https://link.zhihu.com/?target=https%3A//github.com/LCTT/TranslateProject& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LCTT&/a& 原创编译,&a href=&https://link.zhihu.com/?target=https%3A//linux.cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Linux中国&/a& 荣誉推出&/p&
在我刚开始学习 Kubernetes(大约是一年半以前吧?)时,我真的不明白为什么应该去关注它。在我使用 Kubernetes 全职工作了三个多月后,我才逐渐明白了为什么我应该使用它。(我距离成为一个 Kubernetes 专家还很远!)希望这篇文章对你理解 Kubernetes 能…
&figure&&img src=&https://pic3.zhimg.com/v2-e8126dbe267aeb_b.jpg& data-rawwidth=&2816& data-rawheight=&1437& class=&origin_image zh-lightbox-thumb& width=&2816& data-original=&https://pic3.zhimg.com/v2-e8126dbe267aeb_r.jpg&&&/figure&&p&&/p&&h2&&b&系列文章前言&/b&&/h2&&p&&br&&/p&&p&《GPU Gems》1~3 、《GPU Pro》1~7 以及《GPU Zen》组成的GPU精粹系列书籍,是游戏开发、计算机图形学和渲染领域的业界大牛们优秀经验的分享合辑汇编,是江湖各大武林门派绝学经典招式的精华荟萃,可谓游戏开发、图形学和渲染领域进阶知识精彩绝伦的饕餮盛宴。&/p&&p&&br&&/p&&p&这个系列书籍中所收录的文章不仅有奥斯卡特效大奖得主的成名之作,还有工业光魔等业界前沿的特效工作室带来的精彩分享,各种著名的游戏工作室、知名游戏引擎一线开发人员的肺腑之言,以及各式图形学大牛的经验之谈,可谓字字珠玑,干货无数。&/p&&p&&br&&/p&&p&而因为出版风格的相似性,都是出版当代前沿的图形学文章精粹的合辑汇编,我们可以将《GPU Gems》1~3 、《GPU Pro》1~7 以及《GPU Zen》组成的GPU系列书籍,目前共11本书,合称为“GPU精粹三部曲“。&/p&&p&&br&&/p&&p&可以毫不夸张地说,“GPU精粹三部曲“这11本书,是图形学和渲染爱好者站在巨人的肩膀上,了解图形学业界各种高阶知识和技法Trick,将自己的图形学与渲染能力进阶提升到下一个高度的捷径之一&i&。&/i&&/p&&p&&br&&/p&&p&而如果你要造轮子,自己开发3D引擎,书中的不少Trick,前人踩坑的经验总结,也会对你有帮助。&/p&&p&&br&&/p&&p&我们可以用一张图来了解“GPU精粹三部曲”目前11本书的面世顺序。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-570c74c9f1a845f7042461dfa3000da5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1790& data-rawheight=&2665& class=&origin_image zh-lightbox-thumb& width=&1790& data-original=&https://pic2.zhimg.com/v2-570c74c9f1a845f7042461dfa3000da5_r.jpg&&&/figure&&p&图 GPU精粹三部曲&/p&&p&&br&&/p&&p&有趣的是,虽说是三部曲,但其中的每一部,分别由不同的出版社出版: &/p&&ul&&li&Addison-Wesley出版社的《GPU Gems 1~3》 &/li&&li&CRC Press出版社的《GPU Pro 1~7》 &/li&&li&Black Cat Publishing出版社的《GPU Zen》 &/li&&/ul&&p&&br&&/p&&p&另外值得注意的是,这三部曲其中仅有《GPU Gems 1~3》有中文版,对应为人民邮电出版社出版的《GPU精粹1》,清华大学出版社出版的《GPU精粹2~3》。&/p&&p&&br&&/p&&p&总之,“GPU精粹三部曲”是图形学进阶学习的大宝藏,是图形学和渲染领域进阶知识的饕餮盛宴。如果你希望进阶地学习图形学、渲染以及Shader编程,仔细研读,认真实践,一定会受益匪浅。&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&系列文章写作风格说明&/b&&/h2&&p&&br&&/p&&p&这个系列,会总结和提炼“GPU精粹三部曲”11本书中总计200+篇关于游戏开发与渲染的核心内容,暂定每篇文章提炼“GPU精粹三部曲”中一本书的核心内容。&/p&&p&&br&&/p&&p&暂定对每本书中每章的提炼字数控制在500字以内,而每篇文章,将由20章左右的内容组成。具体的章节分布,可以在下文的核心内容列表一览中看到。&/p&&p&&br&&/p&&p&也因为是每篇文章需要提炼一整本书的内容,篇幅有限,只能是抓住重点和核心内容去总结,无法做到事无巨细,每章都交代足够的细节。如果你通过阅读这个系列文章,发现有些章节你很感兴趣,便可以找到原书中对应的原章节,进行进一步详细了解和研究。&/p&&p&&br&&/p&&p&而写作顺序方面,自然是按照书籍的出版时间正序进行,即第一篇正式文章,提炼总结《GPU&br&Gems 1》的内容,最后一篇正式文章,提炼《GPU Zen》的内容。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&关于GPU精粹三部曲的有用链接&/b&&/h2&&p&&br&&/p&&ul&&li&《GPU Gem》1~3 的英文原文web版,已经由NVIDIA开源,链接在这里:&a href=&http://link.zhihu.com/?target=https%3A//developer.nvidia.com/gpugems/GPUGems/gpugems_pref01.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&developer.nvidia.com/gp&/span&&span class=&invisible&&ugems/GPUGems/gpugems_pref01.html&/span&&span class=&ellipsis&&&/span&&/a&&/li&&li&《GPU Pro》 1~7和《GPU Zen》等8本书的主编都是图形大牛 Wolfgang Engel。这边是Wolfgang Engel的博客主页:&a href=&http://link.zhihu.com/?target=https%3A//www.blogger.com/profile/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&blogger.com/profile/110&/span&&span class=&invisible&&97662&/span&&span class=&ellipsis&&&/span&&/a&&/li&&li&以及Wolfgang Engel维护的《GPU Pro》系列书籍的博客地址:&a href=&http://link.zhihu.com/?target=http%3A//gpupro.blogspot.com/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&gpupro.blogspot.com/&/span&&span class=&invisible&&&/span&&/a&&/li&&li&还有Wolfgang Engel维护的《GPU Zen》系列书籍的博客地址:&a href=&http://link.zhihu.com/?target=https%3A//gpuzen.blogspot.com/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&gpuzen.blogspot.com/&/span&&span class=&invisible&&&/span&&/a&&/li&&/ul&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&GPU精粹全系列核心内容列表一览&/b&&/h2&&p&&br&&/p&&p&前文已经提到,“GPU精粹三部曲”全系列共11本书,具体列举如下:&/p&&ul&&li&GPU Gems 1 [2004]&/li&&li&GPU Gems 2 [2005]&/li&&li&GPU Gems 3 [2006]&/li&&li&GPU Pro 1 [2010]&/li&&li&GPU Pro 2 [2011]&/li&&li&GPU Pro 3 [2012]&/li&&li&GPU Pro 4 [2013]&/li&&li&GPU Pro 5 [2014]&/li&&li&GPU Pro 6 [2015]&/li&&li&GPU Pro 7 [2016]&/li&&li&GPU Zen [2017]&/li&&/ul&&p&以下对每本书的核心章节分别进行目录式列举。&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&一、第一本书《GPU Gems 1(GPU精粹1)》&/b&&/h2&&figure&&img src=&https://pic1.zhimg.com/v2-acb3b843c545ef8ea86ea2fc_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&461& data-rawheight=&648& class=&origin_image zh-lightbox-thumb& width=&461& data-original=&https://pic1.zhimg.com/v2-acb3b843c545ef8ea86ea2fc_r.jpg&&&/figure&&p&&br&&/p&&h2&1.1 第一部分 自然效果的渲染(Natural Effects)&/h2&&p&第1章 用物理模型进行高效的水模拟(Effective Water Simulation from Physical Models)&/p&&p&第2章 水焦散的渲染(Rendering Water Caustics)&/p&&p&第3章 Dawn Demo中的皮肤(Skin in the &Dawn& Demo)&/p&&p&第4章 Dawn Demo中的动画(Animation in the &Dawn& Demo)&/p&&p&第5章 改良的Perlin噪声实现(Implementing Improved Perlin Noise)&/p&&p&第6章 Vulcan Demo中的火焰渲染(Fire in the &Vulcan& Demo)&/p&&p&第7章 无尽波动草叶的渲染(Rendering Countless Blades of Waving Grass)&/p&&p&第8章 衍射的模拟(Simulating Diffraction)&/p&&p&&br&&/p&&h2&1.2 第二部分 光照和阴影(Lighting and Shadows)&/h2&&p&第9章 有效的阴影体渲染(Efficient Shadow Volume Rendering)&/p&&p&第10章 电影级光照(Cinematic Lighting)&/p&&p&第11章 阴影贴图抗锯齿(Shadow Map Antialiasing)&/p&&p&第12章 全方位阴影映射(Omnidirectional Shadow Mapping)&/p&&p&第13章 使用遮挡区间映射产生模糊的阴影(Generating Soft Shadows Using Occlusion Interval Maps)&/p&&p&第14章 透视阴影贴图(Perspective Shadow Maps: Care and Feeding)&/p&&p&第15章 逐像素光照的可见性管理(Managing Visibility for Per-Pixel Lighting)&/p&&p&&br&&/p&&h2&1.3 第三部分 材质(Materials)&/h2&&p&第16章 次表面散射的实时近似(Real-Time Approximations to Subsurface Scattering)&/p&&p&第17章 环境光遮蔽(Ambient Occlusion)&/p&&p&第18章 空间BRDF(Spatial BRDFs)&/p&&p&第19章 基于图像的光照(Image-Based Lighting)&/p&&p&第20章 纹理爆炸(Texture Bombing)&/p&&p&&br&&/p&&h2&1.4 第四部分 图像处理(Image Processing)&/h2&&p&第21章 实时辉光(Real-Time Glow)&/p&&p&第22章 颜色控制(Color Controls)&/p&&p&第23章 景深 (Depth of Field)&/p&&p&第24章 高品质的图像滤波(High-Quality Filtering)&/p&&p&第25章 用纹理贴图进行快速滤波宽度的计算(Fast Filter-Width Estimates with Texture Maps)&/p&&p&第26章 OpenEXR图像文件格式(The OpenEXR Image File Format)&/p&&p&第27章 图像处理的框架(A Framework for Image Processing)&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&二、第二本书《GPU Gems 2(GPU精粹2)》&/b&&/h2&&figure&&img src=&https://pic1.zhimg.com/v2-16c887e380ae6a7a93d0dec1ddf15d84_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&468& data-rawheight=&645& class=&origin_image zh-lightbox-thumb& width=&468& data-original=&https://pic1.zhimg.com/v2-16c887e380ae6a7a93d0dec1ddf15d84_r.jpg&&&/figure&&p&&br&&/p&&h2&2.1 第一部分 几何复杂性(Geometric Complexity)&/h2&&p&&br&&/p&&p&第1章 实现照片级真实感的虚拟植物(Toward Photorealism in Virtual Botany)&/p&&p&第2章 使用基于GPU几何体剪切图的地形渲染(Terrain Rendering Using GPU-Based Geometry Clipmaps)&/p&&p&第3章 几何体实例化的内幕(Inside Geometry Instancing)&/p&&p&第4章 分段缓冲(Segment Buffering)&/p&&p&第5章 用多流优化资源管理(Optimizing Resource Management with Multistreaming)&/p&&p&第6章 让硬件遮挡查询发挥作用(Hardware Occlusion Queries Made Useful)&/p&&p&第7章 带有位移映射的细分表面自适应镶嵌(Adaptive Tessellation of Subdivision Surfaces with Displacement Mapping)&/p&&p&第8章 使用距离函数的逐像素位移(Per-Pixel Displacement Mapping with Distance Functions)&/p&&p&&br&&/p&&h2&2.2 第二部分 着色、光照和阴影(Shading, Lighting, and Shadows)&/h2&&p&第9章 S.T.A.L.K.E.R.中的延迟着色(Deferred Shading in S.T.A.L.K.E.R.)&/p&&p&第10章 动态辐照度环境映射实时计算(Real-Time Computation of Dynamic Irradiance Environment Maps)&/p&&p&第11章 近似的双向纹理函数(Approximate Bidirectional Texture Functions)&/p&&p&第12章 基于贴面的纹理映射(Tile-Based Texture Mapping)&/p&&p&第13章 在GPU上实现mental images的phenomena渲染器(Implementing the mental images Phenomena Renderer on the GPU)&/p&&p&第14章 动态环境光遮蔽与间接光照(Dynamic Ambient Occlusion and Indirect Lighting)&/p&&p&第15章 蓝图渲染和草图绘制(Blueprint Rendering and &Sketchy Drawings&)&/p&&p&第16章 精确的大气散射(Accurate Atmospheric Scattering)&/p&&p&第17章 利用像素着色器分支的高效模糊边缘阴影(Efficient Soft-Edged Shadows Using Pixel Shader Branching)&/p&&p&第18章 将顶点纹理位移用于水的真实感渲染(Using Vertex Texture Displacement for Realistic Water Rendering)&/p&&p&第19章 通用的折射模拟(Generic Refraction)&/p&&p&&br&&/p&&h2&3.3 第三部分 高质量渲染(High-Quality Rendering)&/h2&&p&第20章 快速三阶纹理过滤(Fast Third-Order Texture Filtering)&/p&&p&第21章 高质量反走样的光栅化(High-Quality Antialiased Rasterization)&/p&&p&第22章 快速预过滤线条(Fast Prefiltered Lines)&/p&&p&第23章 Nalu Demo中的头发动画和渲染(Hair Animation and Rendering in the Nalu Demo)&/p&&p&第24章 使用查找表加速颜色变换(Using Lookup Tables to Accelerate Color Transformations)&/p&&p&第25章 Apple Motion中的GPU图像处理(GPU Image Processing in Apple's Motion)&/p&&p&第26章 改进的Perlin噪声(Implementing Improved Perlin Noise)&/p&&p&第27章 高级高质量过滤(Advanced High-Quality Filtering)&/p&&p&第28章 Mipmap级的测量(Mipmap-Level Measurement)&/p&&p&&br&&/p&&h2&3.4 第四部分 GPU的通用计算:初级读本(General-Purpose Computation on GPUS: A Primer)&/h2&&p&&br&&/p&&p&第29章 流式体系结构和技术趋势(Streaming Architectures and Technology Trends)&/p&&p&第30章 Geforce 6系列GPU的体系结构(The GeForce 6 Series GPU Architecture)&/p&&p&第31章 把计算概念映射到GPU(Mapping Computational Concepts to GPUs)&/p&&p&第32章 尝试GPU计算(Taking the Plunge into GPU Computing)&/p&&p&第33章 在GPU上实现高效的并行数据结构(Implementing Efficient Parallel Data Structures on GPUs)&/p&&p&第34章 GPU流程控制习惯用法(GPU Flow-Control Idioms)&/p&&p&第35章 GPU程序优化(GPU Program Optimization)&/p&&p&第36章 用于GPGPU应用程序的流式缩减操作(Stream Reduction Operations for GPGPU Applications)&/p&&p&&br&&/p&&h2&3.5 第五部分 面向图像的计算(Image-Oriented Computing)&/h2&&p&第37章 GPU上的八叉树纹理(Octree Textures on the GPU)&/p&&p&第38章 使用光栅化的高质量全局照明渲染(High-Quality Global Illumination Rendering Using Rasterization)&/p&&p&第39章 使用逐步求精辐射度方法的全局照明(Global Illumination Using Progressive Refinement Radiosity)&/p&&p&第40章 GPU上的计算机视觉(Computer Vision on the GPU)&/p&&p&第41章 延迟过滤:困难数据格式的渲染(Deferred Filtering: Rendering from Difficult Data Formats)&/p&&p&第42章 保守光栅化(Conservative Rasterization)&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&三、第三本书《GPU Gems 3(GPU精粹3)》&/b&&/h2&&figure&&img src=&https://pic1.zhimg.com/v2-e673a90dd87cba8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&450& data-rawheight=&648& class=&origin_image zh-lightbox-thumb& width=&450& data-original=&https://pic1.zhimg.com/v2-e673a90dd87cba8_r.jpg&&&/figure&&p&&br&&/p&&h2&3.1 第一部分 几何体(Geometry)&/h2&&p&第1章 使用GPU 生成复杂的程序化地形(Generating Complex Procedural Terrains Using the GPU)&/p&&p&第2章 群体动画渲染(Animated Crowd Rendering)&/p&&p&第3章 DirectX 10 混合形状:打破限制(DirectX 10 Blend Shapes: Breaking the Limits)&/p&&p&第4章 下一代SpeedTree 渲染(Next-Generation SpeedTree Rendering)&/p&&p&第5章 普遍自适应的网格优化(Generic Adaptive Mesh Refinement)&/p&&p&第6章 GPU 生成的树的程序式风动画(GPU-Generated Procedural Wind Animations for Trees)&/p&&p&第7章 GPU 上基于点的变形球可视化(Point-Based Visualization of Metaballs on a GPU)&/p&&p&第8章 区域求和的差值阴影贴图(Summed-Area Variance Shadow Maps)&/p&&p&&br&&/p&&h2&3.2 第二部分 光照和阴影(Light and Shadows)&/h2&&p&第9章 使用全局照明实现互动的电影级重光照(Interactive Cinematic Relighting with Global Illumination)&/p&&p&第10章 在可编程GPU 中实现并行分割的阴影贴图(Parallel-Split Shadow Maps on Programmable GPUs)&/p&&p&第11章 使用层次化的遮挡剔除和几何着色器得到高效鲁棒的阴影体(Efficient and Robust Shadow Volumes Using Hierarchical Occlusion Culling and Geometry Shaders)&/p&&p&第12章 高质量的环境光遮蔽(High-Quality Ambient Occlusion)&/p&&p&第13章 作为后处理的体积光照散射(Volumetric Light Scattering as a Post-Process)&/p&&p&&br&&/p&&h2&3.3 第三部分 渲染(Rendering)&/h2&&p&第14章 用于真实感实时皮肤渲染的高级技术(Advanced Techniques for Realistic Real-Time Skin Rendering)&/p&&p&第15章 可播放的全方位捕捉(Playable Universal Capture)&/p&&p&第16章 Crysis 中植被的程序化动画和着色(Vegetation Procedural Animation and Shading in Crysis)&/p&&p&第17章 鲁棒的多镜面反射和折射(Robust Multiple Specular Reflections and Refractions)&/p&&p&第18章 用于浮雕映射的松散式锥形步进(Relaxed Cone Stepping for Relief Mapping)&/p&&p&第19章 Tabula Rasa 中的延迟着色(Deferred Shading in Tabula Rasa)&/p&&p&第20章 基于GPU的重要性采样(GPU-Based Importance Sampling)&/p&&p&&br&&/p&&p&&br&&/p&&h2&3.4 第四部分 图像效果(Image Effects)&/h2&&p&第21章 真正的Impostor(True Impostors)&/p&&p&第22章 在GPU上烘焙法线贴图(Baking Normal Maps on the GPU)&/p&&p&第23章 高速的离屏粒子(High-Speed, Off-Screen Particles)&/p&&p&第24章 保持线性的重要性(The Importance of Being Linear)&/p&&p&第25章 在GPU 上渲染矢量图(Rendering Vector Art on the GPU)&/p&&p&第26章 通过颜色进行对象探测:使用GPU 进行实时视频图像处理(Object Detection by Color: Using the GPU for Real-Time Video Image Processing)&/p&&p&第27章 作为后处理效果的运动模糊(Motion Blur as a Post-Processing Effect)&/p&&p&第28章 实用景深后期处理(Practical Post-Process Depth of Field)&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&四、第四本书《GPU Pro 1》&/b&&/h2&&figure&&img src=&https://pic4.zhimg.com/v2-dec93093b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&531& data-rawheight=&648& class=&origin_image zh-lightbox-thumb& width=&531& data-original=&https://pic4.zhimg.com/v2-dec93093b_r.jpg&&&/figure&&p&&br&&/p&&h2&4.1 第一部分 渲染技巧(Rendering Techniques)&/h2&&p&1. 结合高度混合的四叉树位移贴图(Quadtree Displacement Mapping with Height Blending)&/p&&p&2. 基于几何着色器的NPR效果(NPR Effects Using the Geometry Shader)&/p&&p&3. 作为后处理的alpha混合(Alpha Blending as a Post-Process)&/p&&p&4. 虚拟纹理映射101(Virtual Texture Mapping 101)&/p&&p&&br&&/p&&h2&4.2 第二部分 全局光照(Global Illumination)&/h2&&p&1. 用于间接光照的快速,基于模板的多分辨率泼溅(Fast, Stencil-Based Multiresolution Splatting for Indirect Illumination)&/p&&p&2. 屏幕空间定向遮蔽(Screen-Space Directional Occlusion) &/p&&p&3. 使用几何Impostors的实时多级光线追踪(Real-Time Multi-Bounce Ray-Tracing with Geometry Impostors)&/p&&p&&br&&/p&&h2&4.3 第三部分 图像空间(Image Space)&/h2&&p&1. GPU上的各项异性的Kuwahara滤波(Anisotropic Kuwahara Filtering on the GPU)&/p&&p&2. 边缘抗锯齿的后处理(Edge Anti-aliasing by Post-Processing)&/p&&p&3. 使用Floyd-Steinberg半色调的环境映射(Environment Mapping with Floyd-Steinberg&br&Halftoning)&/p&&p&4. 用于粒状遮挡剔除的分层项缓冲(Hierarchical Item Buffers for Granular Occlusion Culling)&/p&&p&5. 后期制作中的真实感景深(Realistic Depth of Field in Postproduction)&/p&&p&6. 实时屏幕空间的云层光照(Real-Time Screen Space Cloud Lighting)&/p&&p&7. 屏幕空间次表面散射(Screen-Space Subsurface Scattering)&/p&&p&&br&&/p&&h2&4.4 第四部分 阴影(Shadows) &/h2&&p&1. 快速常规阴影过滤(Fast Conventional Shadow Filtering)&/p&&p&2. 混合最小/最大基于平面的阴影贴图(Hybrid Min/Max Plane-Based Shadow Maps)&/p&&p&3: 利用四面体映射实现全向光的阴影映射(Shadow Mapping for Omnidirectional Light Using Tetrahedron Mapping)&/p&&p&4. 屏幕空间软阴影(Screen Space Soft Shadows &/p&&p&&br&&/p&&h2&4.5 第五部分 3D引擎设计(3D Engine Design)&/h2&&p&&br&&/p&&p&1. 基于桶排序的GPU多片段效果(Multi-Fragment Effects on the GPU Using Bucket Sort)&/p&&p&2.随着cell带宽引擎的并行光预通道渲染(Parallelized Light Pre-Pass Rendering with the Cell Broadband Engine)&/p&&p&3. 在Direct3D9和OpenGL 2之间移植代码(Porting Code between Direct3D9 and OpenGL 2.0)&/p&&p&4. DirectX 9实用线程渲染(Practical Thread Rendering for DirectX 9)&/p&&p&&br&&/p&&p&&br&&/p&&h2&4.6 第六部分 游戏解析(Game Postmortems) &/h2&&p&1. Spore中的风格化渲染(Stylized Rendering in Spore)&/p&&p&2: 《狂野西部:生死同盟》中的渲染技巧(Rendering Techniques in Call of Juarez: Bound in Blood )&/p&&p&3. 制作大型,漂亮、快速且流畅的游戏:经验教训(Making it Large, Beautiful, Fast, and Consistent: Lessons Learned)&/p&&p&4. 可破坏的体积地形(Destructible Volumetric Terrain)&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&五、第五本书《GPU Pro 2》&/b&&/h2&&figure&&img src=&https://pic4.zhimg.com/v2-d6b636b6b5c6e1b892dc3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&510& data-rawheight=&648& class=&origin_image zh-lightbox-thumb& width=&510& data-original=&https://pic4.zhimg.com/v2-d6b636b6b5c6e1b892dc3_r.jpg&&&/figure&&p&&br&&/p&&h2&5.1 第一部分 几何操作(Geometry Manipulation)&/h2&&p&1. 使用硬件镶嵌的地形和海洋渲染(Terrain and Ocean Rendering with Hardware Tessellation)&/p&&p&2. 实际且真实的面部皱纹动画(Practical and Realistic Facial Wrinkles Animation)&/p&&p&3. GPU上的程序内容生成(Procedural Content Generation on the GPU)&/p&&p&&br&&/p&&p&&br&&/p&&h2&5.2 第二部分 渲染(Rendering)&/h2&&p&1. 预集成的皮肤着色(Pre-Integrated Skin Shading)&/p&&p&2. 使用延迟着色实现毛发(Implementing Fur Using Deferred Shading)&/p&&p&3. 户外游戏的大规模地形渲染(Large-Scale Terrain Rendering for Outdoor Games) &/p&&p&4. 实用形态学抗锯齿(Practical Morphological Antialiasing)&/p&&p&5. 体积贴花(Volume Decals)&/p&&p&&br&&/p&&p&&br&&/p&&h2&5.3 第三部分 全局光照效果(Global Illumination Effects)&/h2&&p&1. 时域屏幕空间环境光遮蔽(Temporal Screen-Space Ambient Occlusion)&/p&&p&2. 细节层次与流优化的辐照度法线映射(Level-of-Detail and Streaming Optimized Irradiance Normal Mapping)&/p&&p&3. 使用光线追踪的实时单次弹射间接光照与阴影(Real-Time One-Bounce Indirect Illumination and Shadows using Ray Tracing)&/p&&p&4. 半透明均匀介质中光传输的实时近似(Real-Time Approximation of Light Transport in Translucent Homogenous Media)&/p&&p&5. 基于时间相关光传播量的漫反射全局光照(Diffuse Global Illumination with Temporally Coherent Light Propagation Volumes)&/p&&p&&br&&/p&&p&&br&&/p&&h2&5.4 第四部分 Shadows 阴影 &/h2&&p&1. 减少方差阴影图光漏的技巧(Variance Shadow Maps Light-Bleeding Reduction Tricks)&/p&&p&2. 基于自适应阴影贴图的快速软阴影(Fast Soft Shadows via Adaptive Shadow Maps)&/p&&p&3. 自适应体积阴影贴图(Adaptive Volumetric Shadow Maps)&/p&&p&4. 具有时间相关性的快速软阴影(Fast Soft Shadows with Temporal Coherence)&/p&&p&5. Mip贴图屏幕空间软阴影(Mipmapped Screen-Space Soft Shadows)&/p&&p&&br&&/p&&h2&5.5 第五部分 手持设备(Handheld Devices)&/h2&&p&&br&&/p&&p&1. 一个基于Shader的电子书渲染器(A Shader-Based eBook Renderer)&/p&&p&2. 移动设备上的后处理特效(Post-Processing Effects on Mobile Devices)&/p&&p&3. 基于shader的水特效(Shader-Based Water Effects)&/p&&p&&br&&/p&&h2&5.6 第六部分 3D Engine Design (3D引擎设计)&/h2&&p&1. 对于游戏的实用动态可见性(Practical, Dynamic Visibility for Games)&/p&&p&2. 使用像素四元消息传递的着色器分摊(Shader Amortization using Pixel Quad Message Passing)&/p&&p&3. 用于实时群体的渲染流水线(A Rendering Pipeline for Real-Time Crowds)&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&六、第六本书《GPU Pro 3》&/b&&/h2&&figure&&img src=&https://pic3.zhimg.com/v2-9fdfa3ae7ad6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&648& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic3.zhimg.com/v2-9fdfa3ae7ad6_r.jpg&&&/figure&&p&&br&&/p&&h2&6.1 第一部分 几何操作(Geometry Manipulation)&/h2&&p&1. 顶点着色器的镶嵌(Vertex Shader Tessellation)&/p&&p&2. 基于DirectX 11的实时变形地形渲染(Real-Time Deformable Terrain Rendering with DirectX 11)&/p&&p&3. 优化体育场的人群渲染(Optimized Stadium Crowd Rendering)&/p&&p&4. 几何抗锯齿方法(Geometric Antialiasing Methods)&/p&&p&&br&&/p&&h2&6.2 第二部分 渲染(Rendering)&/h2&&p&1. 基于GPU的实用椭圆纹理滤波(Practical Elliptical Texture Filtering on the GPU)&/p&&p&2. 对大气散射的Chapman掠入射函数近似(An Approximation to the Chapman Grazing-Incidence Function for Atmospheric Scattering)&/p&&p&3. 立体实时水与泡沫的渲染(Volumetric Real-Time Water and Foam Rendering)&/p&&p&4. CryENGINE 3:回顾近三年的工作(CryENGINE 3: Three Years of Work in Review)&/p&&p&5. 简单对象的廉价抗锯齿(Inexpensive Antialiasing of Simple Objects)&/p&&p&&br&&/p&&h2&6.3 第三部分 全局光照效果(Global Illumination Effects)&/h2&&p&1. 使用Oriented Splats网格的光线追踪近似反射(Ray-Traced Approximate Reflections&br&Using a Grid of Oriented Splats)&/p&&p&2. 屏幕空间弯曲锥体:一种实用的方法(Screen-Space Bent Cones: A Practical Approach)&/p&&p&3. 基于体素模型的实时近场全局照明(Real-Time Near-Field Global Illumination Based on a Voxel Model) &/p&&p&&br&&/p&&h2&6.4 第四部分 阴影(Shadows)&/h2&&p&1.对阴影贴图的高效在线可见性(Efficient Online Visibility for Shadow Maps)&/p&&p&2. 深度拒绝图案阴影(Depth Rejected Gobo Shadows) &/p&&p&&br&&/p&&h2&6.5 第五部分 3D引擎设计(3D Engine Design)&/h2&&p&1. Z3剔除(Z3 Culling)&/p&&p&2. 基于四元数的渲染流水线(A Quaternion-Based Rendering Pipeline)&/p&&p&3. 用DirectX 11实现定向自适应边缘AA滤波器(Implementing a Directionally Adaptive&br&Edge AA Filter Using DirectX 11)&/p&&p&4. 设计一个数据驱动的渲染器(Designing a Data-Driven Renderer)&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&七、第七本书《GPU Pro 4》&/b&&/h2&&figure&&img src=&https://pic1.zhimg.com/v2-f9ccb9bcd4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&525& data-rawheight=&648& class=&origin_image zh-lightbox-thumb& width=&525& data-original=&https://pic1.zhimg.com/v2-f9ccb9bcd4_r.jpg&&&/figure&&p&&br&&/p&&h2&7.1 第一部分 几何操作(Geometry Manipulation)&/h2&&p&1. GPU地形细分和镶嵌(GPU Terrain Subdivision and Tessellation)&/p&&p&2. 对可编程顶点Pulling渲染流水线的简介(Introducing the Programmable Vertex Pulling Rendering Pipeline)&/p&&p&3. WebGL全局渲染流水线(A WebGL Globe Rendering Pipeline)&/p&&p&&br&&/p&&h2&7.2 第二部分 渲染(Rendering)&/h2&&p&1. 使用Cubemaps和图像代理的实用平面反射(Practical Planar Reflections Using Cubemaps and Image Proxies)&/p&&p&2. 实时Ptex和矢量位移(Real-Time Ptex and Vector Displacement)&/p&&p&3. 在GPU上解耦延迟着色(Decoupled Deferred Shading on the GPU)&/p&&p&4. 分块前向着色(Tiled Forward Shading)&/p&&p&5. 实时渲染向电影式渲染的迈进(Forward+: A Step Toward Film-Style Shading in Real Time)&/p&&p&6. 渐进屏幕空间多通道表面体素化(Progressive Screen-Space Multichannel Surface Voxelization)&/p&&p&7. 基于体素的动态全局照明(Rasterized Voxel-Based Dynamic Global Illumination)&/p&&p&&br&&/p&&h2&7.3 第三部分 图像空间(Image Space)&/h2&&p&1. 《小龙斯派罗:交换力量》中的景深着色器(The Skylanders SWAP Force Depth-of-Field Shader)&/p&&p&2. 模拟后处理景深方法中的局部遮蔽(Simulating&br&Partial Occlusion in Post-Processing Depth-of-Field Methods)&/p&&p&3. 第二深度抗锯齿(Second-Depth Antialiasing)&/p&&p&4. 实用的帧缓冲压缩(Practical Framebuffer Compression)&/p&&p&5. 一致性 - 增强GPU上的过滤效果(Coherence-Enhancing Filtering on&br&the GPU)&/p&&p&&br&&/p&&h2&7.4 第四部分 阴影(Shadows)&/h2&&p&1. 实时深度阴影贴图(Real-Time Deep Shadow Maps)&/p&&p&&br&&/p&&h2&7.5 第五部分 游戏引擎设计(Game Engine Design)&/h2&&p&&br&&/p&&p&1. 基于方向的引擎架构(An Aspect-Based Engine Architecture)&/p&&p&2. 使用Direct3D 11进行Kinect编程(Kinect Programming with Direct3D 11)&/p&&p&3. 一个对Authored Structural Damage的管线(A Pipeline for Authored Structural&br&Damage)&/p&&p&&br&&/p&&h2&&b&八、第八本书《GPU Pro 5》&/b&&/h2&&figure&&img src=&https://pic1.zhimg.com/v2-93ef0b8fa61ad4ed9bf94_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&527& data-rawheight=&648& class=&origin_image zh-lightbox-thumb& width=&527& data-original=&https://pic1.zhimg.com/v2-93ef0b8fa61ad4ed9bf94_r.jpg&&&/figure&&p&&br&&/p&&h2&8.1 第一部分 渲染(Rendering)&/h2&&p&1. 对单通道A缓冲的每像素列表(Per-Pixel Lists for Single Pass A-Buffer)&/p&&p&2. 使用双通道颜色编码减少纹理内存使用(Reducing Texture Memory Usage by 2-Channel Color Encoding)&/p&&p&3. 基于粒子的老化材质模拟(Particle-Based Simulation of Material Aging)&/p&&p&4. 简单的基于光栅化的液体(Simple Rasterization-Based Liquids)&/p&&p&&br&&/p&&h2&8.2 第二部分 光照与着色(Lighting and Shading)&/h2&&p&1. 基于物理的区域光照(Physically Based Area Lights)&/p&&p&2. 利用极线采样的高性能室外光照散射(High Performance Outdoor Light Scattering Using Epipolar Sampling)&/p&&p&3.《杀戮地带》中的体积光效果:Shadow Fall(Volumetric Light Effects in Killzone: Shadow Fall)&/p&&p&4. 层次-Z 屏幕空间锥追踪反射(Hi-Z Screen-Space Cone-Traced Reflections)&/p&&p&5. TressFX:先进的实时毛发渲染(TressFX: Advanced Real-Time Hair Rendering)&/p&&p&6. 线的抗锯齿(Wire Antialiasing)&/p&&p&&br&&/p&&h2&8.3 第三部分 图像空间(Image Space)&/h2&&p&1. 屏幕空间的草地(Screen-Space Grass)&/p&&p&2. 基于每像素链表构造实体几何的屏幕空间可变形网格(Screen-Space Deformable Meshes via CSG with Per-Pixel Linked Lists)&/p&&p&3. SPU上的背景虚化效果(Bokeh Effects on the SPU)&/p&&p&&br&&/p&&h2&8.4 第四部分 移动设备(Mobile Devices)&/h2&&p&1. 手机上的真实感实时皮肤渲染(Realistic Real-Time Skin Rendering on Mobile)&/p&&p&2. 移动设备上的延迟渲染技术(Deferred Rendering Techniques on Mobile Devices)&/p&&p&3. 使用ARM(R) Mali(TM) GPUs的带宽高效图形渲染(Bandwidth Efficient Graphics with ARM(R) Mali(TM) GPUs)&/p&&p&4. 使用OpenGL ES 3.0的高效目标变形动画(Efficient Morph Target Animation Using OpenGL ES 3.0)&/p&&p&5. 分块延迟模糊(Tiled Deferred Blending)&/p&&p&6. 自适应可伸缩纹理压缩(Adaptive Scalable Texture Compression)&/p&&p&7. 针对ARM(R) Mali(TM)-T600 GPU的OpenCL内核优化(Optimizing OpenCL Kernels for the ARM(R) Mali(TM)-T600 GPUs)&/p&&p&&br&&/p&&h2&8.5 第五部分 3D引擎设计(3D Engine Design)&/h2&&p&1. 重新认识四元数(Quaternions Revisited)&/p&&p&2. glTF : 设计一个开放标准的运行时资源格式(glTF: Designing an Open-Standard Runtime Asset Format)&/p&&p&3. 管理Hierarchy中的变换(Managing Transformations in Hierarchy)&/p&&p&&br&&/p&&h2&8.6 第六部分 计算(Compute)&/h2&&p&1. TressFX中的头发模拟(Hair Simulation in TressFX)&/p&&p&2. 对全动态场景的对象次序光线追踪(Object-Order Ray Tracing for Fully Dynamic Scenes)&/p&&p&3. GPU上的四叉树(Quadtrees on the GPU)&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&九、第九本书《GPU Pro 6》&/b&&/h2&&figure&&img src=&https://pic3.zhimg.com/v2-f629c12ea_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&480& data-rawheight=&648& class=&origin_image zh-lightbox-thumb& width=&480& data-original=&https://pic3.zhimg.com/v2-f629c12ea_r.jpg&&&/figure&&p&&br&&/p&&h2&9.1 第一部分 几何操作(Geometry Manipulation)&/h2&&p&1. 动态GPU地形(Dynamic GPU Terrain)&/p&&p&2. 在GPU上通过镶嵌的带宽高效程序化网格(Bandwidth-Efficient Procedural Meshes in the GPU via Tessellation)&/p&&p&3. 物体碰撞时细分表面的实时形变(Real-Time Deformation of Subdivision Surfaces on Object Collisions)&/p&&p&4.
游戏中的逼真体积爆炸(Realistic Volumetric Explosions in Games)&/p&&p&&br&&/p&&h2&9.2 第二部分 渲染(Rendering)&/h2&&p&1. 《神偷》中的下一代渲染技术(Next-Generation Rendering in Thief)&/p&&p&2. 草地渲染和使用LOD的模拟(Grass Rendering and Simulation with LOD)&/p&&p&3. 混合重建抗锯齿(Hybrid Reconstruction Antialiasing)&/p&&p&4. 使用预计算散射的基于物理的云层实时渲染(Real-Time Rendering of Physically Based Clouds Using Precomputed Scattering)&/p&&p&5. 稀疏程序化体渲染(Sparse Procedural Volume Rendering)&/p&&p&&br&&/p&&h2&9.3 第三部分 光照(Lighting)&/h2&&p&1. 使用光照链表的实时光照(Real-Time Lighting via Light Linked List)&/p&&p&2. 延迟归一化的辐照度探针(Deferred Normalized Irradiance Probes)&/p&&p&3. 体积雾与光照(Volumetric Fog and Lighting)&/p&&p&4. GPU上基于物理的光照探针(Physically Based Light Probe Generation on GPU) &/p&&p&5. 使用薄片的实时全局光照(Real-Time Global Illumination Using Slices)&/p&&p&&br&&/p&&p&&br&&/p&&h2&9.4 第四部分 阴影(Shadows)&/h2&&p&1. 实用屏幕空间软阴影(Practical Screen-Space Soft Shadows)&/p&&p&2. 基于分块的全方位阴影(Tile-Based Omnidirectional Shadows)&/p&&p&3. 阴影贴图轮廓的重新矢量化(Shadow Map Silhouette Revectorization)&/p&&p&&br&&/p&&p&&br&&/p&&h2&9.5 第五部分 移动设备(Mobile Devices)&/h2&&p&1. PowerVR GPU上的混合光线追踪(Hybrid Ray Tracing on a PowerVR GPU)&/p&&p&2. 实现一个仅有GPU的粒子碰撞系统,使用自适应可伸缩纹理压缩3D纹理和OpenGL ES 3.0(Implementing a GPU-Only Particle-Collision System with ASTC 3D Textures and OpenGL ES 3.0)&/p&&p&3. 针对移动设备的动画角色毛皮(Animated Characters with Shell Fur for Mobile Devices)&/p&&p&4. 移动GPU的高动态范围计算摄影(High Dynamic Range Computational Photography on Mobile GPUs)&/p&&p&&br&&/p&&h2&9.6 第六部分 计算(Compute)&/h2&&p&1. 基于计算的分块剔除(Compute-Based Tiled Culling)&/p&&p&2. 在GPU光线追踪器上渲染矢量位移映射表面(Rendering Vector Displacement-Mapped Surfaces in a GPU Ray Tracer)&/p&&p&3. 对体渲染的平滑概率环境光遮蔽(Smooth&br&Probabilistic Ambient Occlusion for Volume Rendering)&/p&&p&&br&&/p&&h2&9.7 第七部分 3D引擎设计(3D Engine Design)&/h2&&p&1. 用于快速光线投射操作的分块线性二元方格(Block-Wise Linear Binary Grids for Fast Ray-Casting Operations)&/p&&p&2. 采用Shader Shaker的基于语义的着色器生成(Semantic-Based Shader Generation Using Shader Shaker)&/p&&p&3. ANGL: 将OpenGL ES引入桌面端(ANGLE: Bringing OpenGL ES to the Desktop)&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&十、第十本书《GPU Pro 7》&/b&&/h2&&figure&&img src=&https://pic2.zhimg.com/v2-cc232d2af89afb3ae38da775_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&507& data-rawheight=&648& class=&origin_image zh-lightbox-thumb& width=&507& data-original=&https://pic2.zhimg.com/v2-cc232d2af89afb3ae38da775_r.jpg&&&/figure&&p&&br&&/p&&h2&10.1 第一部分 几何操作(Geometry Manipulation)&/h2&&p&1.《古墓丽影:崛起》中的延迟雪地形变(Deferred Snow Deformation in Rise of the Tomb Raider)&/p&&p&2. Catmull Clark细分曲面(Catmull-Clark Subdivision Surfaces)&/p&&p&&br&&/p&&h2&10.2 第二部分 光照(Lighting)&/h2&&p&1. 集群着色:使用DirectX12中的保守光栅化指定光照(Clustered Shading: Assigning Lights Using Conservative Rasterization in DirectX 12)&/p&&p&2. 精细删减的分块光照列表(Fine Pruned Tiled Light Lists)&/p&&p&3. 延迟属性插值着色(Deferred Attribute Interpolation Shading)&/p&&p&4. 实时的体积云朵景观(Real-Time Volumetric Cloudscapes)&/p&&p&&br&&/p&&h2&10.3 第三部分 渲染(Rendering)&/h2&&p&1. 自适应虚拟纹理(Adaptive Virtual Textures)&/p&&p&2. 延迟粗像素着色(Deferred Coarse Pixel Shading)&/p&&p&3. 使用多帧采样进行渲染(Progressive Rendering Using Multi-frame Sampling)&/p&&p&&br&&/p&&p&&br&&/p&&h2&10.4 第四部分 移动设备(Mobile Devices)&/h2&&p&1. 基于静态局部立方体贴图的高效软阴影(Efficient Soft Shadows Based on Static Local Cubemap)&/p&&p&2. 移动平台上基于物理的延迟着色(Physically Based Deferred Shading on Mobile)&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&十一、第十一本书《GPU Zen》&/b&&/h2&&figure&&img src=&https://pic2.zhimg.com/v2-366cdf5edde_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&549& data-rawheight=&648& class=&origin_image zh-lightbox-thumb& width=&549& data-original=&https://pic2.zhimg.com/v2-366cdf5edde_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&h2&11.1 第一部分 几何操作(Geometry Manipulation)&/h2&&p&1. 属性顶点云层(Attributed Vertex Clouds)&/p&&p&2. 使用内保守光栅化渲染凸面遮挡物(Rendering Convex Occluders with Inner Conservative Rasterization)&/p&&p&&br&&/p&&h2&11.2 第二部分 光照(Lighting)&/h2&&p&1. 稳定的间接光照(Stable Indirect Illumination)&/p&&p&2. 使用膨化体积光的参与性介质(Participating Media Using Extruded Light Volumes)&/p&&p&&br&&/p&&h2&11.3 第三部分 渲染(Rendering)&/h2&&p&1. Deferred+ : 针对Dawn引擎的下一代剔除和渲染(Deferred+: Next-Gen Culling and Rendering for the Dawn Engine)&/p&&p&2. 使用保守光栅化的可编程每像素采样放置(Programmable Per-pixel Sample Placement with Conservative Rasterizer)&/p&&p&3. 手机卡通渲染(Mobile Toon Shading)&/p&&p&4. 高质量高效GPU图像细节处理(High Quality GPU-efficient Image Detail Manipulation)&/p&&p&5. 使用线性变换余弦的线性光着色(Linear-Light Shading with Linearly Transformed Cosines)&/p&&p&&br&&/p&&h2&11.4 第四部分 屏幕空间(Screen Space)&/h2&&p&1.可扩展的自适应屏幕空间环境光遮蔽(Scalable Adaptive SSAO)&/p&&p&2.在PS4上达到1ms 1080p的鲁棒性屏幕空间环境光遮蔽(Robust Screen Space&br&Ambient Occlusion in 1 ms in 1080p on PS4)&/p&&p&3.基于实际采集的散景(Practical Gather-based Bokeh)&/p&&p&&br&&/p&&p&&br&&/p&&h2&&b&结语&/b&&/h2&&p&&br&&/p&&p&可以发现,仅“GPU精粹三部曲”目录式的200+核心章节名称的列举,都已有几千字之多,可谓内容丰富,干货无数。&/p&&p&&br&&/p&&p&希望透过这“GPU精粹三部曲”的11本书,透过这个新的系列文章,不仅能让我们的图形学技术和实时渲染技术再上一个台阶,也能站在巨人的肩膀上,管中窥豹,品味这10多年间,实时渲染与游戏开发领域的蜕变。&/p&&p&&br&&/p&&p&希望自己能将“GPU精粹三部曲”这游戏开发、图形学和渲染领域进阶知识的饕餮盛宴,总结得出色。&/p&&p&&br&&/p&&p&同时也希望这个新的系列文章,能对热爱游戏开发,图形学和渲染的各位朋友们有所帮助。&/p&&p&&br&&/p&&p&最后,放出“GPU精粹三部曲”的全家福,结束这篇文章。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-ddc2625b3afd2092711e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&2268& data-rawheight=&2401& class=&origin_image zh-lightbox-thumb& width=&2268& data-original=&https://pic3.zhimg.com/v2-ddc2625b3afd2092711e_r.jpg&&&/figure&&p&&br&&/p&&p&下篇文章,《GPU Gems 1》全书核心内容提炼总结,再见。&/p&&p&&br&&/p&&p&With best wishes.&/p&&p&&/p&
系列文章前言 《GPU Gems》1~3 、《GPU Pro》1~7 以及《GPU Zen》组成的GPU精粹系列书籍,是游戏开发、计算机图形学和渲染领域的业界大牛们优秀经验的分享合辑汇编,是江湖各大武林门派绝学经典招式的精华荟萃,可谓游戏开发、图形学和渲染领域进阶知识精彩…
&figure&&img src=&https://pic3.zhimg.com/v2-bcf9fb899b4c_b.jpg& data-rawwidth=&2244& data-rawheight=&1250& class=&origin_image zh-lightbox-thumb& width=&2244& data-original=&https://pic3.zhimg.com/v2-bcf9fb899b4c_r.jpg&&&/figure&&p&育碧2017年的重磅分享。&/p&&p&先看一下效果视频:&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/957952& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic4.zhimg.com/80/v2-75db9cbbef1f_b.jpg& data-lens-id=&957952&&
&img class=&thumbnail& src=&https://pic4.zhimg.com/80/v2-75db9cbbef1f_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/957952&/span&
&p&&a href=&https://link.zhihu.com/?target=http%3A//w%253Ci%253Eww.baidu.co%253C/i%253Em/link%3Furl%3DzQBs_uNlZVbiKdBjrwSJnLaeZWaoG0Jb55QJsN6Gsu5Npkri0Ju067QIDP9yUyJ5I1jjLZboraPyx6b3bcBg0a& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&E3 2015:《幽灵行动:荒野(Ghost Recon:Wildlands)》&/a&拥有一个非常大的世界:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-1d648ce4c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1914& data-rawheight=&1072& class=&origin_image zh-lightbox-thumb& width=&1914& data-original=&https://pic3.zhimg.com/v2-1d648ce4c_r.jpg&&&/figure&&p&有11种生物群体,有140种材质:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-ff1dbd811bd79fde5f6abd086bb77bd2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1914& data-rawheight=&1070& class=&origin_image zh-lightbox-thumb& width=&1914& data-original=&https://pic4.zhimg.com/v2-ff1dbd811bd79fde5f6abd086bb77bd2_r.jpg&&&/figure&&p&有16平方千米的水面(湖、大江、小河)覆盖:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-b81b43adb03a68e6fb3bb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1914& data-rawheight=&1060& class=&origin_image zh-lightbox-thumb& width=&1914& data-original=&https://pic4.zhimg.com/v2-b81b43adb03a68e6fb3bb_r.jpg&&&/figure&&p&有着数以百万记的树木、石头、灌木:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-c0c471e1d714e91a7dd30c00dad0e1ce_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1918& data-rawheight=&1068& class=&origin_image zh-lightbox-thumb& width=&1918& data-original=&https://pic2.zhimg.com/v2-c0c471e1d714e91a7dd30c00dad0e1ce_r.jpg&&&/figure&&p&有超过600km长的道路:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-275dc8e83ac6bf4ae6b2cdd1ca5c61c3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1906& data-rawheight=&1066& class=&origin_image zh-lightbox-thumb& width=&1906& data-original=&https://pic1.zhimg.com/v2-275dc8e83ac6bf4ae6b2cdd1ca5c61c3_r.jpg&&&/figure&&p&并且有超过90km的铁路:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-f7fe06f4e751b09affcc138b15096b2d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1916& data-rawheight=&1066& class=&origin_image zh-lightbox-thumb& width=&1916& data-original=&https://pic2.zhimg.com/v2-f7fe06f4e751b09affcc138b15096b2d_r.jpg&&&/figure&&p&有58个村庄,和大量的建筑:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-c08e215b7f3a6c07bd457_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1922& data-rawheight=&1076& class=&origin_image zh-lightbox-thumb& width=&1922& data-original=&https://pic1.zhimg.com/v2-c08e215b7f3a6c07bd457_r.jpg&&&/figure&&p&整个介绍分为五个部分:&/p&&ol&&li&原型介绍&/li&&li&地表工具&/li&&li&地表渲染&/li&&li&Procedural 工具&/li&&li&结论&/li&&/ol&&hr&&h2&Houdini&/h2&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/703104& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic4.zhimg.com/80/v2-4b1e5fd66e6c53_b.jpg& data-lens-id=&703104&&
&img class=&thumbnail& src=&https://pic4.zhimg.com/80/v2-4b1e5fd66e6c53_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/703104&/span&
&p&首先,我们使用真实世界的数据优化了world machine生成的DEM(Digital Elevation Model)文件。然后,使用Houdini创建了一些工具用于:&/p&&ol&&li&自动生成带有LOD的地表Mesh&/li&&li&根据坡度、海拔、粗糙信息、冲刷图等生成地表materials分布信息&/li&&li&自动生成地表上的各种物件&/li&&/ol&&hr&&h2&Terrain Tools&/h2&&p&Terrain Tools的目标是用Heightmap作为输入:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-adbaa4ab6986_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1316& data-rawheight=&794& class=&origin_image zh-lightbox-thumb& width=&1316& data-original=&https://pic2.zhimg.com/v2-adbaa4ab6986_r.jpg&&&/figure&&p&然后得到一个丰富、真实的地表:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-01ce6ca5beea4f4accce283c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1900& data-rawheight=&1068& class=&origin_image zh-lightbox-thumb& width=&1900& data-original=&https://pic4.zhimg.com/v2-01ce6ca5beea4f4accce283c_r.jpg&&&/figure&&p&地表的效果需要达到这样的目标:&/p&&ol&&li&有着大量细节的近景、震撼的远景以及无缝过渡的中景&/li&&li&最高有着10texels/cm、1triangle/2cm的精度&/li&&li&玩家可以到达世界的任何一个角度,需要任何地方都有着一致、连续的效果&/li&&/ol&&p&在Editor中,首先添加的一个功能是,&b&刷地形工具&/b&:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-470a733f641ad82db9dded_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1902& data-rawheight=&866& class=&origin_image zh-lightbox-thumb& width=&1902& data-original=&https://pic2.zhimg.com/v2-470a733f641ad82db9dded_r.jpg&&&/figure&&p&工具基于GPU运算、可以实现在比较高的帧率下编辑大块(2km*2km)地表。&/p&&p&制作一款游戏的过程中,反复迭代是在所难免的,地表编辑人员需要能够快速的构建地表验证想法、并且能够快速的回退修改。&/p&&p&所以,我们提出了一个Layers的概念,Layers的几种主要组成依次是:&/p&&ol&&li&Base Layer :world machine的原始输出&/li&&li&Macro Layer :用地形笔刷做的修改(大的feature)&/li&&/ol&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/464960& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic4.zhimg.com/80/v2-4b1e5fd66e6c53_b.jpg& data-lens-id=&464960&&
&img class=&thumbnail& src=&https://pic4.zhimg.com/80/v2-4b1e5fd66e6c53_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/464960&/span&
DCC层- Houdini生成的修改( 会被后面讲到的Benoit cover掉)&/p&&p&
Manual Level (包含所有手动的修改,这一步没有Houdini的参与)&/p&&p&&br&&/p&&hr&&h2&Material Distribution&/h2&&figure&&img src=&https://pic1.zhimg.com/v2-f122d0efbb5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1880& data-rawheight=&742& class=&origin_image zh-lightbox-thumb& width=&1880& data-original=&https://pic1.zhimg.com/v2-f122d0efbb5_r.jpg&&&/figure&&p&制作的目标是得到一个一致连续的、高质量的大世界。对于这么大的一个世界,如果纯靠手刷material的话,几乎是不可能的。所以,必须使用自动生成的方式来得到material分布信息。&/p&&p&举个例子,生成material一个常用的rule,根据法线的z方向(有的引擎是y)可以得到一个比如雪的覆盖信息:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-993f35f8db085e4d7349b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1766& data-rawheight=&840& class=&origin_image zh-lightbox-thumb& width=&1766& data-original=&https://pic4.zhimg.com/v2-993f35f8db085e4d7349b_r.jpg&&&/figure&&p&更进一步的rules基于以下数据:&/p&&ol&&li&坡度&/li&&li&海拔&/li&&li&曲率&/li&&li&Noise&/li&&li&more...&/li&&/ol&&p&基于这些信息,可以创建很多的rules,rules用栈的形式组织成为一个settings,栈中最后一条被满足的rule会被采用并用于显示。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-e0be00bd22_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1934& data-rawheight=&810& class=&origin_image zh-lightbox-thumb& width=&1934& data-original=&https://pic2.zhimg.com/v2-e0be00bd22_r.jpg&&&/figure&&p&效果:&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/851072& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic4.zhimg.com/80/v2-4b1e5fd66e6c53_b.jpg& data-lens-id=&851072&&
&img class=&thumbnail& src=&https://pic4.zhimg.com/80/v2-4b1e5fd66e6c53_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/851072&/span&
&p&除了自动生成的material之外,有些区域还需要一定程度的手刷操作。比如不同区域(有着不同的settings)之间的过渡区域需要手刷。手刷地表的视频:&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/426304& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic4.zhimg.com/80/v2-4b1e5fd66e6c53_b.jpg& data-lens-id=&426304&&
&img class=&thumbnail& src=&https://pic4.zhimg.com/80/v2-4b1e5fd66e6c53_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/426304&/span&
&p&编辑之后的material分布结果会存成2个texture:&/p&&p&(1)Material ID map:用于存放材质ID&/p&&figure&&img src=&https://pic3.zhimg.com/v2-ba87f0fbaca8ea4b5a6ca9d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&948& data-rawheight=&494}

我要回帖

更多关于 面部四维提升 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信