2011年6月18日

最近面试经历

摘要: 最近一段时间面试了好几家公司,总结一下吧。这些公司包括(但不限于^_^)火石、酷狗、多玩,还有两家专门为电信(移动,联通等运营商)提供后台业务系统解决方案的公司。除了火石之外,其他公司都是主动联系我的,比较幸运。面试之前我都没有做准备,平常心嘛,不要搞到像高考似的。 先说一个感受:一杯水。其实一杯水对于一个公司来说并不那么起眼,但对于一个求职者来说,却显得非常重要。试想一下,一个人一天到晚在外跑,每到一个公司都要唇枪舌战至少2个小时,水对于这个人来说何其重要。这杯水也反映了公司的人性化程度到底有多高,这方面一些小公司做得比较好。各位HR,面试官应该注意一下这个问题。 再来说说技术方面的面试,. 阅读全文

posted @ 2011-06-18 14:07 rickerliang 阅读(1193) 评论(6) 推荐(1) 编辑

2011年6月2日

Depth Of Field

摘要:  有这样一个物理现象,镜头对准被摄物体对焦,在底片上有清晰的成像,然而,在焦点前后一段短距离内的物体,在底片上仍然能得到较清晰的成像,离焦点更远的地方,光线开始扩散,影象变成模糊的,形成一个扩大的圆。这个圆叫做弥散圆。在焦点前后短距离内仍能得到较清晰的成像,是因为在这段距离内,弥散圆的直径比较小,在底片上人眼识别不出来。人眼不能识别的最大弥散圆直径称为允许弥散圆直径。在焦点前后,允许弥散圆直径之间的距离叫做焦深,前焦深和后焦深对应的物距之差就是景深,即Depth of Field(DOF)。如下图:图1 景深(Depth of field),弥散圆(Circle of confusio 阅读全文

posted @ 2011-06-02 16:55 rickerliang 阅读(3210) 评论(3) 推荐(5) 编辑

2011年5月25日

High Dynamic Range

摘要: 本文描述的是实时渲染领域内的HDR高动态范围渲染技术,此技术可粗略理解为在LDR表面呈现HDR场景。 首先,DR动态范围是指某环境下某物理量最高值与最低值之比值。HDR全称High Dynamic Range,即高动态范围,通常指DR值达10的10次方以上。例如,室外太阳光的亮度与室内阴暗角落的地砖的亮度之比值可以达到10的10次方以上,这样的场景就可以称为具有高动态范围。 既然有高动态范围,相应也有低动态范围LDR,最明显的例子就是我们的电脑显示器。显示器的DR(即对比度)一般不会超过10的4次方。 如果不作任何处理,直接在LDR表面呈现HDR场景,可以预计,会出现过曝光或欠曝光情况,丢失. 阅读全文

posted @ 2011-05-25 11:45 rickerliang 阅读(2118) 评论(0) 推荐(0) 编辑

2011年5月13日

Screen Space Ambient Occlusion

摘要: Screen Space Ambient Occlusion 简称SSAO,是实现AO的一种方法,其运算量低且效果还可以接受,所以用作实时渲染AO算法。SSAO又细分有多种算法,其中有Crytek的SSAO,有nVidia的HBAO等,而最简便的是GameDev上一篇SSAO文章里的方法。无论什么方法,都是通过采样像素附近区域的几何信息,计算遮蔽因数。HBAO方法比较复杂,但有理论依据,而GameDev的方法比较简单,通过调整相关参数就能得到满意效果,如下图(是的,又是茶煲一个):本文也就是GameDev方法的中文注释。 既然SSAO称为SSAO,那么这个方法肯定是在Screen Space内 阅读全文

posted @ 2011-05-13 22:33 rickerliang 阅读(1443) 评论(6) 推荐(0) 编辑

资源汇总

摘要: 《RealTime Rendering》对应的网站maintain一个历年众多conference的paper列表,珍贵的资源,极具价值 阅读全文

posted @ 2011-05-13 16:54 rickerliang 阅读(330) 评论(2) 推荐(0) 编辑

2011年5月7日

Deferred Shading

摘要: Deferred Shading Deferred Shading是现在比较流行实时渲染方式,这种渲染方式能把Geometry和Lighting之间的耦合解开,把Forward Shading的Geometry Pass*Lighting Pass复杂度下降为Geometry Pass+Lighting Pass,特别适合于渲染较多动态光源的场景,本文将快速浏览实现Deferred Shading的各个阶段,并提供一个带源代码的简单的例子程序,这个程序可以在SM2.0及以上的硬件上运行,通过dx9接口实现。 Deferred Shading介绍可参阅《RealTime Rendering》3r 阅读全文

posted @ 2011-05-07 22:13 rickerliang 阅读(3989) 评论(3) 推荐(3) 编辑

2011年4月24日

实时渲染下的多线程协作:实践

摘要: 在《实时渲染下的多线程协作》一文中提出的无等待多线程协作机制可应用于实时渲染,这是由于实时渲染下,每一帧与下一帧存在相关性。设想一下存在一个无限快速的渲染设备,导致帧速无限大,dt无限小,那么,场景内物体的运动变化在frame n时与frame n+1时无限接近,我们可以近似地把frame n与frame n+1的变化累积起来,一次过地在frame n+1时呈现出来,而frame n我们什么也不错。 以下DEMO就是基于上述观点:首先,DEMO显示两个自旋的六面体,左下角六面体自旋角度由主线程计算,右下角六面体由自旋角度由辅助线程计算;其次,辅助线程为了模拟复杂运算,在每计算一个自旋转换矩阵. 阅读全文

posted @ 2011-04-24 21:12 rickerliang 阅读(755) 评论(2) 推荐(0) 编辑

2011年4月23日

实时渲染下的多线程协作

摘要: 这里的指多线程意思是在Application阶段的多线程(请参阅<<Real Time Rendering>>3rd对一个实时3d程序处理阶段的划分:Application-Geometry-Rasterization)。本文在Application阶段展开探讨多线程协作,并提出可行方案。 首先,我们回顾一下多线程的应用场景。在一个围绕业务展开的应用程序内,多线程应用场景可以是:界面线程——数据处理线程;界面线程负责响应用户输入,并根据输入向数据处理线程发出请求,接着界面线程会提示进度条并保持界面的及时响应(例如响应用户的取消操作),直到等待数据处理线程的完成。界面线程 阅读全文

posted @ 2011-04-23 00:09 rickerliang 阅读(998) 评论(0) 推荐(0) 编辑

2011年4月22日

成员函数线程适配器

摘要: 有时候,由于设计上的需要,我们通常要把一个类成员函数以线程方式启动,而最常见的实现方式有两种:1.直接把成员函数声明为静态,使得CreateThread等函数可以直接调用;2.声明一个静态成员函数,作为代理,在内部在调用类的非静态成员函数。 这两种方法只是单单为了实现目的而出现的,优点几乎没有,但缺点却显而易见:对于方法1,在静态成员函数内肯定会出现强制类型转换得到pThis,然后一堆堆的pThis->XXX;对于方法2,作为代理的静态成员函数没有复用性,如果新设计一个线程,又要再写一个代理函数,重复劳动。 而另一个可以接受的方案是编写一个线程基类,提供一个类似run的虚函数,派生类实现 阅读全文

posted @ 2011-04-22 16:45 rickerliang 阅读(596) 评论(0) 推荐(0) 编辑

导航