12.几何着色器 如果不启用曲面细分,那么几何着色器这个可选阶段将会在位于顶点着色器和像素着色器之间.顶点着色器以顶点作为输入数据,而几何着色器以完整的图元为输入数据.与顶点着色器不同的是,顶点着色器不可以销毁或者创建图元,几何着色器可以销毁或者创建几何图形,我们可以借助这个特点将输入的图元扩展成一个或更多类型的图元,或者是不输出图元. 几何着色器所输出的图元由顶点列表定义而成,在退出几何着色器的时候,必须将顶点的位置变换到齐次裁剪空间. 学习目标 学习如何编写几何着色器 探究如何通过几何着色器…
DirectX12 3D 游戏开发与实战第八章内容(下) 8.9.材质的实现 下面是材质结构体的部分代码: // 简单的结构体来表示我们所演示的材料 struct Material { // 材质唯一对应的名称(便于查找) std::string Name; // 本材质的常量缓冲区索引 int MatCBIndex = -1; // 漫反射在SRV堆中的索引(在第九章的纹理贴图中会使用) int DiffuseSrvHeapIndex = -1; int NormalSrvHeapIndex…
渲染流水线 学习目标: 了解用于在2D图像中表现出场景立体感和空间深度感等真实效果的关键因素 探索如何用Direct3D表示3D对象 学习如何建立虚拟摄像机 理解渲染流水线,根据给定的3D场景的几何描述,生成其2D图像的流程 5.1 3D视觉即错觉? 1.从视觉观察效果来看,平行线最终会相交于一点(消失点,又称为灭点),因此我们可以得出结论:随着深度(z方向)的增加,物体会显得越来越小.(dx是左手坐标系,OpenGL是右手坐标系). 2.我们都知道物体重叠,这是一个重要的概念,即不透明的物体可…
8.光照 学习目标 对光照和材质的交互有基本的了解 了解局部光照和全局光照的区别 探究如何用数学来描述位于物体表面上某一点的"朝向",以此来确定入射光照射到表面的角度 学习如何正确的变换法向量 能够区分环境光.漫反射光以及镜面光 学习如何实现平行光.点光以及聚光灯 理解如何通过控制距离函数的衰减参数来实现不同的光照强度 8.1.光照和材质的交互 开启光照之后,我们不需要指定顶点的颜色,而是指定材质和光照,然后运用光照方程基于两者的交互来计算出顶点的颜色.我们可以把材质看作是确定光照和物…
利用Direct3D绘制几何体 学习目标 探索用于定义.存储和绘制几何体数据的Direct接口和方法 学习编写简单的顶点着色器和像素着色器 了解如何用渲染流水线状态对象来配置渲染流水线 理解怎样创建常量缓冲区数据.并将其绑定到渲染流水线上 掌握根签名的用法 6.1 顶点与输入布局 由5.5.1节可知,除了空间位置,Direct3D的顶点还可以存储很多其他的属性数据.为了构建自定义的顶点格式,我们首先要创建一个结构体来容纳选定的顶点数据.比如: //由位置和颜色信息组成的顶点结构体 typedef…
仅供个人学习使用,请勿转载. 9.纹理贴图 学习目标: 学习如何将局部纹理映射到网格三角形上 探究如何创建和启用纹理 学会如何通过纹理过滤来创建更加平滑的图像 探索如何使用寻址模式来进行多次纹理贴图 探索如何将多个纹理进行组合,从而创建出新的纹理和特效 学习如何通过纹理动画来创建一些基本效果 9.1.纹理与资源的回顾 我们在第四章的时候就开始使用纹理了.特别是深度缓冲区和后台缓冲区,他们都是通过ID3D12Resource接口来表示的.为了便于参考,我们将在这一节回顾一些和纹理相关的知识. 2D…
DirectX12 3D 第一章内容 学习目标 1.学习向量在几何学和数学中的表示方法 2.了解向量的运算定义以及它在几何学中的应用 3.熟悉DirectXMath库中与向量有关的类和方法 1.1 向量 向量是一种兼具大小和方向的量,具有这两种的量都称为向量值物理量,在几何学中我们一般用一条有向线段来表示一个向量 1.1.1 向量与坐标系 前提:计算机无法直接处理以几何方法表示的向量,所以需要寻求一种用数学方法来表示向量 在这里我们会引入一种3D空间坐标系,通过平移操作使向量的尾部位于原点,然后…
Direct3D的初始化(上) 学习目标 了解Direct3D在3D编程中相对于硬件所扮演的角色 理解组件对象模型COM在Direct3D中的作用 掌握基础的图像学概念,例如2D图像的存储方式,页面翻转,深度缓冲,多重采样以及CPU和GPU之间的交互 学习使用性能计数器函数,依次读取高精度计时器的数值 了解Direct3D的初始化过程 熟悉本书应用程序框架的整体结构,在后续的演示程序中可以经常看到应用程序框架的整体结构 4.1预备知识 要学习Direct3D的初始化流程,我们需要了解一些基本的图…
Direct3D的初始化(下) 学习目标 了解Direct3D在3D编程中相对于硬件所扮演的角色 理解组件对象模型COM在Direct3D中的作用 掌握基础的图像学概念,例如2D图像的存储方式,页面翻转,深度缓冲,多重采样以及CPU和GPU之间的交互 学习使用性能计数器函数,依次读取高精度计时器的数值 了解Direct3D的初始化过程 熟悉本书应用程序框架的整体结构,在后续的演示程序中可以经常看到应用程序框架的整体结构 4.3初始化Direct3D 对Direct3D进行初始化可以分为以下几个步…
变换 学习目标 理解如何使用矩阵表示线性变换和仿射变换 学习对几何体进行缩放.旋转和平移的坐标变换 根据矩阵之间的乘法运算性质,将多个变换矩阵合并为一个单独的净变换矩阵 找寻不同坐标系之间的坐标转换方法,并利用矩阵来表示此坐标变换 熟悉DirectXMath库中专门为构建变换矩阵所提供的相关函数 3.1线性变换 3.1.1定义 如果有一个函数t可以使 t(u + v) = t(u) + t(v) t(ku) = tk(u) 成立,则函数t称为线性函数,也称为线性变换.其中u和v为3D向量,k为标…