directx11入门
文章平均质量分 95
带帯大师兄
图形编程,C++,UE4/UE5,Directx11/Directx12/Vulkan
展开
-
Directx11入门教程四十八之小议ComputeShader
ComputeShader的简介现代GPU很多时候不仅仅用于Graphics, 很多时候可以用GPU来做很多并行性较强的通用计算,简称GPGPU(General Purpose GPU),当然因为我是主要搞计算机图形学Rendering这方面,所以我对于GPGPU在其他非Rendering领域的并不熟。在渲染中,我们很多数据的计算方式是类似的,是比较通用的,如高斯模糊,SSAO,SSR等等都可以...原创 2018-07-15 17:01:00 · 3671 阅读 · 3 评论 -
Directx11教程三十九之DefferedShading(延迟渲染)
这节教程是关于DeferredShading(延迟渲染)的,程序的结构如下: 看这个教程最好先掌握两样技术:(1) 2D Rendering D3D11教程七之2D渲染 (2)RenderToTexture(渲染到纹理技术)D3D11教程十四之Rende...原创 2016-11-16 19:46:52 · 3701 阅读 · 0 评论 -
Directx11教程三十八之Pick(拾取技术)
这节教程是关于Pick(拾取技术的),程序的结构如下:在看这节教程前先弄懂:(1)大概了解D3D11的渲染流水线 (2) D3D11教程三十七之FrustumCulling(视截体裁剪)上半节教程, 弄不懂也没关系,两节教程之间有一些联系,但是由于我们的教程简化模型,就算原创 2016-11-15 23:37:12 · 4739 阅读 · 0 评论 -
Directx11教程三十七之FrustumCulling(视截体裁剪)上半节教程
这节教程有关于如何运用FrustumCulling(视截体裁剪)提高3D图形渲染效率的,程序的结构如下:看这节教程前请先看懂以下教程:D3D11字体的实现教程:D3D11教程八之FontEngine(字体实现) D3D11漫反射光的实现:D3原创 2016-11-14 00:28:14 · 4324 阅读 · 0 评论 -
Directx11教程三十五之ShadowMappingAndTransparency(实现树叶的影)
关于ShadowMappingAndTransparency的一个经典的例子,就是有关于如何投影树的叶子在地面形成影子的,程序的结构如下:树由树躯干和树叶两部分组成,如下面图所示:原创 2016-11-06 23:35:43 · 1052 阅读 · 0 评论 -
Directx11教程三十一之ShadowMap(阴影贴图)之平行光成影
这一节教程跟 D3D11教程三十一之ShadowMap(阴影贴图)之点光源成影 那节教程差不多,那节教程是关于点光源下利用ShadowMap形成阴影的,这一节教程是关于平行光下利用ShadowMap形成阴影的。先看看这节教程的结构吧: 一,正交投影矩阵(OrthographicMatrix)据我们所知在当顶点处于相机空间时,接下来使用的投影矩阵有两种:透视投影矩阵(P...原创 2016-11-06 21:29:28 · 5395 阅读 · 0 评论 -
Directx11教程三十四之ProjectiveLightMap(投影光照图)
这节教程呢,其实结构跟 D3D11教程三十之ProjectiveTexturing(投影纹理) 那节教程一样,我就不放出程序结构图了这次投影的纹理换为一张光照贴图,模仿光线从窗户照射进的那种情况,放出Shader代码:ColorShader.fxTexture2D BaseTexture:reg原创 2016-11-04 23:02:13 · 594 阅读 · 0 评论 -
Directx11教程三十三之Soft Shadows—PCF(Percent closer Filter)
这节教程介绍有关如何用PCF算法消除阴影(ShadowMap)的锯齿,也就是实现软阴影(Soft Shadows),这节程序的结构如下: 在看这节教程前你得先学会的技术:一,如何用D3D11实现模糊算法 D3D11教程二十六之Blur(模糊处理) ...原创 2016-11-04 20:32:16 · 3800 阅读 · 0 评论 -
Directx11教程三十二之MultipleLightShadowMapping
这节教程采用的结构和上一节教程“D3D11教程三十一之ShadowMap(阴影贴图)” 是一样的,上节教程是一个点光源而已,而这一节教程是采用多个点光源,来加深我们对ShadowMap的理解。这节教程没多少好说的,直接放出我的ShaderLight.fx (直接定义计算点光源光照的函数)//这个文件包含一些计算光效果的函数//原创 2016-11-04 19:37:23 · 820 阅读 · 0 评论 -
Directx11教程三十一之ShadowMap(阴影贴图)之聚光灯光源成影
这节教程我们将介绍一种生成Shadow(阴影)的主流技术,程序结构如下:读懂此节教程你应该先懂得的技术: (1)D3D11如何求得DepthBuffer(深度缓存值),D3D11教程二十五之DepthBuffer(深度缓存) (2)原创 2016-11-02 00:01:19 · 6161 阅读 · 4 评论 -
Directx11教程三十之ProjectiveTexturing(投影纹理)
这节教程是介绍有关ProjectiveTexturing(投影纹理)技术的,结构如下一,ProjectiveTexturing(投影纹理)的简介.ProjectiveTexturing(投影纹理)是实现3D实时渲染的最重要的技术之一,很多高级效果,如SoftShadow(软弱阴影),Water,ProjecvtiveLightMap(投影光照图),Reflectio原创 2016-11-01 21:33:48 · 2771 阅读 · 0 评论 -
Directx11教程二十九之PlannarShadow(运用stencilBuffer)
这节教程是关于在光下物体如何在一个平面(plannar)产生阴影(Shadow),先看看这节教程的结构吧:一,平面公式的推导。可能你会疑问了,我们不是求阴影的?怎么推导平面公式?大家不要急,先慢慢往下看我如何一步一步推导出阴影的原理和公式.先看图: 看图中的平面,已知平面的法向量N(nx,n原创 2016-10-28 20:28:32 · 837 阅读 · 0 评论 -
Directx11教程二十八之PlannarReflection(基于stencilBuffer的实现)
这节教程可以作为我的那节 “”D3D11教程十九之平面反射(planar reflect)“”的补充,那节教程的反射镜像是利用RenderToTexture技术生成的反射纹理形成的,而这节教程的镜像是基于stencilBuffer和DepthBuffer技术形成的.首先给出这节教程的结构:一,介绍stencilBuffer模板缓存决定了是否可以进行深原创 2016-10-27 20:58:58 · 1249 阅读 · 0 评论 -
Directx11教程四十之加载OBJ模型
本节是有关于如何加载OBJ模型的,程序的结构如下:一,OBJ模型的介绍。在具体介绍OBJ模型的内部数据之前,我们来看看我们这次加载的OBJ模型,我们这次使用的OBJ模型为图形学界著名的"CornellBox",经常被一些图形学研究者用于全局光照算法等等。模型如下所示:来看看我们的OBJ模型文件 “CornellBox-Glossy原创 2017-03-01 18:02:00 · 8482 阅读 · 1 评论 -
Directx11教程四十二上之SkeletalAnimation(骨骼动画)的原理
这一节教程是关于如何用Directx11实现SkeletalAnimation(骨骼动画)的,代码的结构如下:一,骨骼动画(SkeletalAnimation)(1)骨骼的层级关系-----树(Tree)在谈论SkeletalAnimation之前,我们先看看大名鼎鼎的虚幻四引擎的动画系统中的Skeleton,如下图所示: 在上面图左边方框显...原创 2017-06-03 17:16:39 · 4480 阅读 · 1 评论 -
Directx11教程四十二中之3D动画格式M3D
在上一节D3D11教程四十二上之SkeletalAnimation(骨骼动画)的原理 我大致阐述了骨骼动画的原理。这一节开始介绍3D动画文件:M3D。q原创 2017-06-04 11:56:27 · 5726 阅读 · 4 评论 -
Directx11教程四十七之Depth Of Field(视深域)
按惯例,程序的结构如下DepthOfField(视深域)的简介视深域(DOF)是一种后处理技术,用来模拟散焦的效果。这里不讲复杂的,就讲解实时渲染中最简单的DOF实现的思路。在DOF现象中,距离观察相机越远的物体散焦越大,这里散焦在本章节‘'简易的DOF”一定程序上等于‘"模糊’。也就是在相机空间,计算像素与相机之间的距离,然后根据设定 的 DOFStart(DOF开始距离),DOFRange(D...原创 2018-04-19 17:23:13 · 2666 阅读 · 4 评论 -
Directx11教程四十六之FBX SDK
在之前的DX11入门系列文章中,有篇有关Directx11教程四十之加载OBJ模型读取obj模型数据的博客。不过在obj读取的那篇博客我有些坑并没有说,就是我写的那个obj解析器只能解析特定的obj文件格式,因为后面我用我写的obj模型解析器发现根本无法解析大多数的obj文件格式,真是让人崩溃,因为那时的我是分析特定的一两个obj文件写出来的解析器,实际上obj文件数据的多样性超越我的想象。所...原创 2018-04-16 09:11:51 · 2767 阅读 · 1 评论 -
Directx11教程四十五之MotionBlur(运用VelocityBuffer)下
程序结构:MotionBlur实现过程:总体分为四个pass:(1)RenderGbufferPass, 得到colorRT,velocityBufferRT,DepthRTTexture2D ShaderTexture:register(t0); //纹理资源SamplerState SampleType:register(s0); //采样方式static const floa...原创 2018-03-26 00:46:13 · 1069 阅读 · 0 评论 -
Directx11教程四十五之MotionBlur(运用VelocityBuffer)上
本节介绍有关 motionBlur 移动模糊实现的算法,程序结构如下所示:motionBlur(移动模糊)算法概述:移动模糊也就是物体移动时会产生模糊的现象,可以说是相对观察相机快速变动的物体(与其说是物体,还不如说是相应的片元fragment)产生的残影与物体本体叠加在一个范围,产生的模糊现象。如下所示:移动模糊在什么时候发生,我总结为两种情况:(1)物体位置不动而相机位置动(2)物体位置动而相...原创 2018-03-04 03:50:19 · 2278 阅读 · 0 评论 -
Directx11教程四十一之SSAO(ScreenSpaceAmcientOccusion,屏幕空间环境遮挡)
这一节教程是关于如何用DirectX11实现SSAO(ScreenSpaceAmcientOccusion,屏幕空间环境遮挡),程序的代码结构如下: 一,SSAO(屏幕空间环境遮挡)是什么?SSAO,全称ScreenSpaceAmbientOcculusion,中文翻译为屏幕空间环境遮挡,为一种加强空间立体感的一种实时渲染算法.下面看看应用了SSAO和没应用SSAO...原创 2017-03-16 01:20:08 · 3461 阅读 · 2 评论 -
Directx11教程二十五之ZBuffer(深度缓存,DepthBuffer)
这节教程的结构如下:原创 2016-10-22 20:43:18 · 7769 阅读 · 0 评论 -
D3D11之HLSL常见问题和调试方法总结
用D3D11有一小段时间了,感觉在以前的教程章节也是散乱的写关于HLSL的总结,不过以前的我感觉有点不太对,这里我重新整理一下子第一,HLSL错误类型。HLSL错误两类两大类:第一,加载shader文件路径出错或者文件名出错,这应该是最低级的错误.第二,是shader的语法错误,比如无效字符,不记得返回值,值未初始化就使用等等。一般来说,这时候调试时最好原创 2016-10-21 01:11:01 · 4862 阅读 · 0 评论 -
Directx11教程二十二之Multiple Point Lights(多个点光源)
这个教程的结构如下:这节讲的是由关于点光源的第一,什么是点光源?首先你得知道到底光照和光源的关系,光源发出光照,关系就是如此的简单。现在将光照分为DirectionLight(方向光),DiffuseLight(漫反射光),SpecularLight(镜面光),(这里不谈论全局光什么的,其实我现在不懂全局光)光源分为:类太阳体,点光源,聚原创 2016-10-21 01:17:29 · 1446 阅读 · 1 评论 -
Directx11教程十四之RenderToTexture(RTT技术)
本节教程旨在渲染一个3D模型到一张2D纹理,在把这张2D纹理渲染到背后缓存(屏幕上),先看看本次教程的结构吧,感觉越来越庞大的架构了,有几千行代码了,这次教程的架构如下:由于框架越来越庞大,我得写个文档大概记录下每个文件的大概作用才行:(1)WinMain:入口函数,主要是整个函数开始的地方。(2)SystemClass:包含InputClass,GrapgicsClass,FPSClass,CP...原创 2016-10-12 19:46:50 · 7404 阅读 · 0 评论 -
Directx11教程二十六之Blur(高斯模糊)
这节教程主要是关于“Blur”模糊处理的,先看看结构吧:一,(Blur)模糊的介绍。什么是模糊,从宏观上来说模糊的定义大家都知道,也就是看不清;从微观的角度而言,假设一张纹理上,每个像素叠加其旁边像素的一定的值,就是模糊。具体说下实现模糊算法,核心的算法分为两步:(1)水平模糊处理 (2)垂直模糊处理(1)水平模糊处理 看中原创 2016-10-26 22:56:25 · 2569 阅读 · 0 评论 -
Directx11教程四十三之glow(边缘发光)
这一节教程是关于渲染3D物体的发光边缘,代码结构如下:一,Glow(边缘发光效果)这里借用下虚幻四引擎演示下“边缘发光效果”,如下图所示:如上面图中的立方体的边缘是发光的。这里有篇博客介绍了“Glow”是怎么实现的:[Unity3D][Shader 着色器]给物体边缘加高光轮廓的办法这里大致说下我实现的方法步骤原创 2017-06-17 12:42:33 · 3104 阅读 · 0 评论 -
Directx11教程四十二下之进行骨骼动画的渲染
前面两小节分别说明了骨骼动画的数学原理和一种骨骼动画格式M3D的读取,这一节讲解渲染的思路。(1)渲染的思路其实,进行骨骼动画的渲染,整体思路是:第一,求出某个动画片段下某一个时间点下所有骨骼的FinalMatrix(由骨骼在某一帧的Pos,Scale,Quat求出)第二,由于“第一”中渲染骨骼动画的时间点可能不在整数帧数上,比如你想某个动画片段存在50帧画面,开始时间为0原创 2017-06-04 12:31:00 · 2672 阅读 · 1 评论 -
Directx11教程二十七之Tessellation(曲面细分)
先看看本节教程的结构吧一,曲面细分的介绍。 这里先链接一篇关于曲面细分的文章 http://blog.csdn.net/qq_29523119/article/details/52914370,算是对曲面细分大概的科普吧.这里看此放出D3D11的3D渲染管线图:看红色画圈部分的都属于“Tessellation(曲面细分阶段)”,分别为原创 2016-10-27 01:18:21 · 1785 阅读 · 1 评论 -
Directx11教程二十四之Billboarding(广告板)
这节教程的结构如下:一,什么是广告板(Billboarding)?原创 2016-10-22 14:10:47 · 1021 阅读 · 0 评论 -
Directx11教程五之DiffuseLight(漫射光)
先看看这次教程的构架吧,这次的教程我设置的DiffseLightColor=(0.0f,1.0f,0.0f,1.0f) 绿色 ,LightDirection=(1.0f,0.0f,0.0f); 灯光方向为X正方向这次显示的正方形会绕着Y轴旋转,会有三种现象第一种现象,当正方形旋转为正面并且顶点法线方向与灯光反方向 即LightInvDirection成锐角时 呈原创 2016-10-02 23:30:18 · 1540 阅读 · 0 评论 -
Directx11基础教程四之Texture(纹理)
这节教程是介绍如何实现D3D11的纹理映射的,先看看这节的结构吧在看看纹理坐标系这节注意的:第一,首先修复一下前几个教程冒出来的BUG,那时我以为是VS2015的bug,也就是在CameraClass.H里无法自动识别代码莫名其妙出现错误的BUG,我发现如何一个.H文件单独包含库,而不包含则会出现这样的错误,并且我尝试在先在CamaraCla原创 2016-10-02 22:57:29 · 7815 阅读 · 3 评论 -
Directx11基础教程三之VertexShader,PixelShader,buffer
再次声明,我用的 xnamath.h数学库,而且某些地方在原教程基础下有些地方改动.先看看这次教程的框架吧,首先能GraphicsClass包含四个类,分别为D3DClass,ModelClass,CameraClass,ColorShaderClassclass GraphicsClass{private: //D3D类 D3DClass* mD3D; //相机类,用于控制原创 2016-10-01 10:18:33 · 8618 阅读 · 2 评论 -
Directx11基础教程二之Directx11初始化
上个教程我搭建了一个框架D3D11的框架FrameWork,这次我们进行D3D11的初始化,好的,先看看这次整体的框架 好的,下面D3D11的初始化我分为十二个步骤,在源代码我我做出了标记,其实这原创 2016-10-01 09:47:59 · 5471 阅读 · 1 评论 -
Directx11基础教程一之Directx11框架
首先,我已经有一定的D3D11的基础,《Introduction to 3D Game Programming with Direct3D 11》,我已经具备D3D11入门水平了,我决定用D3D11龙书和http://www.rastertek.com/tutindex.html 给的教程一路做下来,主要学习方式打算是这样:看D3D11龙书,但实现是在http://www....原创 2016-09-27 17:15:35 · 13176 阅读 · 1 评论 -
D3D11之缓存更新(update buffer)
话说这两天我写程序遇到一个bug,是关于如何创建的ID3D11Buffer的应该以一种怎样的方式在每帧渲染进行缓存资源的更新我总结为下:原创 2016-10-06 14:41:57 · 4355 阅读 · 0 评论 -
XNAMath之XMMATRIX
(注:【D3D11游戏编程】学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~) 在熟悉了XMVECTOR的风格及规则之后,再来了XNA数学库中的矩阵就容易得多了。基本上可以跟向量相类比。 一、 矩阵类型 XNA数学库中针对矩阵的类型为XMMATRIX。这转载 2016-10-30 21:39:20 · 897 阅读 · 0 评论 -
Directx11的XMVECTOR使用规则
这是转载博主“”iceguner“”的文章,感觉讲的挺细的一、XMVECTOR简介 XNAMath 是DirectX11后新加入的一个数字格式库,建立在SIMD指令集上。 在XNA数字库中核心向量是XMVECTOR因为XMVECTOR是直接映射SIMD硬件上的128位寄存器,所以其他变量需要做运算时,需要全部转换成XMVECTOR形式再进行运算最后得出转载 2016-10-01 22:18:33 · 4713 阅读 · 1 评论 -
D3D11的HLSL内置函数
这里转载一篇别人博客的方便查阅HLSL函数吧函数名说明abs计算输入值的绝对值。acos返回输入值反余弦值。all测试非0值。any测试输入值中的任何非零值。asin返回输入值的反正弦值。atan返回输入值的反正转载 2016-10-13 01:51:47 · 1068 阅读 · 0 评论 -
Directx11教程六之AmbientLight
这节教程的框架跟DiffuseLight那节教程的框架差不多,也就是灯光常量缓存那里改变和PixelShader改变了, 首先说一点,首先AmbientLight,DiffuseLight,SpecualrLight都是局部光照,而其中DiffuseLight,SpecualrLight在游戏场景中经常照射不到某些地方造成一片黑暗,为了近似模拟现实世界,就用AmbientL原创 2016-10-06 14:00:48 · 1625 阅读 · 1 评论