
Direct12习题全解
针对《Introduction to 3D Game Programming with Direct12》这本书,为该书所有编程习题提供解题思路,以期后来者能更快的加入到Direct12的发展中来,促进国内图形处理领域的发展。
_DavidWang_
计算机硕士,全国信标委虚拟现实与增强现实标准工作组成员(CNITSC)、中国增强现实核心技术产业联盟成员(CARA)、华为HDE(Huawei Developer Experts)、Unity UVP(Unity Valuable Professional)、CSDN博客专家,主编国家级团体标准1项,参与国家级标准编写1项,授权和在审发明专利十余项,软件著作权若干。专注图形学/XR开发,著有《基于Unity的ARCore开发实战详细讲解》、《AR开发权威指南-AR Foundation》、《ARKit原生开发入门精粹》、《HoloLens2开发入门精要-基于Unity和MRTTK》等书籍6本。
展开
-
Introduction to 3D Game Programming with Directx12系列小结
Introduction to 3D Game Programming with DirectX系列书箱对DirectX技术的学习推广起到了非常大的作用,从原理到实践、从数学到物理、从渲染管线到常见技术思路都进行了比较深入的讲解,是难得的DirectX学习资料。DirectX12是Directx系列API的最新迭代,其出现代表了微软在图形硬件处理上的最新成果,也在一定程度上代表了未来图形处理的...原创 2018-07-01 23:18:05 · 3833 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter21
(一)、习题答案1、EXERCISE1 游戏场景管理一直是游戏优化非常重要的一个方面,对场景管理有很多空间数据算法,如KD-Trees,Quadtrees,Octrees。本习题我们重点采用八叉树来对场景进行管理和检测加速。在本习题中,我们将实现本章前面部分采用的Ray-Cast方法来实现环境光遮挡。为方便比较,我们将有光照,无光照(只有环境光),采用环境光遮挡方法所实现的效果对比如...原创 2018-06-27 21:56:12 · 458 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter20
(一)、习题答案1、EXERCISE1 使用投影纹理模拟投影机效果,如下: 2、EXERCISE2 使用截断纹理地址寻址模式,本习题结果如下: 3、EXERCISE3 使用聚光灯,本习题结果如下: 4、EXERCISE4 使用透视投影,效果如下: 5、EXERCISE5 越大的阴影图尺寸,效果越精细,越小的阴影图尺寸,效果越粗糙,如...原创 2018-06-26 19:44:34 · 458 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter19
(一)、习题答案1、EXERCISE1 习题1不赘述,效果如下: 2、EXERCISE1 习题2不赘述,效果如下: 3、EXERCISE4 习题4不赘述,本题需要将视线、光照向量从世界坐标系转换到法向贴图所在的切线坐标系。效果如下: 4、EXERCISE5 习题5按使用两张高度图、两张法向贴图做叠加,需要注意的是,在叠加时高度图的平铺数要与法向贴图...原创 2018-06-24 20:21:12 · 306 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter18
(一)、习题答案1、EXERCISE1 查看不同的FresnelR0,Roughness对光线和反射产生的影响,并使圆柱体跟立方体反射周围环境,如下图所示。 2、EXERCISE2 需要利用texassembel工具生成cubemap,结果如下图所示: 3、EXERCISE3 利用snell折射定率来处理折射问题。 eta=0.9 etq=0.95...原创 2018-06-20 21:49:00 · 445 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter17
(一)、习题答案1、EXERCISE1 使用 Bounding sphere 替换 AABB 使用Octrees来管理游戏场景是一种常见的加速策略,网上类似例子很多。(二)、源码下载本章习题解答源码下载 习题源码...原创 2018-05-16 21:51:47 · 512 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter16
(一)、习题答案1、EXERCISE1 用Bounding spheres 替换 Bounding boxes 本章其他习题均为数学题,不赘述。(二)、源码下载本章习题解答源码下载 源码...原创 2018-05-13 20:37:03 · 262 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter15
(一)、常见操作 摄像机操作是最基本的操作,在摄像机操作中,有些专用名词这里一并归纳如下: Strafe:左右侧行 Picth:摄像机围绕right上下旋转,即上下打量,也叫俯仰角。 Rotate:摄像机围绕up左右旋转,即左右打量,也叫偏航角(yaw)。 Walk:前进后退。 Roll:摄像机围绕look旋转,即翻滚,也叫翻滚角。(二)、习题答案1、E...原创 2018-05-06 22:10:05 · 283 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter14
(一)、习题答案1、EXERCISE1 本题只需要要对控制点进行处理即可,效果一样。 2、EXERCISE2 本题需要根据距离对二十面体进行细分。结果如下: 3、EXERCISE3/4 习题3与习题4请参阅前文 《Directx12 曲面细分详解》6、EXERCISE6 通过设置控制点的值,可以方便的控制生成的曲面的形状,这也是贝塞尔曲线曲面得以大规...原创 2018-05-03 22:31:12 · 327 阅读 · 0 评论 -
Directx12 曲面细分详解
(一),曲面细分 曲面细分(Tessellation)。最初由ATI开发,主要目的是用来细化模型,精细化场景表现,微软将其采纳后加入DirectX 11,成为DirectX 11的组成部分之一,Directx12自然也是包含这部分技术。这种技术广泛的应用在曲面的几何处理上,但这种技术也可以用在其他诸如模型构建、平滑处理等领域。 这张图直观的展示了曲面细分的一个重要能力--细化模型,...原创 2018-04-22 12:46:54 · 3168 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter13
(一)、习题答案1、EXERCISE1 本题与向量相加类似,但我们先需要构建一个模在[1,10]之间的向量,利用Computer shader来计算其模并输出到文件中,结果如下:length:(5.51851)length:(8.07565)length:(5.9656)length:(8.82879)length:(9.11016)length:(8.8439)...原创 2018-04-22 12:45:33 · 469 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter12
(一)、习题答案1、EXERCISE1 本题中,我们需要先构建一个circle,然后将其扩展为一个无盖无底的圆柱。本题需要手动创建一个circle。结果如下: 2、EXERCISE2 本题是对一个二十面体进行细分的考察,这里我们使用几何着色器来完成(也可以使用曲面细分着色器来完成),通过距离来控制细分程度。 3、EXERCISE3 本题我们只要将三角形沿法向方...原创 2018-04-21 21:15:39 · 1081 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter11
(一)、习题答案1、EXERCISE3 本习题是模拟不使用stencil的情况下物体会绘制到反射面的后面,但是我们启用了深度测试,因此深度测试是有效的。 2、EXERCISE4 本习题是在不启用stencil计数时会导致的Bouble Blending。这会导致局部阴影被多次绘制出现黑斑。 3、EXERCISE5 这是第一种情况下绘制的场景,反射的骷髅浮在...原创 2018-04-19 22:33:36 · 422 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter10
(一)、习题答案1、EXERCISE1 本习题主要是对融合方式的学习,如设置如下则结果是将源像素与目标像素相乘: transparencyBlendDesc.SrcBlend = D3D12_BLEND_ZERO; transparencyBlendDesc.DestBlend = D3D12_BLEND_SRC_COLOR; transparencyBle...原创 2018-04-18 21:37:49 · 311 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter9
(一)、习题答案1、EXERCISE1 本习题是基本练习,直接上图 point filter linear filter mirror clamp border2、EXERCISE2 本习题主要是熟悉mipmap。 3、EXERCISE3 本习题需要同时向GPU传递两张纹理,然后在HLSL中采样两张纹理并进行分量乘运算。 4、...原创 2018-04-14 16:38:17 · 434 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter8
(一)、习题解答1、EXERCISE1 本习题中,我们只需要对light的strength进行修改即可,需要注意的是,光照强度不能为负,因此我们需要将sin后的strength值映射到[0,1]范围内。mMainPassCB.Lights[0].Strength = { sin(gt.TotalTime()) / 2 + 0.5f ,0.0f,0.0f}; 作者注:图中...原创 2018-04-10 20:10:12 · 343 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter7
(一)、习题解答1、EXERCISE1 CreateGeosphere()方法是先构造一个20面体,然后再在20面体的基础上进行CPU曲面细分,通过细分来达到逐步精细化模型的目的。这种曲面细分方法占用CPU资源,在细分精度增加时对CPU是比较大的压力,后面我们将看到,从Directx11开始,微软提供了利用GPU来加速的方法。 Subdivision 0 Subdivisio...原创 2018-04-08 19:39:50 · 402 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 Chapter6
(一)、前言 相比Introduction to Directx11,Introduction to Directx12由于页面的问题(目前已经是900余页),删除了Terrain Rendering、Particle System and StreamOut、Meshes、Displacement Mapping相关内容。因为Directx12底层架构的巨大变化,因此,很多章节都重新进...原创 2018-04-02 23:11:00 · 1228 阅读 · 0 评论 -
Introduction to 3D Game Programming with Directx12 0
(一)Directx12现状 从Directx9.0以来,DirectX的第一次版本升级都牵动业内及整个游戏世界的脉搏,也给人们很多希望和期许。自2015年到现在,Directx12伴随WIN10发布已经有三年时间,WIN10应该是得到了认可,而伴随WIN10而来的重大更新的Directx12却显得不那么风光。之前,微软给Directx12的最大卖点是性能的巨大提升,而两年来的游戏产品却给出...原创 2018-03-29 22:17:43 · 924 阅读 · 1 评论