随笔分类 - DirectX12
摘要:前言 本篇将展示如何使用DX12 实现normal map 源代码chenglixue/D3D12 at normalmap 要点 定义:法线贴图基于凹凸贴图衍生出来的。纹理贴图中的纹素是RGB颜色值,而法线贴图中的纹素是法向量的坐标 用途:计算光照,在纹理图中存储法向量,再将其带入光照计算。在避免
阅读全文
摘要:前言 本篇将展示如何使用DX12实现blend 源代码D3D12 at blend 要点 over & under算子 blend的实现是基于over算子和under算子 over 含义:应对==半透明物体==在==不透明物体前或半透明物体==和==半透明物体==间的情况,它的顺序是==从后向前==
阅读全文
摘要:前言 本篇将展示如何运用深度模板缓冲区来实现游戏中的物体轮廓效果 源代码model_outline 基础知识 模板测试过程 // compare_func:定义的比较函数。对两个参数进行比较 // StencilRef:模板参考值 // StencilReadMask:位于D3D12_DEPTH_S
阅读全文
摘要:前言 本篇将展示如何使用DX12实现天空盒 源代码cubemap 创建dds立方体贴图 微软官方提供了一个命令行工具Texassemble,该工具可以将输入的几个图片转换为GPU可识别的DDS贴图,如立方体贴图 语法 texassemble <command> [-r] [-flist <filen
阅读全文
摘要:前言 本篇将展示如何实现BlinnPhong光照,以及为人物模型贴上纹理 对于理论不清楚的小伙伴可以看这图形学理论 局部光照,[图形学理论 纹理贴图](https://www.cnblogs.com/chenglixue/p/17109214.html) 具体代码看这github.com 材质 由于
阅读全文
摘要:前言 本系列将用D3D12实现众多实时渲染算法,包括正向渲染、延时渲染、光线追踪,本篇将介绍以后常用到的基本框架 笔者会贴出重要的实现,且解释这些代码的作用,不过不会深入讲解其实现原理具体的还需读者自行学习 实现 Win32Application Win32Application主要用于
阅读全文
摘要:前言 本篇是DX12实现篇——使用assimp库导入.obj模型,先仅仅显示简单的模型,等后面再向其中添加纹理等等 github我的实现 Assimp assimp的安装配置网上有很多教程这里就不谈了,但这有一个坑可能对你有所帮助——不知道为什么笔者用assimp最新的库没法导入.obj模型,系统会
阅读全文
摘要:前言 本篇将介绍图形调试工具pix,使用该工具可以对图形管线进行debug。貌似VS不再支持D3D12的图形调试,笔者的VS无法捕获帧 环境搭建 配置用于 CPU 捕获的 PDB 生成完整的 PDB 设置符号路径 srvc:\symcachehttps://msdl.microsoft.com/
阅读全文
摘要:前言 目前我们以所学的渲染方式还不能表现出阴影,因此本篇将介绍阴影贴图原理、存在的问题、如何解决这些问题、实现例子 阴影贴图原理 思想:光源看不到而摄像机可以看到的地方 阴影贴图的主要步骤: 第一次渲染(PASS):将光源看作一个摄像机进行渲染,将光源空间的深度值写入称为阴影图的深度缓冲区,将该
阅读全文
摘要:GPGPU和GPU的区别 概念:通用GPU程序(General Purpose GPU programming,GPGPU):GPGPU通常被集成至CPU中,是一个辅助CPU的工具,可以帮助CPU进行非图形渲染的运算,GPGPU programming 则主要负责非图形相关程序的计算 为什么GPGP
阅读全文
摘要:前言 本篇为DX12个人学习笔记,会介绍深度缓冲区、深度冲突、模板缓冲区、如何使用模板缓冲区 深度缓冲区 定义:深度缓冲就像颜色缓冲(Color Buffer)(储存所有的片段颜色)一样,在每个片段中储存深度值信息,且和颜色缓冲有着一样的宽度和高度。深度缓冲是由窗口系统自动创建的,它会以16、2
阅读全文
摘要:前言 本篇是Hello World系列的下篇,主要讲解渲染管线和着色器 渲染管线 概述 什么是渲染管线 渲染管线是一个描述图形系统需要执行哪些步骤来将三维场景渲染成二维屏幕的概念模型,也就是把3D 模型转变成计算机显示的东西的过程 渲染管线是实时渲染的底层工具 渲染管线的主要功能 决定在给定虚拟相机
阅读全文
摘要:前言 DX12对于初学者来说难度是偏大的,龙书确实写的不错,但对于初学者来说并不是很友善。本篇将带你了解DX12最为基本的流程,希望能带你快速入门DX12 什么是DirectX? DirectX是一系列的图像应用编程接口,正是有了这些接口开发人员便无需和寄存器、显存打交道,大大降低了开发难度和学习难
阅读全文
摘要:概述 本篇说讲的是window窗口程序——由主窗口、菜单、工具栏、滚动条、按钮等控件组成,而D3D游戏编程并不需要过于复杂的GUI(graphics user interface),仅仅需要一个主窗口用以渲染 基础 windows中,多个应用程序可以并发运行,因此硬件资源都在多应用程序的共享范围。然
阅读全文