水下效果

水下波动效果实现
这里说的水下效果, 是指在水底下时, 为了增强真实感, 做的一种水的波动效果, 算是post process的一种吧
原理很简单, 就是把渲染好的屏幕场景做为一张纹理输入, 然后对上面的像素按时间进行扰动, 这样感觉好像水在晃动一样, 增强代入感. (想想潜水时^_^)
代码很简单, 没啥好说的
struct VS_OUTPUT
{
float4 pos : POSITION0;
float2 texCoord: TEXCOORD0;
};
float fTime0_1;
VS_OUTPUT vs_main( float4 inPos: POSITION )
{
VS_OUTPUT o = (VS_OUTPUT) 0;
inPos.xy = sign( inPos.xy);
o.pos = float4( inPos.xy, 0.0f, 1.0f);
// get into range [0,1]
o.texCoord = (float2(o.pos.x, -o.pos.y) + 1.0f)/2.0f;
return o;
}
sampler2D Texture0;//屏幕RenderTarget
sampler2D Texture1;//扰动纹理
float fTime0_1;
float4 ps_main( float2 texCoord: TEXCOORD0 ) : COLOR
{
float2 bump = tex2D(Texture1, texCoord + (fTime0_1*20));
float2 texel = texCoord + bump/500;
return tex2D( Texture0, texel );
}
Texture1是一张bumpmap
最终效果:
可能不太明显, 毕竟是个动态效果, 把波动值加大:
关于扰动的时候屏幕边缘会显示另一边的像素的问题, 只要把texture0的寻址模式改成CLAMP就OK啦
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值