本来是和同时在讨论hdr中光的扩散方法的计算,讨论到要根据周围象素的亮度来觉得当前象素是否要受它的影响时,居然做出了这样的效果:
请注意人物裙子上的花纹,和裙子下面的边,居然做出了类似凹凸贴图的效果,原来是因为贴图本身画有一定的阴影,而阴影部分的亮度自然很低,所以在计算光照的时候能达到这样的效果,人物本身是用的phong shading + phong specular。
ps的写法是根据当前象素的uv坐标来取周围的N个采样点,然后遍历这些采样点,当采样点的亮度大于某个值的时候就把这个象素乘一个比值加到当前象素。效果实在是太好了,感觉和我以前用normal map做出的效果没什么区别,最大的好处是此方法不需要任何的贴图附加信息,只需要在人物本身的贴图上画阴影即可,我想这一点大多数2D游戏的人物渲染的时候贴图都带有这些信息吧。