这款游戏中 主角被遮挡部分变成半透明的效果是如何实现的?

如图所示 本人OpenGL初学者 不知道如何在opengl里实现这种效果,希望有人可以提供一下思路 顺便问一下这款游戏里刀光的效果是如何实现的
关注者
203
被浏览
10853
看了问题日志才知道说的是implosion... 正好最近在研究这个东东,我们来具体看下是怎么画的吧!

ps. unity里想用stencil是很坑的,(据说)手机硬件这部分支持的就不好,然后unity的API在这方面也不灵;更何况光为了画这样一个小人还得在整个buffer上留8位,不划算啊,直接画两遍得了

2015.4.25 增加了刀光效果的分析
原来的遮挡效果在下面~

========== 刀光效果 ==========
为了截这个界面我试了好多次。。。求赞……_(:з」∠)_
1. 首先,刀光本身是一个贴图~2. (麻烦的地方来了)新建一个buffer,然后吧当前这个屏幕的东西直接画上去(感觉就是Graphics.Blit一下) 这个主要是为了后面第二道刀光的扭曲

3. 画第二道刀光,能够看出来做了一些 扭曲~这里的输入贴图也是上一步的
4. 画第三道刀光,和第一道一样也是贴图的,不过这次用了两张贴图(多了一个法线的)

这样就搞定啦~~



========== 原答案:主角被遮挡部分变成半透明的实现 ==========
1. 第一步,绘制好所有场景
2. 将depth test 设为GREATER,绘制被挡住的部分
3. depth test改回LEQUAL,正常绘制
(我这里的截图全部绘制是因为工具让我看到了这一步的模型)
画完这一步就成这样啦
来看下对应的深度图