自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (15)
  • 收藏
  • 关注

翻译 第十九章 Shadow Mapping

第十九章 Shadow Mapping本章,我们将会学习如何渲染阴影(shadows)。同时还会介绍depth maps(深度纹理,2D纹理中存储了深度值而不是颜色值)和projective texture mapping(投影纹理映射,想像下Batman(蝙蝠侠) signal)。另外,在渲染阴影时还会遇到一引起常见的问题,我们需要确定如何解决这些问题。Motivation阴影我们视

2016-07-31 21:45:07 1831 8

翻译 Bloom

Bloom高斯模糊effect有各种各样的应用。比如,可以用于区分场景中背景objects(通过模糊处理使得objects呈现出一种失去焦点的现象)和前景objects(没有模糊处理)。另外还可以用于bloom(曝光) effect中,一种bloom effect通过增强场景中明亮的区域来模拟真实世界中的照相机。图18.6显示了在一个场景中使用曝光(上图)和不使用曝光effect的输出结果。

2016-07-30 14:59:53 2384

翻译 Gaussian Blurring

Gaussian BlurringColor filtering只是使用post-processing生成的众多effects中的一种。另一种常用的technique是对渲染texture进行模糊(blur)处理。有多种方法可以实现模糊的效果,在本书上主要使用Gaussian blurring(高斯模糊),这种方法的名称来自于高斯方程(也称为正态分布),主要用于图像模糊处理。图像模糊处理是

2016-07-29 17:01:26 1788 3

翻译 Color Filtering

Color Filtering现在我们使用FullScreenRenderTarget和FullScreenQuad类编写一个color filter演示程序。一个color filter就是以某种方法修改输出的颜色值。如果你曾经佩戴过彩色的眼镜,你就已经见过color filtering的效果。在这个示例程序中,我们将会编写多个color filter shaders,包括grayscale

2016-07-28 23:27:19 1072

翻译 第十八章 Post-Processing

第十八章 Post-ProcessingPost-processing是指在场景渲染之后,使用一些图形技术对场景进行处理。比如,把整个场景转换为grayscale(灰度)样式或使场景中明亮的区域发光。本章将编写一些post-processing effects,并集成到C++渲染引擎框架中。Render Targets到目前为止,所有的示例程序都是直接把场景渲染到back buffer

2016-07-28 23:21:50 6787

翻译 第四部分:Intermediate-Level Rendering Topics

第四部分:Intermediate-Level Rendering Topics章节链接:第18章 Post-Processing第19章 Shadow Mapping第20章 Skeletal Animation第21章 Geometry and Tessellation Shaders第22章 Additional Topics in Mod

2016-07-27 22:32:13 689 2

翻译 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 917

翻译 第十七章 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 835

翻译 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 708

翻译 第十六章 Materials

第十六章 Materials本章主要开发一组用于封装各种effects的类,以简化应用程序与effects的交互。然后通过编写一些示例程序用于演示这些类函数。最后再创建一个可复用的组件用于渲染skyboxes。Motivation如果你仔细阅读前面编写的几个示例代码(triangle,cube,model,textured model示例),就会发现在这几个示例中一些重复的代码,比如,

2016-07-25 23:29:21 1494

翻译 A Model Rendering Demo

