游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4677|回复: 6

水彩效果的Shader实现

[复制链接]

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2007-2-12 17:14:00 | 显示全部楼层 |阅读模式
如有转载,请注明:
http://www.azure.com.cn/

水彩效果最重要的一个特性就是浸染,由于纸是非常吸水的,所以颜料会快速的向周围扩散开去,所以要模拟出水彩效果,就是要用程序来模拟这一特性。

这两张图是我实现的水彩效果:







由于贴出来格式很乱,具体实现过程见:
http://www.azure.com.cn/article.asp?id=292

2

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2007-2-12 17:47:00 | 显示全部楼层

Re:水彩效果的Shader实现

Cool!但是开启水彩效果后水面反光假了。

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2007-2-13 01:18:00 | 显示全部楼层

Re:水彩效果的Shader实现

效果不错,浸染效果有点类似运动模糊的实现吧
看了实现代码
不知道8 pass的算法效率如何

想了一个比较简单的方法,但还没有实现,不知道效果如何,但用ps模拟了一下,觉得还可以,有点浸染的样子
拿出来讨论一下:
同样先把场景渲染到一张纹理上sceneImage,然后:
offset = tex2D(noiseTex,texCoord);
color0 = tex2D(sceneImage,texCoord);
color1 = tex2D(sceneImage,texCoord + offset);
color2 = tex2D(sceneImage,texCoord + offset * 2);
color3 = tex3D(sceneImage.texCoord + offset * 3);
..........
finalColor = color0 * blendweight0 + color1 * blendweight1 +.......//sum(blendweight) = 1.0

要获得更加随机的浸染效果,可以使用多张noisemap来计算偏移值
当然,缺点是少了根据周围点亮度,计算当前像素颜色的步骤-_-b

顺便问一下楼主,最终渲染出来的场景纹理计算过颜色失真没有?
还是256×256的图像拉伸之后自然就是这种类似水彩的颜色了?

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
 楼主| 发表于 2007-2-13 09:02:00 | 显示全部楼层

Re:水彩效果的Shader实现

和运动模糊还是有很大的区别的,
浸染是根据纸的纹路来流动,运动是无规律的。

其实就是要在ps上模拟个 floodfill(), 但是颜色不会无限延伸,它会衰减,如果周围颜色相同,会产生连接。

其实过程很复杂,不是简单的模糊和扰动呢完成的。

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2007-2-15 00:49:00 | 显示全部楼层

Re: 水彩效果的Shader实现

用模糊的方法做了一个
效果还可以^^
调整noisemap和最终的混合参数,应该还可以更好


原图:

7

主题

438

帖子

438

积分

中级会员

Rank: 3Rank: 3

积分
438
发表于 2007-2-15 09:06:00 | 显示全部楼层

Re:水彩效果的Shader实现

看了Devil的站点,强人,拜一个。Orz
顺带支持偶像一下:楼上的,你的效果和楼主差的好远……  —_—

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2007-2-15 16:45:00 | 显示全部楼层

Re: 水彩效果的Shader实现

......
效果的好坏和计算量有关
楼主的实现好像用了8个pass来作水彩效果,每个pass还需要在RT之间切换
此外,单个pass中,pixel shader中的代码也比我用的复杂,自然效果要好

我没有说楼主的方法不好
只是想尝试在计算量相对较小的代价下,渲染出可以接受的效果。
我的方法是纯粹基于模糊的,只需要一个pass,几条纹理采样指令,也不需要分支指令。
如果也用多个pass,在RT之间切换采样,效果自然也就好的多
另外因为我那张图细节,线条太多,所以看起有些太模糊

重新调了一下参数:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 11:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表