您的位置:首页 > 其它

Real-Time 3D Rendering with DirectX and HLSL

2016-06-26 07:47 323 查看

介绍

图形编程是视频游戏,电影和科学模拟仿真背后的魔法。你在计算机屏幕上看到的每一个爆炸,颗粒以及眩光都是使用视频卡处理的。此外,你看到的每一个像素点都是通过GPU渲染和图形编程人员软件实现的,因为现代操作系统使用GPU绘制。这是一个广泛的话题,但一直以来只属于少数领域。甚至有经验的软件开发人员,通常认为渲染是一门高深的艺术,充满了复杂的数学工具和深奥的工具。另外,现代图形学的快速发展使得图形编程变成了不断前进的目标,同时建立一个起点变得更加困难。
这就是这本书的目的。通过这本书,你会学习对实时3D渲染的基础介绍。事实上,这些内容以一种简单直接,并且实用的方法展现,但并不会隐藏更多高级的主题。这本书不仅仅讲述了绘制简单物体,并介绍了现代渲染中的中级和高级内容。我衷心的希望这本书上的内容能带给你易懂的,实用的,最新的现代图形技术。

目标读者

这本书是面向有经验的软件工程师第一次接触图形编程。里面的内容经常使用视频游戏行业的专业术语,但是你阅读这本书并不需要成为一名游戏开发人员。事实上,现代渲染的主题远远超过视频游戏领域,而且在各种软件相关的领域变得越来越普遍。无论你从事什么领域的软件开发,只要你对现代渲染感举,这本书就适合你。
同时本书的内容也会帮助那些已经从事图形编程但不熟悉DirectX的开发人员,或者熟悉DiretX的旧版本。本书包含DiretX,以及DiretX在过去几年的重大更新。本书同样适用于对实时渲染感兴趣的学生,爱好者,艺术家。
如果你没有学习过任何编程,不仅仅是图形编程,这本书可能不是你想要阅读的。特别是第三部分,“Rendering with DirextX“,编写了一个C++语言的渲染引擎,需要熟悉C++语言。

为什么编写这本书?

市面上已经有一些讲述图形编程的书籍。然而,大部分书籍都只讲述了一个领域:要么是Shader编程,或者只讲渲染API(比如DirectX或OpenGL)。对于其他主题的提及,就像硬币的另一面,经常很少提及,或者只有一两章。
现代渲染离不开shaders,但是没有图形应用程序shaders也无法运行。很少有书籍把这两个主题结合在一起成为一个完整的综合形式,也没有书籍同时介绍中级和高级主题。大部分书籍的问题是要么内容太简单只适合新手,要么是太高级即使非常有经验的软件工作师也难以理解。
同样,你会找到很多专门讲述游戏或者引擎编程的书籍。这些书籍一般包含图形编程或者构建3
4000
D模型和材质的方法。正因为包含了这么多的内容,这些书籍缺少渲染知识。
我提到的方法都是有效的,而且你可以在市场上找到很多优秀的书籍。但是我发现这些书籍都没有全面,专注的讨论CPU和GPU方面的渲染,而这正是有经验的开发人员想到深入理解图形编程所需要的。这本书将会填补这个空缺。

这本书是如何组织的

这本书分成四个部分:
第一部分,"An Introduction to 3D Rendering",主要介绍图形编程的基础。包含了对DirectX一直更新到11.1版本(这也是本书使用的版本)的历史,并学习Direct3D的图形流水线。第二章讲述了基础的3D数学,并使用DirectXMath API。如果你已经熟悉线性代数和3D数学,你可以路过第二章。但是,我强烈建议你阅读DirectXMath(微软最新的图形相关的数学库,并提供了SIMD加速)部分。第一部分以讲述一个编写和调试shaders和graphics应用程序的最佳工具结束。

预备知识

阅读这本书不需要你是一名游戏或图形开发者,也不需要你已经很熟练3D数学。只简单的需要你对图形编程有兴趣并且熟悉C++编程语言。如果你是一名有经验的程序员但是使用另一门不能的编程语言,你可能会顺利阅读第三和第四部分,但是没法共同讨论C++语法。
此外,所有的示例代码都提供Microsoft OS支持,并打包成VS2015的工程(原书是VS2012或VS2013)。这些示例要求显卡至少支持Shader Model 4。部分示例(特别是展示 Compute Shaders和Tessellation)要求支持Shader Model 5。

辅助网站

http://www.varcholik.org/wpress/
包含了全部示例代码和勘误表,同时有一个关于本书的问题和讨论的论坛。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: