
Graphics
IOD-StevenZhai
佛为心,道为骨,儒为表,大度看世界;
技在手,能在身,思在脑,从容过生活
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
左右手坐标系的区别
左右手坐标系的转换问题。左右手坐标系的差别在于几个方面:1. 首先左右手坐标系的摄像机坐标系的构造方式是不同的,区别在于右手坐标中摄像机坐标系的负Z轴方向代表了,摄像机的方向也就是。而左手坐标系中的正Z轴代表了摄像机方向。因此在左手坐标系中摄像机坐标系的Z轴是(Look at - eyepos)而右手坐标系中摄像机的Z轴则是(eyepos - Look at )因为右手坐标系中转载 2014-06-04 14:38:40 · 1549 阅读 · 0 评论 -
NPR-Hatching素描渲染
Hatching(素描)渲染——通过光照的强弱,用不同深浅的纹理,实现一种类似素描效果。 Hatching的实现原理是:通过N.L计算点受光的强弱,将该值分成不同的段,不同的光照强度对应不同深浅的素描贴图 算法对应的VS如下:[cpp] view plaincopyVS_OUTPUT vs_main( VS_INPUT In转载 2014-06-12 10:45:54 · 841 阅读 · 0 评论 -
各种光照的算法原理 菲涅尔法则
光照与物体表面的相互作用可以通过将一些数学公式应用于基于per pixel(区别于基于顶点)的着色,从而模拟出真实生活中的各种材质效果。比如浮雕效果,波浪效果,油漆效果等。在这个教程中,我们有如下假定:第一,我们讨论的是基于像素着色(per-pixel basis),每个pixel有它自己的位置向量,法线向量以及表面颜色(Surface color,在这里可以是来自纹理的颜色,转载 2014-06-12 10:18:06 · 1240 阅读 · 0 评论 -
Ambient Occlusion(AO)
AO(Ambient Occlusion)是图形学领域近来较为流行的用来获取较为真实的全局光照效果的一种方法。这种方法针对要渲染的全局场景,利用每个渲染像素点周围的几何体分布的遮挡信息来确定当前点的AO效果。基于AO的渲染方法可以有效地增强人类视觉系统对场景全局的认知能力[Luft06]。它提供了很好的一种质量和速度间的均衡。1. AO的理论基础 传统的实现方法,通常使用光线转载 2014-06-12 10:35:15 · 789 阅读 · 0 评论 -
Cascaded Shadow Map(CSM)
Cascaded Shadow Map(CSM)是目前引擎中主流的阴影技术,效率与效果均不错。它与传统的单张Shadow Map的区别主要在于将视锥体进行了层次的分解,每一层单独计算相关的SM,这样在渲染大场景的阴影就可以避免传统的SM的各种缺点。典型的CSM原理基本上如下图所示:虽然看起来原理简单,但是在实际中想实现一个健壮的CSM并不容易,涉到各种问题,其中一些是这种方法本身就转载 2014-06-12 10:37:29 · 1229 阅读 · 0 评论 -
Deferred Decal
Decal渲染是一个引擎中重要的一部分,记忆中印象最深刻的就是以前CS中的弹痕与爆炸痕迹了。目前来说,Decal的实现方法也比较多,而且感觉还跟游戏类型有关,比如子弹乱飞的射击类FPS游戏中对贴花系统的要求就比较高,因为本来Decal的变化就比较丰富。一般来说贴花渲染主要有两种实现方法:Texture projection关于投影纹理的原理网上也有很多文章,基本就是需要对地形渲染两遍,一遍转载 2014-06-12 10:27:25 · 926 阅读 · 0 评论 -
Screen Space Ambient Occlusion(SSAO)
1. 简介AO(Ambient Occlusion)是全局光照中(Global Illumination)中一个很重要的概念,主要用来描述物体间的相互遮挡关系 以及漫射光线之间相互作用的效果。AO的主要方法是在每个采样点上计算它被其它几何体元遮挡的程度,进而得到在一个统一的光照强度下场景中的软阴影效果的图形算法。一般的3D处理软件中均有该算法提供,但是所有这些都是基于离线的渲染,直到在Cr转载 2014-06-12 10:34:17 · 1034 阅读 · 0 评论 -
NPR-卡通渲染
(一)卡通渲染卡通渲染是一种特殊的非真实感绘制技术,它要求帖图由不明显的渐变色块夹杂一些不复杂的纹理组成。它强调粗细线条和简单色块,忽略细节。利用这些很简单很纯粹的线条和色块,就能渲染出设计师所要求的质感很强的卡通效果,从而营造出互动的二维动画世界。 采用该技术的游戏:《网络急速赛车》 卡通绘画中,包含:勾边、卡通光影、边缘光晕、头发高光等技术,如下:转载 2014-06-12 10:47:11 · 1211 阅读 · 0 评论 -
LightMap 生成
为了增加场景的表现力,在渲染中添加光照效果必不可少。首先用某种算法对整个场景生成光照渲染效果,然后再将光照渲染效果以纹理的方式来存储,将场景中各个多边形所对应的光照效果存于光照贴图中,这样的话在实时渲染时,只需要对场景在原有纹理渲染的基础上添加多纹理的融合即可渲染出光照效果。然而这样得到的光照贴图是和场景中每个单一多边形相对应的,因此若场景中有N个多边形就需要对应N个光照贴图,这样在渲染时就需要对转载 2014-06-12 11:48:36 · 1245 阅读 · 0 评论 -
SSAO实现
by José María Méndez 原文链接: http://www.gamedev.net/reference/programming/features/simpleSSAO/ 绪论 全局照明(global illumination, GI)是一个计算机图形学术语, 它指的是所有表面之间相互作用的光照现象(光线来回跳动, 折射, 或者被遮挡),转载 2014-06-12 14:46:06 · 1039 阅读 · 0 评论 -
[nvidia]显卡底层知识
原文是由nv的技术总监cem cebenoyan在cgdc12上带来。非常好的介绍了很多显卡底层,从硬件到driver,到windows os的一些知识,受益匪浅。nvidia在cgdc上一直保持着高水平的presentation,赞!5个常常会造成图形性能卡顿的原因:shader编译显存用光了->使用system memory->paging资转载 2014-06-17 19:21:56 · 1148 阅读 · 0 评论 -
根据深度图重建物体位置
第一种方法: 存储 投影后z/w,并结合x/w,y/w, 通过 乘以投影矩阵的逆矩阵 再除以w得到物体的位置;[c-sharp] view plaincopy// 深度pass的顶点shader代码: output.vPositionCS = mul(input.vPositionOS, g_matWorldViewProj); output.vDepthC转载 2014-06-17 18:57:45 · 960 阅读 · 0 评论 -
Anti-Alias
http://blog.csdn.net/codeboycjy/article/details/6312758 前两天在浏览游民星空的时候,小编居然在文章中挂了一篇技术文章,是关于SRAA的。对于AA的了解很少,正好入职之前还有几天的空闲时间,所以就这个机会把AA的一些基本算法简单学习了一下,不过也只是学习到了一点皮毛而已。 本文将简单介绍四种反走样算法,他们分别是:转载 2014-06-18 15:36:49 · 1187 阅读 · 0 评论 -
shimmer/空气干扰/空间扭曲
Step1. ClearNormalMap( 128, 12原创 2014-06-20 17:54:25 · 785 阅读 · 0 评论 -
ATF(Adobe Texture Format)简介
Texture Format)简介" title="[转]ATF(Adobe Texture Format)简介" style="margin:0px; padding:0px; border:0px; list-style:none">ATF(Adobe Texture Format)是一种能提供最佳压缩效果的文件格式。ATF 文件主要是一个存储有损纹理数据(loss转载 2016-01-21 12:31:53 · 2134 阅读 · 0 评论 -
KD-Tree
Kd-树 其实是K-dimension tree的缩写,是对数据点在k维空间中划分的一种数据结构。其实,Kd-树是一种平衡二叉树。举一示例:假设有六个二维数据点 = {(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},数据点位于二维空间中。为了能有效的找到最近邻,Kd-树采用分而治之的思想,即将整个空间划分为几个小部分。六个二维数据点生成的Kd-树的图为:转载 2014-06-12 11:08:26 · 645 阅读 · 0 评论 -
光照数学模型
1。Lambert光照模型,也就是漫反射光照模型。它考虑的是ambient光和diffuse光对物体的综合影响。下面是我写的shader程序: matrix WorldMatrix;matrix ViewMatrix;matrix ProjMatrix;matrix WorldMatrix_IT; //世界矩阵的逆再转置,为了把顶点法向量变转载 2014-06-11 14:14:26 · 1620 阅读 · 0 评论 -
传统3D游戏引擎的Web化
最近floh大神的blog又复活了, 现在n3的主要发展发向是web化其实也是跟PC和主机平台的衰落有关, 各种移动设备正在逐渐取代PC的地位而做为一个3D游戏引擎, 想要适应这个潮流却不是很容易先不考虑其它, 光技术上面临的问题就很棘手:C++目前无法直接用于web开发, 必然要面临老代码转换/移植的问题3D硬件加速的渲染在浏览器这边, 没有一个统一的标准转载 2014-06-04 15:07:25 · 586 阅读 · 0 评论 -
HDR效果
HDR, High Dynamic Range, 高动态范围三项处理:1. Glare, 即Bloom/Glow, 一种发光的效果, 包括曝光处理2. Streaks, 即Star-like glow, 星光效果3. Ghosts, 即Lens Flares, 镜头光晕通常情况下, 只做第一种处理, 这样的HDR效果上并没有差转载 2014-06-04 15:20:52 · 822 阅读 · 0 评论 -
Shader Model 2.0 和 Shader Model 3.0 的对比
Pixel Shader功能Shader 2.0Shader 3.0描述Shader长度9665535+允许采用更复杂的阴影、光线和程序动态分支不支持支持通过跳过无关像素上的复杂着色以提高性能Shader抗锯齿转载 2014-06-04 12:34:46 · 3000 阅读 · 0 评论 -
Dx10和Dx9的一些区别
引言: DX10发布已经有一段时间了,网上可以查到很多关于Dx9与10的区别的文章。但是大多数都是从玩家角度考虑的。只是展示一下Dx9和Dx10分别渲染出的图片,并且Dx9所渲染的图片经常会缩水很多,目的就是为了展示出Dx10的强大。给大多数人的理解就是,DX10能做出比Dx9好很多的画面。我并不否认Dx10比Dx9优化了很多,但是随便展示出两张图片进行对比,其实意义也不是特别的大转载 2014-06-04 13:42:48 · 5147 阅读 · 0 评论 -
Uniform Grid , KD-Tree , BVH 性能比较
Ray tracing中,每条光线都需要和场景中所有的图元求交(这里我们假设所有的图元都是三角形)。Brute force的方法就是一点一点的遍历每个图元,然后找出与光线交点距离光线起始点最近的图元,当然这种方法的算法复杂度是O(N)的,对于少量的图元还可以,如果图元数量很多,光线跟踪的过程将非常慢。事实上,大部分的图元距离光线都是非常远的,只有一小部分的图元有可能与光线相交,所以没有必要遍历转载 2014-06-04 14:30:23 · 1987 阅读 · 0 评论 -
战争迷雾
说到战争迷雾(Fog of War, FOW), 其实还是非常普遍的一项技术, 在RPG, RTS等游戏中得到了广泛的应用 但是关于这方面的资料非常少, 经常会有人问怎么做, 所以就有了写这篇文章的想法从应用上来说, 有两种:探索范围: 通常在RPG游戏里, 用于标记走过的地图区域视野范围: 通常在RTS游戏里, 用于标记友方单位可以看到的区域当然, 在魔兽转载 2014-06-04 15:06:12 · 865 阅读 · 0 评论 -
径向模糊
最先在这里看到:http://www.gamerendering.com/2008/12/20/radial-blur-filter/这效果在鬼泣4中切换场景时见过, 极品飞车12的运动模糊也有这种感觉.原理: 确定一个中心点(如0.5, 0.5), 跟当前像素连一条线. 以当前像素为中心, 在线上的附近像素进行采样, 最后取一下平均值.代码翻译成HL转载 2014-06-04 15:19:34 · 1048 阅读 · 0 评论 -
RGB和HSV颜色转换
RGB和HSV颜色转换分类: 图像处理2008-07-21 21:50 2979人阅读 评论(2) 收藏 举报integer算法工具c360 H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。互补色分别相差180度。 纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰转载 2014-06-04 15:51:52 · 729 阅读 · 0 评论 -
Instance渲染技术
引言: 最近刚好有个项目要用到这个技术,就学习了下DXSDK的Sample里面的Instancing10。 实例化的技术是利用多个顶点缓冲区有效的合并,减少Draw Call的次数,从而有效的提高程序的性能。实例化比较适合于相同物体的重复渲染,例如粒子系统,草被模拟等等。 本文实现了一个非常简单,甚至简陋的实例化的Demo。虽然Demo非常简单,但是实例化转载 2014-06-04 16:29:51 · 2529 阅读 · 0 评论 -
投影纹理映射(Projective Texture Mapping)
一、纹理投影映射简介投影纹理映射用于映射一个纹理到物体上,好比将幻灯片投影到墙上一样。投影纹理映射经常在一些阴影算法以及体绘制(Volume Rendering)算法中用到。严格的说,只要涉及到“纹理实时和空间顶点对应”,通常都要用到投影纹理映射技术。下面是一个纹理投影映射的实例效果图:图一 纹理投影映射效果图二、纹理投影映射优点转载 2014-06-04 12:43:12 · 964 阅读 · 0 评论 -
深入理解Direct3D9
深入理解D3D9对图形程序员来说意义重大,我把以前的一些学习笔记都汇总起来,希望对朋友们有些所帮助,因为是零散笔记,思路很杂,还请包涵。其实只要你能完美理解D3DLOCK、D3DUSAGE、D3DPOOL、LOST DEVICE、QUERY、Present()、BeginScene()、EndScene()等概念,就算是理解D3D9了, 不知道大家有没有同感。有如下几个问题,如果你能圆满回转载 2014-06-04 14:40:35 · 641 阅读 · 0 评论 -
perlin 噪声
(转)perlin噪声函数 http://freespace.virgin.net/hugo.elias/models/m_perlin.htm许多人在他们的程序中使用“随机数产生器”,以使得物体的运动行为更加自然,或者用来生成纹理。随机数产生器在一些情况下很有用,但是它们生成的结果和自然结果相比,往往显得比较粗糙和生硬。这篇文章介绍使用广泛的Perlin函数,它常用在模拟自然物体的转载 2014-06-04 19:01:45 · 977 阅读 · 0 评论 -
06年写的粒子编辑器
最近在研究Flash 3D, 发现几个框架的粒子系统都原创 2014-06-06 09:53:16 · 825 阅读 · 0 评论 -
辐射度算法
简介:这篇文章是一个经典的辐射度算法的教程,详细的讲述了如何通过辐射度算法为静态场景计算光照贴图。这也是大多数游戏所采用的技术。现在很多的论文和书籍都讨论了如何在实时渲染中应用光照贴图来产生逼真的光照效果,然而他们主要着重于如何组织光照贴图。而光照贴图究竟是怎样计算出来的,也就是全局照明算法,却极少有资料进行详细的解释。我在网上搜索到这篇文章,看了之后受益匪浅,于是决定将它翻译出来,让更多的人了解转载 2014-06-25 16:58:41 · 2007 阅读 · 0 评论 -
法线变换
在图形学中,同样的一个模型视图变换矩阵可以用来变换点、线、多边形以及其它几何体,也可以变换多边形表面的切向量。比如:posEyeSpace = ModelViewMatrix * posModelSpace。但是,同样的方式通常却不能够用于法线的变换(注意:在有些情况下是可以的)。一、法线和顶点坐标的区别顶点坐标表示缺省的,而法线向量的表示缺转载 2014-06-11 18:03:56 · 670 阅读 · 0 评论 -
UV扭曲
UV + (Panner(u0,v0) - Texture2D(NoiseTexture) ) 即在原始的uv上叠加一个 NoiseTexture(通过推UV的形式获得动画效果), 从而造成原创 2017-06-19 11:12:48 · 754 阅读 · 0 评论