星际2的normal map

  这几天总感觉没有用对星际2的normal map,都知道normal map有好几种:object space, tangent space(就是dot3,蓝蓝的那种), world space等.最常用的就是切线空间的.从开始以来我就是使用的Ogre默认的normal map shader,即认为法线图是保存的切线空间的法线,渲出来的场景和法线RT如下:

  

 

   感觉效果不对劲,不是应该是蓝色的么.....于是google了下,发现有个帖子官方说SC2的法线贴图因为DXT5什么原因,只使用了Y和W两个通道,其他两个通道unuesd....让我一下子醍醐灌顶.哦不,是汗毛竖立..下面第2个帖子链接的美术哥们也是因为SC2法线效果一直不对的缘故郁闷了很多天.....

 

http://eu.battle.net/sc2/en/forum/topic/6297782470

http://www.google.comwwwww.sc2mapster.com/forums/development/artist-tavern/47285-solved-question-about-how-sc2-handle-normal-maps/?page=2#posts

  

  我翻了翻SC2的shader,很容易找到了相关的代码,确实如官方所言:

  从第1张图可以看到,SC2确实也是切线空间的法线图.从第2张图看出,如果法线图是DXN类型,则只有wy通道是包含信息的...否则只进行expand,正常获取信息.

于是我照葫芦画瓢修改了,渲染结果如下

  这样看上去感觉似乎比较靠谱了............但是我还是不是非常肯定,过两天我试试抓下SC2的渲染就能确定是否正确了. 

 

  我擦,一个通宵就过去了,今天又破记录了.........明天,哦不,是等会,还上个锤子班啊......................o(╯□╰)o

posted @ 2013-03-18 05:45  mavaL  阅读(669)  评论(1编辑  收藏  举报