Graphics
文章平均质量分 70
就不告诉你1111
这个作者很懒,什么都没留下…
展开
-
MSAA 的基本原理
Multi-sample Anti-Aliasing(MSAA)是DirectX内部集成的一种AA方法,类似于SSAA,它会在更细的精度上采样pixel,从而减少三角形边缘的锯齿。MSAA的基本原理如下:上图中,黑色方块代表了一个pixel,中间的圆点代表了这个pixel的中心,其余的四个叉是采样的位置,称之为sample吧(这些位置一般是由硬件自己实现的)。三角形在光栅化的时候,只要原创 2013-04-01 16:06:50 · 16512 阅读 · 4 评论 -
把渲染器中加入了stereo vision算法
上周末突然好奇3d电影的成像原理,就研究了一下,发现和ray tracing里面的景深算法有些异曲同工之处。就自己实现了一下,分别实现了ray tracing和raster的版本。最近也比较忙,也不打算详细描述stereo vision的算法细节了,实际并不复杂。光线跟踪中,需要改变下光线生成的代码。而光栅化中,则只需要改变相应的投影矩阵(当然,这个投影矩阵是没有现成的d3dxperspe原创 2012-11-10 10:28:34 · 3684 阅读 · 3 评论 -
Path tracing 实现
渲染器已经断断续续做了三个月的时间了,加了一些基本的功能。这周加入了path tracing算法和OpenMP多线程支持。贴几张图Path tracing收敛速度实在是慢啊....还好OpenMP用起来比较简单,几行代码就可以把程序并行了。原创 2011-09-02 17:49:27 · 8335 阅读 · 2 评论 -
Uniform Grid , KD-Tree , BVH 性能比较
Ray tracing中,每条光线都需要和场景中所有的图元求交(这里我们假设所有的图元都是三角形)。Brute force的方法就是一点一点的遍历每个图元,然后找出与光线交点距离光线起始点最近的图元,当然这种方法的算法复杂度是O(N)的,对于少量的图元还可以,如果图元数量很多,光原创 2011-07-25 20:49:05 · 7514 阅读 · 0 评论 -
在离线渲染器中应用MERL BRDF
BRDF(Bidirectional Reflection Density Function),即入射光线的irradiance和出射光线的radiance的比值,在图形学中被用来描述物体的表面反射属性,BRDF的值一般来说由几个参数决定,入射光线的角度、出射光线的角度、光谱以及原创 2011-07-14 22:50:45 · 6074 阅读 · 4 评论 -
Anti-Aliasing (SSAA , MSAA , MLAA , SRAA) 简介
前两天在浏览游民星空的时候,小编居然在文章中挂了一篇技术文章,是关于SRAA的。对于AA的了解很少,正好入职之前还有几天的空闲时间,所以就这个机会把AA的一些基本算法简单学习了一下,不过也只是学习到了一点皮毛而已。 本文将简单介绍四种反走样算法,他们分别是: SSAA: Super Sampling Anti-Aliasing MSAA: Multi Sampling Anti-Aliasing MLAA: Morphological Anti-Aliasing SRAA: Su原创 2011-04-09 23:23:00 · 24226 阅读 · 2 评论 -
PCSS 简介
本文简单介绍一下Percentage Closer Soft Shadow的原理,由于本人对于这个东西理解很浅,所以有些想法可能是不成熟的。 谈到PCSS,首先我们要介绍一下PCF(Percentage Closer Filtering),最早在1987年就被人提出的一种过虑算法,当时作者的初衷是用这种算法来改变Shadow Map的走样问题。 我把SDK中的Shadow Map简单改了一下,生成了上面两幅图片。左边的渲染图是经过PCF处理的,而右边是最普通的shadow map算法(原创 2011-04-05 13:50:00 · 18930 阅读 · 4 评论 -
AMD显卡中的Hyber-Z的工作原理
本文简单总结了Emil Persson的文章Depth in Depth的一些内容,基本上是关于光栅化管线中的Z compare部分的一些工作原理以及优化方法。由于文章很早了,所以最新的硬件可能会有一些更好的特性,但是这些理解这些基本内容还是有一定好处的。 光线跟踪中,三角形的剔除是通过找到与光线的最近交点搞定的,从某种意义上说,空间划分结构(例如KD树)起了很大的作用。而光栅化采用了一种完全不同的工作原理,即深度缓冲。这种机理的好处在于工作效率较高,而且从正确性来说基本可以满足要求(当然,如果nea原创 2011-03-17 21:19:00 · 3623 阅读 · 0 评论 -
PBRT学习笔记: 颜色在离线渲染中的表示方法
本文简单总结下PBRT中的第五章的前半部分,是关于光谱的一些内容。这部分的内容相对而言比较独立,不受其他模块的制约。 计算机是一个有限的资源,我们的显示器同样是只能表示有限的信息量。举个简单的例子,对于一个普通的LCD 22寸的显示器而言,假设分辨率是1650*1080,而每个pixel只能表现出2的24次幂种不同的颜色,那么实际上一个屏幕最多能表示的信息也就是1650*1080*(2^24)。这里我们抛开分辨率不谈,只考虑一个pixel所能表示的信息量,其实只有2^24种不同颜色的表现能力。而我们现原创 2011-03-18 15:56:00 · 4152 阅读 · 1 评论 -
PBRT学习笔记: KD树的一点优化技巧
KD树作为光线跟踪的加速结构,一直以来是光线跟踪中的一个研究热点。一个高效的KD树对于光线跟踪算法具有非常重要的意义。本文简单总结下PBRT中的KD树的一些有价值相关内容。首先,我们看一下PBRT中的KD树的一些重要内容,然后会解释其中的一部分内容: 1. 该KD树是基于SAH模型的。KD树的创建算法的复杂度是O( n * log(n)2 )的,这个复杂度在单核算法中不并不是最好的,是一种基于入度和出度的创建算法。On building fast kd-trees for ray tracing, a原创 2011-02-02 16:00:00 · 9082 阅读 · 2 评论 -
PBRT学习笔记:光线跟踪中的景深算法
景深是人眼视觉系统中的一种自然现象。同样,相机里面也有景深的效果,这是由于相机的成像光圈的半径是有一定大小的,从而导致了成相平面中的某些点可以‘看到’镜头外面的一部分场景,而这些场景的共同作用,导致了一种模糊现象。 景深的效果在计算机图形学中被应用广泛,电影,游戏里面经常会利用景深特效来强调画面重点。相应的,已经有了很多成熟的算法在不同的渲染方法上,光栅化可以很高效的实现景深的算法。而本文将简单介绍景深效果在光线跟踪中的实现,以及一些基本原理。 首先,看看景深效果是什么样子,让我们对他有个直观原创 2011-01-23 13:27:00 · 9075 阅读 · 2 评论 -
实例化的基本原理
引言: 最近刚好有个项目要用到这个技术,就学习了下DXSDK的Sample里面的Instancing10。 实例化的技术是利用多个顶点缓冲区有效的合并,减少Draw Call的次数,从而有效的提高程序的性能。实例化比较适合于相同物体的重复渲染,例如粒子系统,草被模拟等等。 本文实现了一个非常简单,甚至简陋的实例化的Demo。虽然Demo非常简单,但是实例化的每个必要的原创 2009-12-21 14:27:00 · 5917 阅读 · 2 评论 -
读取Obj格式的模型文件(Dx10)
引言: 最近开始用DirectX 10了,感觉和Dx9还是有一些变化的。虽然还不能完全理解这些变化所带来的优势,但是基本还是适应了。 唯一觉得不适应的就是在Dx10的接口里面,D3DX库里面已经没有对于.x模型文件的直接支持了。就是说不能通过D3DX来读取.x模型文件了,Dx10提供了一种新的模型格式sdkmesh。但是为了读取这种模型,或者自己写解析器,可能会很复杂,或者原创 2009-12-07 22:23:00 · 10331 阅读 · 5 评论 -
深入理解Direct3D9
深入理解D3D9对图形程序员来说意义重大,我把以前的一些学习笔记都汇总起来,希望对朋友们有些所帮助,因为是零散笔记,思路很杂,还请包涵。其实只要你能完美理解D3DLOCK、D3DUSAGE、D3DPOOL、LOST DEVICE、QUERY、Present()、BeginScene()、EndScene()等概念,就算是理解D3D9了, 不知道大家有没有同感。有如下几个问题,如果你能圆满回答就转载 2009-12-04 18:28:00 · 1576 阅读 · 1 评论 -
DX11中的constant buffer的padding原理
今天写了一些dx11的东西,有一个bug调了好长时间才抓到,总结下。Constant Buffer是shader model 4.0以上的一个新的特性,主要的目的就是为了把离散的变量集中起来,从而提高传输数据的效率。constanb buffer是需要做padding的,和cpu的padding逻辑相同,不过constant buffer的padding是128位对齐的。例如下面的结构原创 2013-03-23 22:34:50 · 5014 阅读 · 2 评论