
高级渲染
文章平均质量分 71
lengbingteng
这个作者很懒,什么都没留下…
展开
-
反射(Reflect)和折射(Refract)
BRDF 双向反射分布函数 反射:R = 2 * N·L * N - L 已知量:N:顶点的法向量L:入射光向量,如果是平行光就直接用光的方向向量,如果是点光源,就通过光源位置和顶点在世界空间的坐标进行计算。未知量:R:反射方向向量总所周知,我们之所以能看见东西,是因为有光的照射,这说明所有我们所能看的到的颜色,都是来源于光的作用。光照射在像素上的时...原创 2013-03-13 16:24:46 · 1875 阅读 · 0 评论 -
kd-tree
kd-tree:是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。一个三维k-d树。第一次划分(红色)把根节点(白色)划分成两个节点,然后它们分别再次被划分(绿色)为两个子节点。最后这四个子节点的每一个都被划分(蓝色)为两个子节点。因为没有更进一步的划分,最后得到的八个节点称为叶子节点。KD树可以理解为一棵对空间划分的树,这样在对区域查询的时...原创 2013-04-30 17:08:10 · 169 阅读 · 0 评论 -
Bilateral Blur(双边滤波)
图像模糊是一个很常用且重要的处理方式,是很多渲染效果中不可或缺的一个处理环节。最常见的是高斯模糊,基本思路就是卷积的时候利用高斯分布(正态分布)作为权值来影响卷积的效果。 Bilateral Blur(双边滤波):相对于传统的高斯blur来说很重要的一个特性即可可以保持边缘(Edge Perseving),这个特点对于一些图像模糊来说很有用。一般的高斯模糊在进行采样时主要考虑了像素间...原创 2013-05-03 17:23:51 · 1479 阅读 · 0 评论 -
次表面散射
次表面散射是次时代游戏引擎的一个比较特征性的渲染技术,这项技术让半透明材质开始流行,人物最重要的组成部分皮肤的渲染也融入了复杂的次表面散射渲染。在网上找了很多相关的资料,大部分都是秀一些效果图,也看到了几篇不错的文章,这里写一下自己的理解。由于这个渲染效果,是多项渲染技术的综合运用,所以,作为菜鸟暂时只能谈理论 - -。 次表面散射(Subsurface Scattering):次表面散射...原创 2013-01-01 16:05:12 · 4772 阅读 · 0 评论 -
运动模糊和景深
运动模糊和景深其实是很早之前的光学拍摄器材的缺陷导致的现象,后面摄影技术发达之后这些反而作为局部后期处理的手段。时至今日,实时渲染也大行其道这种技术。 景深:是由于光学仪器受到焦距的影响,在一个特定的距离空间内的像会比较清晰,而这个区间外的物体会出现模糊。实现思路:其本质就是对图像进行局部模糊,而模糊的规则就是把深度分成3个区域,前后是模糊的,中间是清晰的。 整个过程分...原创 2013-01-01 18:09:27 · 1166 阅读 · 0 评论 -
高动态光照(HDR)
同样作为次时代的代表性渲染效果,我个人觉得HDR比运动模糊和景深更具有实际意义,也更值得咱们为其消耗资源。 概念:由于人眼能分辨的最大亮度差为100000000 :1,即使是同一个场景也能分辨10000 :1,但显示设备只能创建的亮度动态范围是100 :1。对于目前来说,图片的存储能力已经能够做到存储最大亮度差,但是却正是由于设备的原因无法在显示器上正确现实。从这点可以看出HDR不是实时渲...原创 2013-01-02 02:24:40 · 575 阅读 · 0 评论 -
简单光照模型
众所周知世界是由颜色组成的,我们要渲染一个虚拟的世界,主要就是对颜色的渲染。对于一个模型上面的颜色,主要由两部分组成:静态的颜色(模型自带颜色,纹理贴图的颜色)动态计算出的颜色(光照,阴影以及一些特殊渲染),静态的颜色实现起来比较简单,它是一个物体的本质色彩,但是想要描述一个精彩的世界重点还是对动态颜色的渲染,这样更真实。为了模拟动态的颜色,各路人才把各种数学物理上的知识都用上了,其中最基础的就...原创 2013-01-10 19:47:16 · 1063 阅读 · 0 评论 -
法向量纹理贴图
概述:实时渲染时,在建模过程中,我们会为每个顶点设置一个特定的法向量,在这shader的时候进行光照计算。而由顶点组成的三角形面会有一个自己的法向量,因为整个面只有一个法向量,光照的时候都是按照这个法向量进行计算,渲染出来的结果是这个面很平。为了增加细节的描述,我们会改变这一现状,使用一个存储了法向量信息的纹理图来描述这个平面上每个像素点的法向量。这样渲染出来的结果就是凹凸不平的了,增加了很多真...原创 2013-01-13 02:31:35 · 1422 阅读 · 0 评论 -
tessellation(曲面细分)
在实时渲染的时候,通常我们会因为带宽,效率等原因,不会采样面数非常多的高精模型建模。但是又想渲染出细节非常多的场景来怎么办?各种办法,动态纹理,法向量纹理,曲面细分等技术是比较常用的技术。这里主要说曲面细分,在DX11渲染管道用了三个stage(阶段)来实现,曲面细分就是在GPU内部使用硬件加速的方式,动态生成顶点。其中:Hull shader :相当细分前的预处理工作,定制一些细分规则和...原创 2013-01-14 02:17:32 · 939 阅读 · 0 评论 -
PN-Triangles和Phong-Tesse
今天被人鄙视了一下,原因是菜鸟常被人鄙视。技术上来说,高手训斥菜鸟永远都是对的。 PN-Triangles需要在每个三角形patch的内部计算7个点的position和3个点的normal,并通过它们来二次插值出所有细分出来的顶点的position和normal。而Phong Tessellation直接把细分出来的顶点投影回三个原始顶点,只需要线性插值就可以得出position和no...原创 2013-01-14 15:58:28 · 732 阅读 · 0 评论 -
模拟Ocean Water
3D模拟海洋是一个比较复杂的工程,大体分为:海洋动画,水面光照,水下光照以及其他的效果。这其中海洋动画是最为复杂的,除需要比较真实的控制顶点的运动以外,为保证其实时性还需要把地形lod和tess等技术融合进去。冰冻三尺非一日之寒(- -),这里暂时先模拟海洋动画,其它的内容以后逐步完善。 海洋动画: 这就是一个完整的海洋动画顶点更新的过程,其中H0为起始位置,最后3张纹理:...原创 2013-01-18 00:39:41 · 235 阅读 · 0 评论 -
RT(光线追踪)
光线追踪应该算是终极显卡杀手了,尽管拥有高端的画质,但是对性能的要求实时渲染的领域始终是望而生畏。不过,很多全局光照的算法都是基于光线追踪的基础上简化而来的,了解光线追踪还是有必要的。 1.光线的描述:r(t) = o + t d,o是起点,d是单位方向向量,t是时间也可以说是变量,r(t)就是射线。2.光线和物体求交:光线和物体的交点,就是这根光线的可见点。如果物体的表面...原创 2013-04-28 23:11:02 · 1331 阅读 · 0 评论 -
全局光照:VPL(Virtual Point Light)
VPL(Virtual Point Light 虚拟点光源) 算法有很多,但是中心思想是以虚拟的点光源为间接光提供光照。 RSM(Reflective Shadow Map 反射阴影贴图):1.shadow map的升级版,在shadow map的时候,我们会获取light空间的深度图,以此为基础判断阴影遮蔽。但是RSM除了记录depth以外,还需要记录PN(Position ...原创 2013-04-28 13:36:03 · 2179 阅读 · 1 评论 -
菲涅耳效应
菲涅耳效应 当光从一种具有折射率为n1的介质向另一种具有折射率为n2的介质传播时,在两者的交界处(通常称作界面)可能会同时发生光的反射和折射。图中P为入射光,S为折射光,Q为反射光。这些反射和折射光的夹角遵守反射定律和折射定律。我记得以前中学物理老师讲光学的时候,一般讲到这就完了,很少提及入射光的能量被反射光和折射光分走了多少。而这个正是遵守着菲涅耳反射定律。 菲涅耳反射...原创 2013-04-22 23:15:31 · 1687 阅读 · 0 评论 -
球谐波光照(Spherical Harmonic Lighting)
SH(Spherical Harmonic Lighting 球面谐波照明):1.基于物理的光照计算:这个光照模型,是一个典型的基于物理的光照模型。是对当前点法线方向的半球内的光照强度的积分。:为点x处在w方向上的光密度;:物体自身在点x处发出的光线;:表面上x处的BRDF,它将从wi方向上进入到该点的光反射并变换到wo方向上;这里BRDF(Bidirectional Reflec...原创 2013-03-15 21:13:00 · 1144 阅读 · 0 评论 -
实例(instancing)绘制
应用场景:这种方式无法减少被渲染的顶点的数量,但是可以降低带宽的压力,尤其是在绘制大量重复场景的时候具有得天独厚的优势。 原理:在顶点buffer进入渲染管道的时候,并不是直接送给VS进行渲染,而是进入一个IA阶段。正是因为这个原因,才多了一次对顶点进行二次加工的机会。以下是从IA进入的数据: IASetIndexBuffer :索引缓冲区绑定到汇编器的输入阶段。 ...原创 2013-03-24 01:26:36 · 572 阅读 · 0 评论 -
SSAO详述
简介:在所以的间接光照的方式中,AO(环境遮蔽)是最为简单的,它并不属于GI范畴,但是却能够渲染出GI相似的氛围。从性价比上来说,这种方式比真正的GI更为可取,比较GI是一种奢侈品。 原理:以当前点P的位置为起点向空间内任意方向发射射线,并进行类似碰撞检测,碰撞到P1点,如果被遮挡对遮挡值进行累计。在这个过程中有两个限定的地方,第一个就是射线与当前点的法线的夹角值必须大于一个值...原创 2013-03-26 22:20:06 · 1476 阅读 · 0 评论 -
粒子系统
粒子系统:大多数情况下,我们在游戏中见到的粒子都只是一些烟或者雾之类的,但是粒子系统本身确实一个很强大的应用。几乎所有具备群体效应的渲染粒子系统都可以应用,例如流体,星辰,群体动画(一群鸟在天上飞,一群人在地上跳舞之类的),反正,具备群体效应的都可以进行尝试。 结构:一个典型的粒子系统分为两个阶段,模拟阶段和渲染阶段。其实也不是粒子系统是这样,基本上整个图形渲染就属于数据更新+...原创 2013-03-28 17:08:51 · 159 阅读 · 0 评论 -
大气散射
大气散射是由于光线与空气中的灰尘和微粒相互作用引起的,其在地球所有的自然现象中扮演重要角色。最常见的大气散射形式有Rayleigh散射和Mie散射。Rayleigh散射是由空气中的小分子引起的,而且它对波长短的光散射更强(首先是蓝色,然后是绿色和红色)。天空是蓝色的,因为蓝光在整个空间不断散射,最后从各个方向到达人的眼睛。Mie散射是由空气中的大粒子(如灰尘和污染物)引起的,它对所有波长的光的散...原创 2013-03-29 13:15:23 · 2157 阅读 · 0 评论 -
体积光
体积光是透射的一种,次表面散射也是,所不同的是次表面散射是在模型里面,而体积光一般都是在模型外面。 伪体积光散射:基于延迟渲染的体积光散射,简单说就是2D模拟3D效果,过程:1.在屏幕中渲染光源2.在屏幕中渲染遮蔽3.屏幕中某点的颜色,是这个点到光源的这个线段上采样点的光的颜色的累积 (- -)。#define NUM_SAMPLES 200 // 采样数[nu...原创 2013-04-08 13:51:49 · 1833 阅读 · 1 评论 -
柔体(布)
布的模拟相当于对一个平面上所有顶点加上物理模型因素物理模型:1.外力:重力,风力,阻力2.约束:(1) 弹簧约束:保持整体结构不变性。 (2) 碰撞约束:防止模型之间相互渗透。 计算过程:1.判断当前顶点是不是锚点:锚点是一个外力的感应点,外力通过锚点传导到布网格的所有顶点,并对他们产生影响。2.更新锚点的位置3.对弹簧进行约束4.对碰撞进行约束...原创 2013-04-08 17:02:08 · 535 阅读 · 0 评论 -
Terrain(地形) Geometry Clipmap
在大的室外场景中,地形的几何体需要较大的存储空间和渲染带宽。为解决这个问题,出现了很多LOD的技术。然而,大多数技术都是在CPU端实现的,需要运行时创建和修改顶点缓冲区。 Geometry Clipmap:把地形当做2D的高度图,并把它预过滤进一个L层的mipmap中。对于大场景来说,完整的地形mipmap太大,无法全部加载。所以 Clipmap会在每层缓存一个nxn顶点样本的页面...原创 2013-04-11 02:38:48 · 694 阅读 · 0 评论 -
阴影技术汇总
对于一款游戏来说,场景永远是最难维护的,而场景里面的地形,阴影也是最难管理的。这也是各种地形算法,阴影算法新起的根本原因。没有最优的算法,只有最优的方案,任何解决方案都是在效果和效率之间权衡和取舍。要做到这一点,前提是对相关的算法都有所了解,这里列举出阴影算法相关的技术。 Shadow Volume & Shadow Map:阴影的实现主要有两种方式,Shadow Volu...原创 2013-04-13 21:28:04 · 436 阅读 · 0 评论 -
Terrain(地形)
概述:对于地形来说,无非是对地形中每个顶点的有效管理,而UV的控制也是为了控制顶点的y坐标。 位置计算:1.需要的参数:(1).TILE_EDGE_VTX_NUM:Tile每行顶点数,边数 = 顶点数-1(2).tileSize:Tile的宽度(3).viPosition:Tile相对于整个地形的位置(4).WORLD_SCALE:整个地形放大的倍数其中1和4是固...原创 2013-04-16 15:09:39 · 329 阅读 · 0 评论 -
高斯滤波
原文来自:http://blog.youkuaiyun.com/zddmail/article/details/7521424 (如果对高斯模糊感兴趣请看作者原文)SIFT算法详解 博客中图表的大小难以调整,导致阅读不便,这里有其pdf版本:高斯模糊实现小结.pdf 高斯模糊是一种图像滤波器,它使用正态分布(高斯函数)计算模糊模板,并使用该模板与原图像做卷积运算,达到模糊图像的...原创 2013-02-22 00:13:14 · 270 阅读 · 0 评论