<圣域2>选人界面的角色出现时的效果非常酷, 一直不知道咋做的
还是<龙歌>中speedtree在镜头前时的消隐也是这种溶解效果, 跟<圣域2>的圆形透明消隐差不多, 但是这种方法不用alphablend, 效率高些. (当时我形容是被虫子啃了...这机器上没装<龙歌>, 不截图了)
最近研究ShadowMap的Alpha穿透, 用到了clip()函数, 恍然大悟, 原来如此啊~
clip (DirectX HLSL)
Discards the current pixel if the specified value is less than zero.
clip(x) |
---|
Use this function to simulate clipping planes if each component of the x parameter represents the distance from a plane.
Parameters
x
[in] The specified value.
Return Value
None.
clip对应的asm指令是texkill, 这个的字面意思才比较好理解: 把当前像素kill掉.....
那么, 用一张噪声图就可以控制那种不规则的小窟窿(虫子咬了)
PS里只要用一个量来控制clip的参数范围就能很好地实现溶解效果. 当然如果要按区域溶解, 原理也一样, 怎么控制区域就不关我事了
代码语言:javascript复制sampler2D Texture0;
float fDissolve : SinTime0_X;
float4 ps_main(float2 tex : TEXCOORD0) : COLOR0
{
float4 color = tex2D(Texture0, tex);
clip(color.r fDissolve * 0.15f);
return color;
}
效果图, Fraps竟然录的视频播放不了, 郁闷