乱弹

  最近一段时间十分浅显的游历把玩了deferred shading渲染管线的一部分组成阶段:

GBuffer调配

多层贴图光照(normal map + specular map + emissive map,看星际2的max材质纹理层还有decal,环境贴图之类的,我现在就用上了4个RT,再来就加不进去了啊....看来还是有必要转换到deferred lighting)

PSSM(经过两个凌晨的探索,终于把ogre的PSSM集成好了,这次教训告诉我,这种高级阴影技术是开放了很多可调参数给调用者的,我最初跟ogre论坛上的很多人一样,妄想一切都按照默认参数,即可让它适用于自己的场景.这尼玛现在想来简直是做梦啊,PSSM不是万能的,也不是通用的,受到具体场景搭建,视距需求,视锥切分策略等很多影响.一定要在编辑器中提供阴影参数的调节选项.)

其实,星际2这种RTS视角,根本不必用PSSM这类阴影方法,视距就那么短,而且是固定方向,深度值密度分布问题不存在.

 

SSAO

anti-alias(一开始我采用了GDC 2011的DLAA,但是它blur后,我发现星际2的人儿本来就挺小,blur一下就成糊糊得了 o(╯□╰)o 于是我查看了下星际2自己的shader,PSAntiAliasing.fx,发现用的是FXAA3算法,继而搜到了一些相关有趣的东西:外国论坛上有些人制作了FXAA3的"外挂式注入"方法,就是把shader和相关的一个配置文件setting.h和经过修改的d3d9.dll放在游戏exe目录下,执行游戏就能自动开启效果.这些geek的nice work极大的促进了FXAA在各大游戏的广泛测试和使用,貌似很红红火火的赶脚.鄙人孤陋寡闻,第一次看到用这样的方法去修改图形效果,感觉很是有趣...猜想可能是hook了present函数?maybe...链接在下面,抽时间可以看看)

 

http://www.forum-3dcenter.org/vbulletin/showthread.php?t=510658

  

  话说这些geek给的文件还附赠上了sharpen效果,刚好我昨天在公司时也试了试我们编辑器的锐化效果,发现对于解决"糊糊"的问题很有帮助...用在游戏里后,感觉线条感一下子出来了,小兵也很有轮廓感.很好很强大,那就先把这个锐化加上吧.

  把玩了这些效果,其实流程也就是个 --> 先浏览浏览white paper --> 一头雾水 --> 看代码实现 --> 一头雾水*2 + 头昏脑胀 --> 索性照搬实现 --> OK,效果出来了....

是的,要深究,每个图形理论都不简单的,我发现最最本质的还是,完全是,一直是,TMD的就是,数学功底.想买房,学数学啊.

  下面还翻到篇文章剖析SC2渲染的一些东西的,当然SIG2008那篇paper肯定值得好好看看.

 

 http://3denginehowto.blogspot.com/2012/04/starcraft-2-technolgy-secrets-part-1.html

 

  目前还没想明白的是,SC2是采用的deferred shading,而且它paper里说的MRT也没有存material id这类信息,那不同材质在shading阶段是怎么设置的呢??

 

  贴下对比图,前两张是只有diffuse map,没阴影,没SSAO,没抗锯齿,没锐化,后二张是全开的:

  我发现一打开全屏SSAO,帧数瞬间从150左右降到50...

 

乱弹

 

 

 乱弹

 

 乱弹

  图中的水晶矿阴影我是当做普通不透明物体shading,其实它是半透物体...SC2使用了一个半透物体阴影渲染方法,可以让粒子效果这些渲出阴影,很好玩.具体可以参考其SIG08 paper和上面链接的文章~

  

乱弹

 

  渲染了一个枪兵的3D portrait,没想到丑得要死,完全比不上星际2渲的好看.如果能翻倒这一段的shader代码就好了.

乱弹  (哎哟喂泰瑞斯你素颜好龊啊...)  乱弹

 

  在星际2的渲染流程中,shading阶段的材质自由度很高(通过uber shader实现,一大堆条件分支),从MAX中的模型材质调节(下图)和shader文件PSMaterial.fx,PSMaterialLayer.fx等(下图)可以看出端倪.显然的,抽象并开放大部分材质参数给aritist是一个成功的材质系统所必须具备的:可能性都开放给你了,怎么搞自己去弄吧,我们程序不必再操心了.所以做材质系统时,可以借鉴星际2的一些手段,虽然看不到与C++主程序交互的部分,不过还是能学到些东西啦.过几天准备在编辑器里加上简单的材质参数编辑功能,能调multiplier什么的,上图的SCV头上顶着的氪金狗眼就是因为我现在的emissive multiplier是设置的一个全局的值...

 

乱弹

 

乱弹

 

乱弹

 

乱弹

 

  星际2对动态延迟光源的利用也算是登峰造极了,看看下面的图就明白了

乱弹

乱弹

乱弹

  同屏这么多单位,每个单位都携带动态光源,效果能不梦幻么.....

 

  我也加入了可挂接在角色locator上的DLight,实验效果如下:

乱弹

 

 生活烦恼:

  似乎最近几个月完全是每天在公司,在家里都面对着电脑(eason-宁愿面对着一台电脑无事忙),周末也不想出去,不去骑车,更不想跟陌生人接触,说话...感觉开始散发一股阴沉之气,自闭之感愈发强烈.直觉告诉我,这样不好,会更难找到,哪怕遇到意中人的...So,我决定也许再半年吧,我想换公司了,也许换个城市,然后买个单反,学习摄影,学习用心观察和体会这个世界.这一点我实在是太欠缺了.

  另,从毕业开始在引擎部(12年6月-目前)的这大半年,真的是太舒适了,工作内容很是"随意".想来好笑,一般码农是在公司拼命码码,回家看书充电,而我是在公司闲得看书,回家拼命码码...凭我"敏锐"的直觉,意识到这不行,但是想到这么远来到这里很是不易,跟大家也很是融洽,而且毕业不满一年就跳槽,似乎不太好,所以就计划再呆一段时间.但是一定要谨防沉沦,这里学习资源和人力资源很丰富,不能浪费俅.等到离开的时候,我希望有一定的实力迎接生活的下一段轨迹.

原文链接: https://www.cnblogs.com/mavaL/archive/2013/03/03/2941148.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    乱弹

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/79526

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午7:04
下一篇 2023年2月9日 下午7:07

相关推荐