A Model Rendering Demo现在我们开始编写一个示例程序,用于演示上一节讲述的模型系统。在该示例中,渲染一个只包含单个mesh的sphere模型。该模型(Shpere.obj)存储一个Wavefront OBJ格式的文件中,可以在本书配套网站上获取。渲染时还会使用BasicEffect.fx文件(BasicEffect中没有使用纹理,只是对vertex colors进行插值计算

2016-07-24 23:06:40 1183

翻译 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 1334 3

原创 图形引擎(四):创建自定义的Camera

图形引擎(四):创建自定义的Camera上一篇文章中,已经讨论了如何在应用程序中添加组件,并完成了对输入设备如键盘和鼠标的响应操作,本篇文章中将讲解如何使用鼠标和键盘控制场景。任何一个3D场景中都需要使用一个虚拟Camera用于显示,根据Camera的坐标位置和观察方向的不同,可以观察场景的不同角度。为此,我们将会创建一个基础的Camera类,包含了Camera的基础功能属性,然后在此基础

2016-07-24 16:14:20 821

翻译 第十五章 Models

第十五章 Models本章,主要讲解如何在应用程序中使用3D模型。将会集成一个第三方库用于导入多种类型的文件格式,并编写一组类函数用于在程序运行过程中表示3D模型。在学习过程上,你将会得到更多关于创建DirectX应用程序的实际动手经验。Motivation到目前为止,已经编写了两个Direct3D应用程序,但是都是通过手动指定vertices和indices的方法,我们需要想想怎么使

2016-07-22 00:13:18 1455 5

原创 图形引擎(三):添加应用程序中的各种组件

图形引擎(三):添加应用程序中的各种组件在进一步学习Direct3D渲染之前,我们首先在应用程序中添加一些组件,用于完善图形引擎。组件主要分为两种:一种是基本的GameComponent类用于完成一些控制操作,另一种是在些基础上扩展的DrawableGameComponent类,用于执行绘制操作。在这一步,我们主要添加三个组件,分别为FpsComponent,Keyboard,Mous

2016-07-21 23:16:00 996

翻译 An Indexed Cube

An Indexed Cube接下来,通过再创建一个示例结束本章的内容,在这个例子中,使用一个index buffer渲染一个3D立方体。要创建一个CubeDemo类,只需要简单地复制TriangleDemo类的代码,并增加一个ID3D11Buffer指针类型的的成员变量mIndexBuffer。该变量用于存储访问vertex buffer的indices数组。回顾一下第1章“In

2016-07-21 22:51:08 760

翻译 Rendering a Triangle

Rendering a Triangle完成了上面的工作之后,现在可以准备绘制一个简单的三角形了。渲染一组nonindexed primitives(比如,一个三角形不需要带有index buffer)的步骤如下:1. 设置input-assembler阶段所使用的primitive的topology顺序。2. 把input layout绑定到input-assembler阶段。3. 把vertex buffer绑定到input-assembler阶段。4. 设置所有的shader consta

2016-07-19 23:44:45 978

翻译 第十四章 Hello, Rendering

第十四章 Hello, Rendering现在,终于完成了应用程序的基础框架,并开发了足够的代码以用于渲染工作。本章将会实现第一个完整的3D应用程序。并使用大量的Direct3D和Effects 11 API函数。完成这些工作之后,将会更深入的理解Direct3D图形管线。Your First Full Rendering Application现在正式开始在屏幕上渲染第一个3D ob

2016-07-19 22:28:27 1532

翻译 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 2024

翻译 第十三章 Cameras

第十三章 Cameras

2016-07-18 21:29:14 1461

翻译 Software Services

Software Services在重点关注3D渲染之前,需要完成渲染引擎框架的最后一个模块:software services。一种service就是一个对象(可以是任何类型的对象),被用于其他软件系统中。例如,在应用程序的整个运行过程上都可能用到keyboard和mouse components,这些components就可以看成services。理论上是可以通过类的构造函数传参的方式或者

2016-07-17 11:10:36 1093

原创 图形引擎(二):初始化Direct3D

图形引擎(二):初始化Direct3D在上篇文章中,已经讲述了工程的详细配置,并创建了一个基础的Windows窗口程序。现在开始,添加图形引擎的渲染部分,创建Direct3D程序。在这个引擎中,主要使用DirectX 11.1进行图形渲染部分的开发,如果你更喜欢使用Direct3D其他的版本,或者OpenGL,可以自行实现。初始化Direct3D根据下面的步骤执行Direct3D的

2016-07-16 21:57:02 1591

翻译 Device Input

Device Input用于交互渲染的另一种支持系统是,响应输入设备的能力。在PC端,输入设备主要包括鼠标,键盘以及游戏手柄。本小节主要讨论鼠标和键盘输入,并创建相应的game components。获取设备的输入信息通常有两种方法:一种是通过定时轮询设备,另一种是等待设备在状态发生改变时的通知。具体选择使用什么方法,需要考虑输入状态发生改变的频率,轮询设备所需的成本,以及处理一个事件的成

2016-07-16 21:20:23 2111

原创 图形引擎(一):创建Windows应用程序

图形引擎(一):创建Windows应用程序本章主要讲述建立一个渲染引擎所需要的基础知识。包括创建一个Visual Studio工程,实现游戏循环,并最终在显示器上显示一个窗口。A New Beginning本章正式开始讲解C++编程(本书中使用C++集中讲解DirectX API的章节),重要的是,不要期望能迅速学会渲染一些场景到屏幕上。简单地说,要学会这些需要一段

2016-07-15 17:34:56 2227

翻译 第十二章 Supporting System

第十二章 Supporting System本章将讨论一些3D渲染之外的主题,创建一些支持组件用于完善渲染引擎。包括,实现键盘和鼠标输入的类,创建一个可复用组件系统用于在应用程序中添加更多的功能。还会讲解如何渲染文本,并创建一个服务容器用于存放一些常用的可访问软件模块。Game ComponentsGame components提供了一种在应用程序中添加功能的模块化方法,由

2016-07-14 23:10:21 1342 5

翻译 Putting It All Together

Putting It All Together现在已经有了Direct3D initialization的具体代码,可以开始创建第一个Direct3D应用程序了。

2016-07-14 00:02:49 1724

翻译 第十一章 Direct3D Initialization

第十一章 Direct3D Initialization本章将完成渲染引擎的基础部分的最后一个模块Direct3D的初始化,学习Direct3D C++ API,并完成一个Direct3D应用程序。在此过程中,会回顾以前章节讨论的知识,包含DirectX sawp chain和depth/stencil buffering。Initializing Direct3D根据下面

2016-07-13 21:22:10 3618

翻译 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 826

翻译 The Game Loop

The Game LoopGame loop是一种循环系统,不断调用刷新场景中的objects并绘制到显示器上。通常情况下,在程序启动后不久就初始化并执行game loop,而且一直运行到程序结束。有各种各样的game loop设计,图10.8描述了一种最基础的设计。图10.8 A basic game loop.从代码的角度看,这种game loop设计与列表10.2的相同

2016-07-12 23:43:33 1040

翻译 第十章 Project Setup and Window Initialization

第十章 Project Setup and Window Initialization本章主要讲述建立一个渲染引擎所需要的基础知识。包括创建一个Visual Studio工程,实现游戏循环,并最终在显示器上显示一个窗口。A New Beginning本章正式开始讲解C++编程(本书中使用C++集中讲解DirectX API的章节),重要的是,不要期望能迅速学会渲染一些场景到

2016-07-12 21:51:34 1932

翻译 第三部分:Rendering with DirectX

第10章 Project Setup and Window Initialization第11章 Direct3D Initialization第12章 Supporting Systems第13章 Cameras第14章 Hello, Rendering!第15章 Models第16章 Materials第17章 Lights

2016-07-12 13:21:14 986

翻译 Displacement Mapping(移位贴图)

Displacement Mapping(移位贴图)

2016-07-11 23:47:16 15946

翻译 第九章 Normal Mapping and Displacement Mapping

第九章 Normal Mapping and Displacement Mapping

2016-07-11 21:43:23 3907 4

翻译 Color Blending

Color Blending在environment mapping和fog effects中,在生成最终的颜色时,就对颜色进行了blend(混合)操作。而且这种混合是在相同的pixel shader中执行的,因此在render target中不会出现两种独立的颜色;而一种混合色。但是color blending是一种不同的混合形式,应用于当frame buffer中某个指定pixel已经

2016-07-10 22:38:35 3109

翻译 Fog

Fog接下来讨论的几种effects都与texture cubes不相关,但是可以帮助学习更多不一样的图形学技术。第一个要讨论的是fog,随着object到camera的距离不断增加,这种effect会让object逐渐模糊直到完全消失在背景色中。可以使用一种颜色,距离camera的一段距离来模块fog effect,这段距离用于表示从多远的距离开始产生fog,以及fog能够延伸到多远

2016-07-10 11:58:21 1965

翻译 Environment Mapping

Environment MappingTexture cubes的另一种应用是environment mapping。Environment mapping也称为reflection mapping,用于近似模拟reflective surfaces(反光表面),比如汽车上的镀了一层金属物的保险杠。Environment mapping的处理过程比skybox稍微复杂一些,因为需要计算

2016-07-09 17:27:29 2064

翻译 Skyboxes

Skyboxes一个texture cube常见的一种应用是,把围绕camera的texture cube映射到一个skybox,box或者一个sphere上,并产生一种场景环境的视觉。列表8.1列出了一种skybox effect的代码。列出8.1 Skybox.fx/************* Resources *************/cbuffer CBuffe

2016-07-09 14:00:35 1032

翻译 第八章 Gleaming the Cube

第八章 Gleaming the Cube本章介绍图形学相关主题的分类,主要包括skybox rendering,environment mapping,fog,以及color blending(天空的渲染,背景环境的纹理映射,雾境,颜色混合)。前两种effects有一个共同点:都是通过texture cubes实现的。学习这些知识将会让你在图形学的道路上走得更远。Text

2016-07-09 12:02:57 1127

翻译 Multiple Lights

Multiple Lights到目前为止,所有的effect中都只使用了一种光源(不算ambient light)。但没有理由说明不能在同一种effect中结合使用directinal,point和spotlights,或者多个相同类型的光源。同时使用多个光源主要瓶颈在于性能问题以及一个shader模型中可用的指令数量。列表7.4和7.5列出了支持多种光源的effect的代码。这段代码没什

2016-07-09 08:28:49 1667

翻译 Spotlights

Spotlights一个spotlight是一个directional light和point light的组合。在world space中有一个坐标位置,但是光线只能照射到某个特定方向。另外,spotlight与point light一样,也是根据距离而衰减,但spotlight还会围绕光线的原始方向而衰减。可以把spotlight看作一个虚拟的手电筒,形成一个focus beam(聚焦

2016-07-08 17:50:20 1035

RenderEngine(Assets资源文件)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-08-08

RenderEngine

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-08-08

Realtime3DRenderWithHLSL源码(Chapter17)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-08-04

Realtime3DRenderWithHLSL源码(Chapter16)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-07-27

Realtime3DRenderWithHLSL源码(Chapter15)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-07-25

Realtime3DRenderWithHLSL源码(Chapter14)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-07-25

Realtime3DRenderWithHLSL源码(Chapter14)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-07-25

Realtime3DRenderWithHLSL源码(Chapter13)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-07-24

Realtime3DRenderWithHLSL源码(Chapter12)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-07-20

Realtime3DRenderWithHLSL源码(Chapter11)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-07-16

Realtime3DRenderWithHLSL源码(Chapter10)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-07-15

Realtime3DRenderWithHLSL源码(Chapter9)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-07-12

Realtime3DRenderWithHLSL源码(Chapter8)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-07-12

Realtime3DRenderWithHLSL源码(Chapter7)

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-07-08

Realtime3DRenderWithHLSL源码

http://blog.csdn.net/chenjinxian_3D/article/category/6285650 博客配套学习代码

2016-07-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除