d3d12专题

DirectX12(D3D12)基础教程(二十三) ——DirectShaderCompiler 头文件接口 ID3DInclude 的应用

目录 1、前言2、ID3DInclude 回调接口介绍3、基本使用方法4、示例代码中的实现 1、前言   本章教程较短小,但内容十分重要,是后续更灵活使用 Shader 编程的重要基础之一。也就是对 Shader 代码进行头文件分离复用设计进行全面支持。或者直白的说,本章内容重点就是让各位掌握以编程的方式在代码中支持 Shader 头文件的方法,方便在设计 Shader 编辑器之

D3D12可编程渲染流水线(二)灯光和纹理

一、灯光和材质 顶点的颜色不再直接指定,而是由灯光、物体的材质和顶点的法向量,经过顶点着色器程序计算获得,像素的颜色通过像素着色器程序计算获得。 1.1 顶点格式 struct Vertex{DirectX::XMFLOAT3 Pos; //位置DirectX::XMFLOAT3 Normal; //法向量};//输入布局mInputLayout ={{ "POSITION", 0,

DirectX12(D3D12)基础教程(十四)——使用WIC、Computer Shader显示GIF动画纹理(上)

文章目录 1、前言2、GIF文件简介3、使用WIC加载并解析GIF文件3.1、解析GIF全局背景色3.2、获取GIF的像素尺寸3.3、获取像素纵横比修正图片像素尺寸3.4、读取GIF帧和属性3.5、创建GIF纹理(画板)和帧纹理 1、前言   在本系列教程开头的几章中,开初使用的纹理加载组件是WIC。后来在不断的编码过程中,通过慢慢的摸索学习我才发现之前可能一直有点误解WIC这

D3D12编译遇到的问题

D3D12编译遇到的问题 X3501 'main': entrypoint not foundLNK2019 无法解析的外部符号 _main,函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)案例测试 X3501 ‘main’: entrypoint not found 这边需要将.hlsl文件的项类型改为不参与生成

D3D12渲染技术之像素着色器

再介绍一下片段着色器,在光栅化期间,从顶点着色器(或几何着色器)输出的顶点属性在三角形的像素上进行插值, 然后将插值作为输入,输入到像素着色器。 假设没有几何着色器,下图说明了到目前为止顶点数据的路径。 每个顶点元素都有一个由D3D12_INPUT_ELEMENT_DESC数组指定的相关语义,顶点着色器的每个参数也具有附加的语义, 语义用于将顶点元素与顶点着色器参数进行匹配。 同样地,顶点着

D3D12渲染技术之几何辅助结构

我们绘制一个立方体需要一组顶点和索引,将顶点和索引缓冲区组合在一起可以定义一组几何图形的结构, 此外,该结构的顶点和索引数据是在系统内存中的,以便CPU可以读取它, CPU需要访问几何数据以进行拾取和碰撞检测。 每当我们定义几何时,我们使用以下MeshGeometry(在d3dUtil.h中定义)结构。 // Defines a subrange of geometry in a MeshGeo

D3D12渲染技术之纹理案例

我们现在回顾一下将纹理添加到箱子模型上面,就跟以前的博客中提到的那样。下面我们详细介绍如何实现? 指定纹理坐标 GeometryGenerator :: CreateBox生成箱子的纹理坐标,以便将整个纹理图像映射到箱子的每个面上。 为简洁起见,我们仅显示正面,背面和顶面的顶点定义。 另请注意,我们省略了顶点构造函数中法线和切线向量的坐标(纹理坐标以粗体显示)。 GeometryGenera

D3D12渲染技术之形状几何

在本篇博客中,我们将展示如何为椭圆体,球体,圆柱体和圆锥体创建几何体。 这些形状对于绘制天空圆顶,调试,可视化碰撞检测和延迟渲染非常有用。 我们将几何生成代码放在GeometryGenerator类(GeometryGenerator.h / .cpp)中,GeometryGenerator是一个实用程序类,用于生成简单的几何形状,如网格,球体,圆柱体和盒子,我们在本博客中将它们用于演示程序, 这

D3D12渲染技术之光源

灯光有Point光源,Spot光源,Directional光源,Area光源等等,网上这方面的文章很多,在此我们就不详细介绍每个光源的计算公式了,我们直接介绍将光源应用到我们的案例中。先看我们已经实现好的案例截图: 顶点格式 照明计算需要表面法线, 我们使用顶点定义法线,然后在三角形的像素上插入这些法线,以便我们可以对每个像素进行光照计算。 而且,我们不再指定顶点颜色, 相反,通过对每个像素

D3D12渲染技术之矩阵向量运算

向量,矩阵运算这个是老生常谈的话题了,作为程序员来说必须要掌握的,游戏开发逻辑编写中用的最多的也是矩阵向量相关的运算,向量矩阵运算它也是引擎的最基础部分,几乎每个引擎都会封装自己的向量运算类,矩阵运算类,Unity引擎它也封装了自己的矩阵向量类,虚幻也是一样的。学习D3D12,它们也是绕不过去的,大学的课本《线性代数》主讲的就是它们,如果大家没有学习过或者是跨行业的,可以学习一下。如果大家已经掌握

DirectX12(D3D12)基础教程(外篇二)——编译DirectXShaderCompiler库

目录 1、前言2、准备工作3、下载DirectXShaderCompiler源码4、编译DirectXShaderCompiler 1、前言   功夫不负有心人,终于DirectXShaderCompiler库,也就是HLSL的编译器开源项目源码也被我编译通过了,这是个不小的成功!于是我就乘热打铁,把整个编译的过程记录下来,并完整的分享给大家。目前HLSL Shader 已经发展