2024年5月26日发(作者:)
DirectX3D HLSL高级实例精讲
DirectX3D HLSL高级实例精讲
内容简介
本书以微软的DirectX3D(简称D3D)为基础,HLSL为主线讨论了DX9的图形内容,并介绍DX11的三
个核心,供在校学生、图形爱好者,图形开发强化培训班和工程技术人员学习,参考。
本书结构严谨,内容充实,讲解清晰,详细讨论了当前计算机图形学的实时渲染技术,并提供大量满
足教学要求和工程的实例代码,供广大学生、教师和工程技术人员使用。
前言
一、背景:
随当今国际和国内娱乐行业大量使用CG技术,特别是实时CG特效给各个年龄的消费群体带来极大的
震撼,同时也带来巨大的市场需求。作为娱乐图形消费的软硬件在本次浪潮的下蓬勃发展,实时图形渲染
技术的HLSL更作为当今实游戏、虚拟现实的前沿领域, 不仅是从事实时图形开发工作所必备的知识,也
是行业人才竞争力的必备技能之一;随DX11引入的通用计算,HLSL的运用范围更加广阔,成为计算机高端
图形开发必须掌握的核心知识。
二、当前状况及本书编写背景:
1、国内介绍DirectX的书籍很少,特别是有一定深度,且全面的书籍几乎匮乏,大致有以下几个特点。
(1)、对DirectX的讲解基本处于入门阶段,还存在出版以传统渲染管道方式来讲解书籍,以HLSL控制下
可编程渲染管道涉及较少。(2)、内容不够深入,对HLSL涉及的Shader基本都是介绍,很少有丰富完整的
实例来完整学习。(3)、部分书籍内容技术质量欠缺。
2、国内学术和论坛没有形成学术氛围。国内各大论坛几乎没有讨论DX内容的氛围,缺乏深度广度。
3、国内引进的高端书籍中,主要是翻译,没有能够将此国外技术广泛化和通俗化。
4、国内高校的图形学教学与实际工程需求脱节,因此从笔者从实际出发,将前期开发案例和教学经验
加以总结成书,与广大读者共享。
三、选择本书的优势:
目前市面上教授图形的书籍较多,为什么选择本书?
1、内容全面全面、新颖。(1)内容全面:除去因部分技术缺乏后续发展动力的技术外,本书涵盖DirectX
的所有图形内容,超过市面任何一本图形书籍,其全面性可以查看本书实例程序的截图和目录来了解书籍的
内容,所有的例子内容满足各个开发层次的需要。(2)内容新颖:本书是以HLSL来介绍图像方式的书籍,
完全抛弃了DX9以下的固定管线方式,可以从每个例子使用的.fx文件,HLSL文件控制渲染;例子中讲解
了当代引擎使用的法线高光贴图技术、视差纹理、HDR;此外本书专有一章对物理引擎的讲解,并提供了丰
第 1 页 共 5 页
DirectX3D HLSL高级实例精讲
富的实例来提高图形真实感的内容。
2、实用性。本书是以教学、工程为目标的内容,入门部分可以让读者尽快掌握基础知识(见后续教学
部分),工程部分则以实际需求为标准进行分析,如第18章的综合实例就以多个例子组合实现一个较大的
工程实例,修改后即可用于项目展示。因此本书可以供计算机图形学课程的大作业和毕业设计使用。并且
物理引擎部分可以作为图形开发班的提高使用,并且提供了工程项目所涉及的工具提供了代码(资源打包
工具、路径工具,音乐工具)。
3、有一定深度。(1)对于有一定开发经验的读者可以参看图形的特效部分(第16章到第19章),主
要讲解在基本渲染上增加真实感的内容。(2)本书的例子的选择都有一定的代表性,能反映HLSL当前的运
用情况,在各个章节末都对当前实例代码的改进提出方向,供用户在后续开发中作为提高、深化,编写出
更符合工程需要的代码。(3)并且书中还对GPU下的通用计算提供了几个实例代码,供高性能计算参考。
4、讲解方式。(1)内容精简。本书是笔者在科研、教学中的体会和总结,把一个清晰的原理在讲解给
读者后,再从程序的角度逐步展开讲解。(2)本书中除对原理,函数讲解外,书中粘贴部分核心代码,并
有详细注释(仅在书中注解,程序中未注解)。(3)本书不是SDK的重复讲解(微软SDK的例子中展示了各
种技术,读者容易迷失在代码中),而是将各个技术特点分散讲解,逐步提高(如ShadowVolume分段讲解
方便提供代码,方便读者理解和使用)。
5、配套代码。本书讲解的代码完全收录在光盘中,约170个例子,能向用户提供各种知识点和充足的
学习实例。
6、其他。由于本书的例子主要是以教学目的提供给读者,在程序的优化和可扩充方面考虑较少,在自
定义的类中也未使用C++中多继承、虚函数等功能。
四、学习本书后达到的目标及使用效果
(1)学习本书后对实时计算机图形学会有更深刻的认识,能具备动手开发Demo模块的能力,可以达
到甚至超过本书提供工程实例的效果(效果详见目录展示文件)。
(2)掌握当前以HLSL为核心的实时计算机图形学的知识,为后续大模块的开发打下良好的基础。
(3)本书的讲义在经过3个图形培训班使用后效果较好,学员反映实例讲解清晰,理解透彻,能很快
上手,并且可以充分利用例子代码来实现工程项目。本书的讲解深入浅出、对难点逐步过渡,叙述方式适
合工程技术人员的思维习惯。
五、学习本书的基础要求
(1)对高等数学和线性代数有一定基础;
(2)使用C/C++语言开发过Window下应用程序(无需MFC);
(3)掌握一定计算机图形学知识;对微软的DirectX开发有一定的经验;
(4)由于本书提供了所有工程项目中使用的模型文件(MAX格式),因此要求用户对MAX软件有一定的
实践基础,特别是在刚体动画和路径动画中,涉及MAX部分操作。
六、本书的组成和使用
1、本书有四部分组成,入门部分,深入部分,提高渲染的真实性部分和面向工程部分。
(1)入门章节,第一章到第四章;
(2)深入部分,第五章到第九章;
(3)提高渲染真实性部分,第十章到第十四章;
(4)面向工程部分,第十五章到第十八章;后续章节属于扩展和补充部分。
第 2 页 共 5 页
DirectX3D HLSL高级实例精讲
2、本书的使用方式建议
(1)对于在校大学生。可以用于计算机图形学的课程设计参考,也可作为图形学课程的大作业内容。
如作为教程使用,建议以半年为一期,每周4节课程。1-10周讲授图形学的基础知识,后7周再讲授本书
的实例,并且可以补充前期知识,并留3周作为课程设计。并选取一章后面的提高部分作为课程设计。对
于毕业设计和论文,可以参考每章后面的提高部分开展自己的课题和论文。
(2)图形开发培训班。对于图形开发短期培训班(有以上基础的学员)建议以3个月为周期的培训,
第一、二个月讲解本书,第三个月完成一个项目设计。
(3)图形爱好者。可以根据自身情况从头开始,或自行选择感兴趣的章节。或作为案头工具书,在需
要时查询使用。
七、本书编写和代码存放位置
本书的编写。本书由李健波编写第五章到第二十一章,丁海燕编写第一章到第四章,全书由李健波最
终校阅、修改、定稿。
关于本书中一些专业术语的翻译或称呼的说明。由于DirectX渲染技术发展较快,部分术语的翻译也
随主流媒体或书籍的方式翻译,并会在各个章节中标注相应的英语名称以便读者辨识,没有对在书末给出
统一的格式。
本书配套的代码由VisualStudio2005环境下开发,运行环境为WindowXP的SP3环境,显卡要求支持
SM2.0以上,部分程序必须在SM3.0以上(具体需要的版本见效果文件设定)。
代码中并未检测程序是否支持显卡的性能,可能在VertexShader/PixelShader版本低于2.0的显卡上
不能运行,会出现其他结果,请读者使用附录中提供的检查方式检查运行的显卡的SM版本。本书提供的源
码共170多个,几乎完全涵盖了DX的所有知识点和和特效,目录组织如下。
Samples
┣01_入门知识 第一章的目录
┗02_DXUT库和渲染对象类 第二章的目录
┣EmptyProject_1_OK 第一节对应的实例代码
┣EmptyProject_1_OK_D3DDevice 第一节对应的实例代码
┣EmptyProject_2_OK_DXUT_UI 第二节对应的实例代码
┣EmptyProject_3_OK_1_CRenderObject 第三节对应的第一个实例代码
┗EmptyProject_3_OK_2_CBoard 第三节对应的第二个实例代码
Bullet使用的版本为2.77,请从官网上下载。
八、致谢
本书在编写过程中的得到父母的长期支持,没有你们作为坚强后盾,是不可能完成本书的,特别感谢
父母可口的饭菜,妻子的鼓励。
由于DirectX庞大且复杂,且新技术和新方法不同涌现,存在笔者对其了解存在理解不全面和充分之
处,恳请读者指出,联系邮箱为lsw2621@。
第 3 页 共 5 页
DirectX3D HLSL高级实例精讲
各章节介绍
本章是书中各章节讲解内容的简单介绍,目的是让读者对各章节内容有大致的了解,方便用户选择感
兴趣的内容。
本章分两个部分介绍本书内容,第一个部分是以文字方式介绍各个章节的大致内容,第二个部分是各
章节部分程序运行的截图,方便用户查看本书提供的实例代码。
各章节讲解简要介绍
章节
第0章
第1章
第2章
第3章
第4章
第5章
第6章
第7章
第8章
第9章
第10章
第11章
第12章
第13章
第14章
第15章
名称
各章节介绍
入门知识
DXUT框架和渲
染类
模型和.x文件
结构
灯光
纹理
缓冲区
VertexShader
深入
PixelShader
深入
内容概述
介绍各章节的主要内容,将本书的内容向读者做一个全面、简单的讲解,
提供部分程序运行截图
以一个例子来展示D3D程序的总体结构,再在上个例子的基础上装入模型,
增加控制模型的渲染的FX和HLSL,最后介绍.x文件
对第2章的代码进行扩展,讲解了微软的DXUT类,新增两个类
HLSL程序入门 以HLSL为重点讲解FX文件,介绍FX和HLSL涉及的函数
详细分析.x文件的格式,装入.x文件,渲染.x文件,并简单介绍其他格
式的模型文件
讲解灯光效果,分别从点光源,聚光灯,平行光进行讲解,再讨论了全局
光和光线追踪
以纹理的运用角度开始从颜色纹理、到高光纹理、法线纹理、立方体纹理、
视差贴图、过程纹理和1D纹理和3D纹理
讲解颜色缓冲区,深度缓冲区和模板缓冲区、顶点缓冲区和顶点索引缓冲
区、邻接缓冲区
讲解VertexShader控制模型的运动和矩阵,并讨论了四元数和BillBoard
和方向对齐等技术实现
讲解PixelShader的基本功能,图像的后期处理,图像分形、Hough变换
和图像FFT。
本章讲解了三种阴影效果,即平面阴影、深度图阴影(ShadowMap),阴影
体阴影(ShadowVolume),并提供了透明阴影,并涉及到更高级的阴影技
术。
本章讲解了骨骼动画、动画融合和动画回调函数
本章讲解模型的变形动画和刚体动画和纹理动画
本章讲解粒子的显示,运动,并提供了一个使用实例方式显示粒子的方法。
渲染到缓冲区 讲解渲染结果保存到纹理的技术来实现
阴影
骨骼动画
变形动画、刚
体动画和纹理
动画
粒子
本章开始讲解物体在运动过程中的情况,即运动物理的数值方法,物体的
物理模拟入门 简单碰撞,提供了球体、AABB方式和OBB方式的代码,还讲解了布料质点
实现,并使用Bullet引擎展示了大量物体的碰撞实例
特效例子
本章以讲解增加图形真实性为基础的动画,以上为涉及的各种特效,如光
线跟踪,HDR,体积光阴影、光晕,延迟渲染,NPR,运动模糊等。
第 4 页 共 5 页
第16章
DirectX3D HLSL高级实例精讲
第17章
第18章
第19章
第20章
第21章
杂项例子
综合例子
优化
DX11入门
附录
对一些工程和教学上使用的技术进行讲解,并引入了GPU通用计算的概念,
同时提供了部分实例
本章讲解了一个水面的例子,路径漫游,场景模型管理的例子
本章讲解程序游的优化,从模型,代码等方面给出了实例
讲解DX9移植到DX11下应该注意的事项,并举例细分和通用计算下的实例
讲解本书涉及的工具,供用户后期查阅
程序运行说明
程序所需资源,资源有两部分,第一部分由所有程序所需要的对话框UI的纹理和效果文件,第二部分
是各个程序自己的模型、纹理和效果文件。所以以上资源必须按以下方式存放,否则程序不能运行(报初
始化错误),如下图:
..上层目录
┣UI目录,程序运行所需的文件,是程序对话框使用的模型和纹理
┗Project目录,当前程序所在目录
┗ResFile_1_Ground资源目录,表示程序使用一个名称为Ground的对象
┗Debug可执行文件目录
┗Release可执行文件的目录
第 5 页 共 5 页


发布评论