自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

翻译 Vulkan Tutorial(2)

Create a (Logical) Device这一节对应的代码文件为 03-init_device.cpp。下一步是创建一个 VkDevice 类型的逻辑设备对象,对应于系统中的其中一个物理设备。该逻辑设备是后面用于把图形命令指示给硬件的一个关键对象。到目前为止,我们的示例已经确定了你有多少个物理设备。示例中用于枚举设备的通用函数已确保系统中至少包含一个物理设备,否则该示例会出现判断为否的断言而

2016-11-10 23:47:55 1329 1

翻译 Real-Time Rendering-第五章 Visual Appearance

第五章 Visual Appearance(视觉外观) “A good picture is equivalent to a good deed.” \qquad—Vincent Van Gogh当你渲染三维模型的图像时,模型不仅应该具有正确的几何形状,还应该具有期望的视觉外观。在很多情况下(但不是全部 - 见第11章)渲染的目标是达到 photorealism(如照片一般写实)的效果—

2016-11-01 23:16:50 1341

翻译 Real-Time Rendering-第四章 Transforms(5)

4.6 Projections在进行真正的场景渲染之前,必须把场景中的所有相关对象都投影到某个平面上或某种简单的包围体内。完成投影之后,就开始执行裁和渲染操作(见第2.3节)。到目前为止,本章中的变换操作都没有使用到向量的第四个元素分量,ww-分量。也就是说,点和向量在变换后依然为保持为原来的类型。另外,4×44\times4 矩阵的最下面一行元素始终为 (0  0  0  1)(0\ \ 0\ \

2016-10-31 13:32:48 2623

翻译 Vulkan Tutorial

Welcome to the Vulkan Samples Tutorial本教程分为多个部分,对应于创建一个简单的Vulkan程序所需要的基本步骤。教程的每一部分直接对应于LunarG示例完成进度中的一个示例程序,并且被设计成可以根据示例的开发进度查看并测试实际代码。Tutorial Index(教程索引)IntroductionInstanceEnumerate DevicesDevic

2016-10-29 00:15:19 4511

翻译 Getting Started with the Vulkan SDK

Getting Started with the Vulkan SDKWindows版使用教程LunarG Vulkan SDK提供了构建,运行和调试Vulkan应用程序所需的开发和运行时组件。此SDK基于Khronos Vulkan API标头,其版本反映在Vulkan SDK版本号中(例如,SDK版本1.0.21.0表示SDK使用Vulkan标头版本1.0.21)。 SDK还包括用

2016-10-24 17:55:15 3882

翻译 Real-Time Rendering-第四章 Transforms(4)

4.4 Vertex Blending想象一下数字人物的一只手臂通过两个部分,前臂和上臂产生的动画,如图4.10所示。这种动画模型可以使用刚体变换表示(见4.1.6节)。但是,使用刚体时手臂两个部分之间的关节无法组成真正的肘。这是因为使用了两个独立的对象,并且关节是由这两个独立对象的重叠部分组成的。很显然,使用单个的对象会更好一点。但是,静态模型的部分无法解决关节灵活性的问题。Vertex blen

2016-10-23 22:04:29 1334

翻译 Real-Time Rendering-第四章 Transforms(3)

4.3 Quaternions虽然四元数早在1843年就由William Rowan Hamilton先生发明出来用于表示复数的扩展,但是直到1985年才由Shoemake[1176]把四元数引入到了计算机图形学领域。四元数是构建具有强大功能的变换操作的一个有力工具,而且在某些方面,四元数是比欧拉角度和矩阵更好的计算方式,特别是在旋转操作和方位计算方面。给定一个 轴&角度 的表示形式,转变成一个四元

2016-10-11 00:01:03 1871

翻译 Real-Time Rendering-第四章 Transforms(2)

4.2 Special Matrix Transforms and Operations在这一节,将会介绍并推导出在实时图形中大量必不可少的矩阵变换和操作。首先,我们给出了Euler transform(欧拉变换,以及从中提取的参数),这一种描述物体朝向的直观表示方法。然后,我们会涉及到从单个矩阵中获取一组基本变换。最后,推导出一种围绕任意轴旋转一个实体的方法。

2016-09-30 13:20:31 1159

翻译 Real-Time Rendering-第四章 Transforms

第四章 变换(Transforms) ”What if angry vectors veer Round your sleeping head, and form. There’s never need to fear Violence of the poor world’s abstract storm.“ —Robert Penn Warren变换是指对实体如点,向

2016-09-24 13:18:38 1457 4

翻译 Real-Time Rendering-第三章 The Graphics Processing Unit(2)

3.4 The Vertex ShaderVertex shader是图3.1所示的functional管线中的第一个阶段。由于这是执行任何图形处理的第一个阶段,因此在该阶段之前所进行的一些数据操作是毫意义的。在DirectX中,把vertex shader之前的阶段称为input assembler[123,261],在该阶段可以把大量的数据流组织在一起形成顶点和图元的集合,并发送到下一个管线阶段

2016-09-19 00:21:03 1412

翻译 Real-Time Rendering-第三章 The Graphics Processing Unit

第三章 图形处理单元(GPU)从历史上看,在管线的最后阶段已经开始使用硬件图形加速,首先用于执行三角形扫描线的光栅化。在接下来的几代硬件中又重新回到了管线内部,直到最后在硬件加速中直接实现了一些上层application阶段的算法。相对于软件的实现方式,使用特定硬件的唯一优势是运行速度,但是速度恰好是至关重要的。

2016-09-11 22:09:23 1603

翻译 Real-Time Rendering-第二章 The Graphics Rendering Pipeline

第二章 The Graphics Rendering Pipeline(图形渲染管线) “A chain is no stronger than its weakest link.” —Anonymous本章主要介绍实时图形学中公认为最核心的部分,称为graphics rendering pipeline,也可以简称为管线。管线的主要功能是根据场景中给定的虚拟相机,三维物体,光源,阴影计

2016-08-31 00:08:21 2029

翻译 Real-Time Rendering-附录B 三角函数

Appendix B Trigonometry(附录B 三角函数) “Life is good for only two things, discovering mathematics and teaching mathematics.” -Simeon Poisson附录B部分的内容旨在作为一些简单的三角函数定理的参考,同时还包含一些更复杂的定理公式。三角函数定理是计算机图形学中特别

2016-08-30 00:27:48 1067

翻译 Real-Time Rendering-附录A 线性代数(2)

A.3 Matrices(矩阵)这一节主要讲述关于矩阵的定义,以及一些常用的矩阵运算。尽管在附录中(主要)讨论任意大小的矩阵,但是在本书的正文章节中将会使用2×22\times 2,3×33\times3以及4×44\times4的方阵。在第4章讲解了使用矩阵处理变换操作的方法。A.3.1 Definition and Operrations(矩阵的定义及操作)一个矩阵M\mathbf{M}可以作为

2016-08-22 23:59:44 2098

翻译 Real-Time Rendering-附录A 线性代数

Appendix A Some Linear Algebra(附录A 部分线性代数知识) A point is that which has no part. A line is a breadthless length. The extremities of a line are points. A straight line is a line which lies eve

2016-08-19 21:59:12 2342

翻译 Real-Time Rendering-第一章 Introduction

第一章 Introduction(导论)实时渲染主要是有关使用计算机如何快速生成图像的过程,这是计算机图形学中最具有交互性的领域。交互性是指在屏幕上显示了一幅图像,观察者会据此作出某些行动或反应,并反馈给计算机以生成下一幅图像。当这种不断反应并渲染的循环过程执行的速度足够快时,观察就会沉浸在一种动态的变化过程中,而不是简单地看到多个单独的图像。图像显示的速度可以使用frames per second

2016-08-16 23:28:36 1655 5

原创 计算机图形学专业术语

在计算机图形学领域包含有大量的专业术语,为了避免翻译时产生歧义,本文主要列出翻译过程中遇到的术语,并附带简单的描述。

2016-08-16 00:05:37 3762

翻译 Data-Driven Engine Architecture

Data-Driven Engine Architecture在本书的所有示例程序中都是在代码中指定assets-models,textures和materials(模型,纹理,材质)。这种方法可以简化示例程序,但是在实际的现代渲染引擎中并不常用。相反,这些引擎都是data driven(数据驱动结构),由配置文件构成场景中的各种objects。一个data-driven引擎意味着在场景中没有任何数

2016-08-14 15:18:00 1284

翻译 Deferred Shading

Deferred Shading到目前为止,本书中所使用的渲染方法都是forward rendering,本质上来说是指独立渲染场景中的每一个objects,对于每一个object都要使用lights,textures以及shadows计算最终的pixels。另外,我们还探讨了single-pass rendering(用于一个object的所有光照都在一个shader中进行计算)和multipas

2016-08-13 11:46:08 3550 8

翻译 第二十二章 Additional Topics in Modern Rendering

第二十二章 Additional Topics in Modern Rendering这一章是全书的最后一章,旨在讨论作为一名图形程序员新手接下来需要学习哪些知识。因此,本章所讲述的内容与之前章节不同,主要是讨论一些现代渲染的相关主题,而不是深入讲解某个具体的图形技术。特别是讨论一些提高图形渲染应用程序性能的方法技巧,并探讨如何使用deffred shading和global illuminatio

2016-08-10 00:07:58 1347 3

翻译 A Basic Tessellation Demo

A Basic Tessellation Demo把前面几节所讲的triangle和quad tessellation shaders集成到应用程序中并不需要编写特别复杂的C++代码。总的来说,首先创建对应的materials与这两个shaders进行交互,然后创建用于表示单个triangle和quad的vertex buffers,并添加一些成员变量用于保存tessellation factors

2016-08-09 13:13:42 1005

翻译 Motivation:Tessellation Shaders

Motivation:Tessellation Shaders从DirectX 11开始,Direct3D中引入了硬件实现tessellation的功能。Tessellation是指对表面进行细分(subdivision of surfaces),进而增加一个表面的geometry数量来提高精度。这种方法支持把low-ploy models(表示模型具有较少的primitives)传递到GPU

2016-08-08 22:31:00 2183

翻译 第二十一章 Geometry and Tessellation Shaders

第二十一章 Geometry and Tessellation Shaders本章,我们将会使用Direct3D图形管线中两个新增的阶段:geometry和tessellation shaders。这两个管线阶段支持动态创建vertices,甚至在硬件层改变一个surface的topology(基本几何图元的拓扑结构)。此外,我们还会深入学习这两个管线阶段的工作流程,并通过一些示例程序实现各种

2016-08-07 20:12:07 3522 5

翻译 Animation Rendering

Animation Rendering在上一节完成了所有数据的导入,并建立了完整的动画模型支持系统,现在我们就可以开始渲染一个animation。渲染一个动画模型的主要基于以下4个步骤:1、推进当前时间。2、更新skeleton中每一个bone的tranformations。3、把更新后的bone transformations发送到skinned model shader中。

2016-08-06 23:52:43 1052

翻译 Importing Animated Models

Importing Animated Models在正式使用skinned model shader之前,需要先导入一个具体模型的动画数据。这是一个说起来容易做起来很难的任务,而且需要额外的plumbing(管道工程,对应于第15章导入模型时所讲的content pipeline)。值得庆幸的是,Open Asset Import Library(见第15章“Models”)支持动画模型,并且

2016-08-05 23:51:53 829

翻译 第二十章 Skeletal Animation

第二十章 Skeletal AnimationSkeletal animation(骨骼动画)是指互相连接的变换(骨头)组成的分层集合,以及对应的模型mesh(即骨骼的皮肤)。当这些变换随着时间变化而变化时,模型的mesh就会形成动画效果。本章,我们将会探讨skeketal animation,并开发一些系统用于支持模型动画。

2016-08-05 06:39:00 1133

翻译 Shadow Mapping

Shadow Mapping现在已经完成了实现shadow mapping所需要的所有模块。实际上,阴影映射的处理过程与投影纹理映射使用occlusion testing基本相同。首先,从光源投射的方向把场景渲染成一个depth map。然后从camera投射的方向渲染场景,并使用depth map作为输入用于确定一个object是否“位于阴影中”。列表19.8中列出了第一个shadow-mapping shader代码。

2016-08-04 00:54:06 2235 6

翻译 第十九章 Shadow Mapping

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

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

翻译 Bloom

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

2016-07-30 14:59:53 2399

翻译 Gaussian Blurring

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

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

翻译 Color Filtering

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

2016-07-28 23:27:19 1083

翻译 第十八章 Post-Processing

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

2016-07-28 23:21:50 6815

翻译 第四部分: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 696 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 926

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

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

翻译 第十六章 Materials

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

2016-07-25 23:29:21 1519

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

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

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

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

2016-07-24 16:14:20 838

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关注的人

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