最近看了看星际争霸2的技术白皮书,感觉有块石头落了地:
暴雪使用了Deferred Shading,就表明这个技术的性能和表现是绝对没问题的,暴雪一向的风格都是适应性最好的技术(这其中,性能是一个重要的指标)实现在此适应性上,最好的效果。看来Deferred Shading正好是这样一种选择——对于星际2和暗黑3这种风格的游戏而言。
实用的就是好的,AO很好,可惜不实用,于是就有了SSAO,滋光很好,可惜不实用,就有了God Ray,次表面法线,Light Environment,各种各样的技术,其实莫过于如此。
很高兴,几个月前我的选择并没有错。
今天跟几个同事一起吃饭,有个同事突然聊起了Deferred Shading,第一句话就是:这个东西很简单嘛,有位前辈说他几个月前就搞定了。
我反应了老半天,没反应过来,下午上班了才大约反应过来,哦,原来是之前觉得这个太复杂了。复杂么?老外几年前都搞定了,很简单的啊!由于Victory的良好结构,我的老大更是花了不到一周的时间就全部解决了,体系还很好。看来我的同事没来看我的Blog ^_^,才会有这样的误解。其实一直以来,我对Deferred Shading的思路都是这样子的:
Deferred Shading,是以一种相对简单但有效的结构,以丧失一定的复杂度为代价,换取在高效率实现逐像素光照下,最好的效果。
可能很多人,对于新技术的看法往往是一个新技术,是很复杂的,是需要花很多脑子去学习的。我觉得,对于过去而言,这是很有道理的,因为在低端机器上,很多无用功其实是浪费到了优化上。BSP、ROAM……诸如此类的技术,都是换取效率而必须付出的代价。但在已经不用过多的优化,就可以达到这些数年前技术效果的层次上,新的技术则将眼光瞄准了更远更高的方向。这些方向包括但不限于:技术的易用性和实用性,效果,效率……最突出的一个感觉是,技术的易用性从未向今天这样被提高到一个如此的层次上。DX10的接口远比DX9易用,DS远比FS好进行设计,LE,SSAO,God Ray,没有一个是复杂的技术,全都是数十行到数百行代码都可以完成的。
那种一个人靠着掌握了一点毛皮,就可以横行整个业界的日子,一去不复返了!
难的,不再是技术,而是思想。
说白了,
都是抄,早一天,晚一天,不重要,重要的无非就是谁抄的好。
都是卖,口碑好,口碑差,不重要,重要的是只要有人买就好。
不同引擎,不同实现的DS,都是按照他们自己的思想来。
这就正如Unreal实现了一个基于状态转换的UI,我06年也实现了一个基于状态转换的UI,这种UI比起CEGUI等传统的UI而言显然更好一些。但是为什么CEGUI和Unreal卖得好?而我的默默无闻呢?是因为表面功夫。——这可不是什么贬义,因为对于用户而言,技术最直观的反映就是界面,仅此而已。
人的思想到了一定的层次,都会对相应的事情产生自己的解决方案,而且,绝大多数情况下,一个人和另一个人,对于同一个事情的解决方案,不会有太多的不同。基于状态的UI,Unreal想到了,我想到了,别人也有很多想到了。差别只是做下来的深度和广度而已。我的UI只能靠硬编码和挂函数,而Unreal就可以做到很方便的编辑,以至于在有的项目中,只需要两三个人,就可以轻松完成整个MMO的所有界面,还有的同事能做的像Flash那样,方便不做游戏的人。这也就是深度和广度的问题吧?或者说,需求,解决需求的过程中,那可怕的积累吧?!
或许这才是最重要的——对需求的把握,以及完成需求的决心!
曾经我感觉这个世界里有很多技术流氓,别人做的好的,他就要说做的差,别人努了力的,他就要说别人抄近路,总之,只有自己的才是好的,别人的都是垃圾。自信和自大都是可以的,冷静的面对技术就可以了。无论如何,技术懂得的越多,就越有机会,越有方法,来完成自己面对的需求,这或许就是这些技术存在的意义。看清自己的问题,永远比看清别人的问题更重要,明白自己的需求,永远比明白别人的需求更关键!
不知为何,开了春,过了年,突然感觉现在的技术流氓少了,应该大家都早已经明白了这一点了吧,或许,一直以来,最不明白的,只不过是我自己而已啊! :P