Rendering with DirectX && HLSL
文章平均质量分 87
chenjinxian_3D
这个作者很懒,什么都没留下…
展开
-
Color Blending
Color Blending在environment mapping和fog effects中,在生成最终的颜色时,就对颜色进行了blend(混合)操作。而且这种混合是在相同的pixel shader中执行的,因此在render target中不会出现两种独立的颜色;而一种混合色。但是color blending是一种不同的混合形式,应用于当frame buffer中某个指定pixel已经翻译 2016-07-10 22:38:35 · 3042 阅读 · 0 评论 -
第二部分:Shader Authoring with HLSL(使用HLSL编写开发shader)
第4章 Hello, Shaders!第5章 Texture Mapping第6章 Lighting Models第7章 Additional Lighting Models第8章 Gleaming the Cube第9章 Normal Mapping and Displacement Mapping翻译 2016-07-01 20:26:47 · 1453 阅读 · 0 评论 -
第一部分:An Introduction to 3D Rendering
1 Introducing DirectX2 A 3D/Math Primer3 Tools of the Trade翻译 2016-06-26 10:55:22 · 1461 阅读 · 0 评论 -
第九章 Normal Mapping and Displacement Mapping
第九章 Normal Mapping and Displacement Mapping翻译 2016-07-11 21:43:23 · 3772 阅读 · 4 评论 -
DirectXMath
DirectXMathDirectXMath微软为图形应用程序提供的数学库,支持SIMD的,C++形式的API。SIMD是Single Instruction Multiple Data(单指令多数据)的简称,支持只用一个CPU指令,同时处理多个数据。比如,在Windows平台下SIMD指令可以同时处理4个32位的浮点数,带来了显著的性能提升。例如,两个向量相加,每个向量都有4个分量,通常需要翻译 2016-06-29 21:17:11 · 3730 阅读 · 0 评论 -
Fog
Fog接下来讨论的几种effects都与texture cubes不相关,但是可以帮助学习更多不一样的图形学技术。第一个要讨论的是fog,随着object到camera的距离不断增加,这种effect会让object逐渐模糊直到完全消失在背景色中。可以使用一种颜色,距离camera的一段距离来模块fog effect,这段距离用于表示从多远的距离开始产生fog,以及fog能够延伸到多远翻译 2016-07-10 11:58:21 · 1936 阅读 · 0 评论 -
第二章 A 3D/Math Primer
第二章 A 3D/Math Primer本章介绍3D图形学的数学知识。借用一句Douglas Adams的名言,“别慌张”。我们会讲述vectors(向量),Matrix(矩阵),coordinate systems(坐标系统),transformations(变换),以及DirectXMath数学库。即使你已经很熟悉线性代数的知识,我也希望你能审核一下DirectX相关的内容。否则,做个翻译 2016-06-27 21:47:06 · 1746 阅读 · 1 评论 -
The Direct3D 11 Graphics Pipeline
Direct3D 11图形管线 个人电脑一般都有两个处理器:CPU和GPU,你需要对每一个处理器编写代码。这两个部件拥有完全不同的架构和指令集。在图形编程中,你需要对两个处理器都都编写软件,对于CPU应用程序使用通用的语言,比如C++,对于GPU则使用HLSL。DirectX是系统之间的桥梁。大部分关于图形编程的文章都集中讲述CPU部分或者GPU部分,但是这两部分都是非常难懂的。翻译 2016-06-26 17:25:59 · 2575 阅读 · 1 评论 -
Environment Mapping
Environment MappingTexture cubes的另一种应用是environment mapping。Environment mapping也称为reflection mapping,用于近似模拟reflective surfaces(反光表面),比如汽车上的镀了一层金属物的保险杠。Environment mapping的处理过程比skybox稍微复杂一些,因为需要计算翻译 2016-07-09 17:27:29 · 2003 阅读 · 0 评论 -
第一章:Introducing DirectX
DirectX是一组API的集合,用于在微软平台上,包括Windows,Windows Phone,Xbox 360,以及Xbox One,开发游戏或图形相关的应用程序。DirectX从1990年代中期发展至今,并处于现在图形开发的前沿。Direct3D是DirectX里面一套3D图形API,是这本书主要讲述的。DirectX也包含了2D图形,输入,音频,文字渲染和GPU编程的系统支持。本章概述了翻译 2016-06-26 10:58:53 · 1469 阅读 · 2 评论 -
Putting It All Together
Putting It All Together现在已经有了Direct3D initialization的具体代码,可以开始创建第一个Direct3D应用程序了。翻译 2016-07-14 00:02:49 · 1680 阅读 · 0 评论 -
Software Services
Software Services在重点关注3D渲染之前,需要完成渲染引擎框架的最后一个模块:software services。一种service就是一个对象(可以是任何类型的对象),被用于其他软件系统中。例如,在应用程序的整个运行过程上都可能用到keyboard和mouse components,这些components就可以看成services。理论上是可以通过类的构造函数传参的方式或者翻译 2016-07-17 11:10:36 · 1033 阅读 · 0 评论 -
A First-Person Camera
A First-Person Camera现在开始扩展Camera基类,实现一个第一人称的camera,这种类型的camera可以通过鼠标和键盘进行控制。通过W和S键可以沿着direction向量分别向前和向后移动camera。按键A和D沿着right向量“扫射”(水平移动camera)。使用鼠标控制camera的俯仰和偏航移动:垂直移动鼠标执行camera的俯仰操作,水平移动鼠标执行came翻译 2016-07-18 22:23:13 · 1970 阅读 · 0 评论 -
A Point Light Demo
A Point Light DemoPoint light示例程序与diffuse light示例的代码非常相似。首先创建一个PointLightingMaterial类用于表示第7章所编写的PointLight.fx effect。在该effect中结合了Blinn-Phong specular highlighting(镜面高光)模型。PointLightMaterial中需要包含以下的变翻译 2016-07-27 22:22:18 · 891 阅读 · 0 评论 -
第十七章 Lights
第十七章 Lights本章将会开发一组类函数用于支持directional lights、point lights以及spotlights。这项工作完成了C++渲染引擎框的全部基础内容,并标志着第三部分“Rendering with DirectX”的结束。Motivation在第6章“Lighting Models”和第7章“Additional Lighting Models”翻译 2016-07-27 21:28:03 · 794 阅读 · 0 评论 -
Device Input
Device Input用于交互渲染的另一种支持系统是,响应输入设备的能力。在PC端,输入设备主要包括鼠标,键盘以及游戏手柄。本小节主要讨论鼠标和键盘输入,并创建相应的game components。获取设备的输入信息通常有两种方法:一种是通过定时轮询设备,另一种是等待设备在状态发生改变时的通知。具体选择使用什么方法,需要考虑输入状态发生改变的频率,轮询设备所需的成本,以及处理一个事件的成翻译 2016-07-16 21:20:23 · 2024 阅读 · 0 评论 -
第十二章 Supporting System
第十二章 Supporting System本章将讨论一些3D渲染之外的主题,创建一些支持组件用于完善渲染引擎。包括,实现键盘和鼠标输入的类,创建一个可复用组件系统用于在应用程序中添加更多的功能。还会讲解如何渲染文本,并创建一个服务容器用于存放一些常用的可访问软件模块。Game ComponentsGame components提供了一种在应用程序中添加功能的模块化方法,由翻译 2016-07-14 23:10:21 · 1284 阅读 · 5 评论 -
第六章 Lighting Models
第六章 Lighting Models在现实世界中,没有光照是无法看见东西的;一个物体能被看见,要么是通过反射光源,要么是自身发光。在使用计算机渲染时,模拟光线的交互可以使3D objects更逼真。但是光照的交互是一个非常复杂的过程,不能简单的在各种交叉的帧率之间进行复制(至少目前阶段还不行)。因此,使用光照与3D objects交互的近似值或光照模型,在场景中实现更多的细节。本章主要介翻译 2016-07-04 22:40:20 · 1186 阅读 · 2 评论 -
A Basic Effect Material
A Basic Effect Material理解材质系统结构最好的方法就是在应用程序中使用该系统。在这一节,我们将会创建一个material类用于表示BasicEffect.fx shader,并使用该类渲染一个sphere object。列表16.11列出了BasicMaterial类的声明代码,以及一个对应的BasicMaterialVertex结构体。列表16.11 The Bas翻译 2016-07-26 22:10:13 · 688 阅读 · 0 评论 -
第十六章 Materials
第十六章 Materials本章主要开发一组用于封装各种effects的类,以简化应用程序与effects的交互。然后通过编写一些示例程序用于演示这些类函数。最后再创建一个可复用的组件用于渲染skyboxes。Motivation如果你仔细阅读前面编写的几个示例代码(triangle,cube,model,textured model示例),就会发现在这几个示例中一些重复的代码,比如,翻译 2016-07-25 23:29:21 · 1440 阅读 · 0 评论 -
Window Initialization
Window Initialization与所有Microsoft Windows程序一样,DirectX游戏和图形应用程序也需要通过窗口来显示,必须通过调用Windows API来创建这些窗口。列表10.5列出了Game类的头文件,主要包含了用于window initialization的成员。在第11章,“Direct3D Initialization”Game类中将会增加用于initia翻译 2016-07-13 00:02:08 · 780 阅读 · 0 评论 -
Texture Filtering
Texture Filtering在讨论纹理坐标和采样时,你可能已经注意到了,没有一种纹理映射object能够做到使纹理图上的元素与渲染到屏幕上的像素之间一一对应。Camera位于textured object任意的位置,并从任意的角度观看。想像下这种情形,camera相对textured object进行放大,Rasterizer阶段确定哪些pixels会发送到pixel shader中,并翻译 2016-07-03 21:06:46 · 3989 阅读 · 1 评论 -
第五章 Texture Mapping
第五章 Texture Mapping纹理映射就是在3D object表面添加细节的过程。可以比喻成包装礼品的过程,包装纸就是一种2D纹理。纹理映射是现代渲染的基础,并用于多种有趣的图形技术中。 An Introduction to Texture Mapping相比如上一章使用HelloShaders和HelloShaders effects产生的纯色效果,通常情况你会期望在3D翻译 2016-07-03 20:55:32 · 2169 阅读 · 0 评论 -
Asset Loading
Asset Loading有了Model,Mesh以及ModelMaterial类的声明之后,就可以讨论如何把assets文件加载到这些类中。这正是要使用Open Asset Import Library的地方。Loading Models在我们自己编写的模型系统中,Model类是顶层接口,与些类似,在Open Asset Import Library中,aiScene类是用于数据导入翻译 2016-07-24 20:30:28 · 1286 阅读 · 3 评论 -
第十五章 Models
第十五章 Models本章,主要讲解如何在应用程序中使用3D模型。将会集成一个第三方库用于导入多种类型的文件格式,并编写一组类函数用于在程序运行过程中表示3D模型。在学习过程上,你将会得到更多关于创建DirectX应用程序的实际动手经验。Motivation到目前为止,已经编写了两个Direct3D应用程序,但是都是通过手动指定vertices和indices的方法,我们需要想想怎么使翻译 2016-07-22 00:13:18 · 1405 阅读 · 5 评论 -
第四章 Hello,Shaders
第四章 Hello,Shaders本章,会编写第一个shaders。介绍HLSL语法,FX文件格式,数据结构等等。学完本章,你就具备了深入学习图形编程的基础知识。Your First Shader使用一种新的编程语言编写第一个程序时都会使用经典的编程例子“Hello,World!”,程序输出就是一行文字“Hello,World!”。我们遵守这一历史悠久的传统,编写第一个shad翻译 2016-07-02 17:57:11 · 4800 阅读 · 4 评论 -
第十一章 Direct3D Initialization
第十一章 Direct3D Initialization本章将完成渲染引擎的基础部分的最后一个模块Direct3D的初始化,学习Direct3D C++ API,并完成一个Direct3D应用程序。在此过程中,会回顾以前章节讨论的知识,包含DirectX sawp chain和depth/stencil buffering。Initializing Direct3D根据下面翻译 2016-07-13 21:22:10 · 3451 阅读 · 0 评论 -
Visual Studio Graphics Debugger
Visual Studio Graphics DebuggerVisual Studio Graphics Debugger(VS图形开发调试工具)支持在VS2013IDE中动态调试shaders。如果你熟悉之前版本的DirectX,你可能使用过图形调试工具PIX。Visual Studio Graphics Debugger已经取代了PIx但是基本的工作流程保持一致。警告:V翻译 2016-07-01 20:14:54 · 6061 阅读 · 1 评论 -
Real-Time 3D Rendering with DirectX and HLSL
介绍:图形编程是视频游戏,电影和科学模拟仿真背后的魔法。你在计算机屏幕上看到的每一个爆炸,颗粒以及眩光都是使用视频卡处理的。此外,你看到的每一个像素点都是通过GPU渲染和图形编程人员软件实现的,因为现代操作系统使用GPU绘制。这是一个广泛的话题,但一直以来只属于少数领域。甚至有经验的软件开发人员,通常认为渲染是一门高深的艺术,充满了复杂的数学工具和深奥的工具。另外,现代图形学的快速发展使得图形翻译 2016-06-26 07:47:29 · 3964 阅读 · 5 评论