请问一下怎么写一个算法,使图像从原有的颜色逐步 Fade 成一张纯白颜色

akima 2017-09-01 02:40:29
楼主在做一个 2D 游戏,想要一个效果,就是让屏幕上显示的某个图像慢慢变白,直到整个图像都是纯白色为止,但是却想不到怎么去写这个算法,楼主用的是 D3D 9 作为图形 API,打算用 PixelShader 来实现这个效果,因为最终要的是屏幕中的某张图片由这个 Fade 效果,而不是整个屏幕都 Fade 到纯白色,楼主目前想到一个算法就是,让图像的原有颜色,按照比例,与纯白色进行混合运算,通过控制混合因子来决定图像有多白,如果混合因子是 1,那么完全显示图像颜色,如果混合因子是 0,那么完全显示白色,不显示图像颜色,楼主根据这个思路写出了下面这一段 PixelShader 代码,但是效果没有达到预期,不知道是不是算法有错误,还请各位指点一下:


sampler g_tex;
float g_factor = 1.0f;
float4 g_blend_color = { 1, 1, 1, 1 };

float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 color = tex2D(g_tex, uv);

color.a = 1;
color.r = color.r * g_factor + g_blend_color.r * (1.0f - g_factor);
color.g = color.g * g_factor + g_blend_color.g * (1.0f - g_factor);
color.b = color.b * g_factor + g_blend_color.b * (1.0f - g_factor);

return color;
}

...全文
1526 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
WJN92 2017-09-02
  • 打赏
  • 举报
回复
还有你应该要动画效果吧?为什么没看到你使用cbuffer的呢?
WJN92 2017-09-02
  • 打赏
  • 举报
回复
不用那么麻烦吧,直接把rgb加上一个速度值就可以啦。dx里面超过1都是显示白色的了

456

社区成员

发帖
与我相关
我的任务
社区描述
其它游戏引擎
社区管理员
  • 其它游戏引擎社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