角色的面部是一个重点关注区域,头发尤其是刘海处的投影如果用不透明方式处理会显得过于生硬。我们的处理方式是使用Screendoor Depth,每4×4像素为一个tile,每像素根据透明度值来顺序丢弃写深度操作。可以看到最后得到的ShadowMap,头发末端有一个点阵的状态。再用一个单独的四分之一大小RT,对皮肤做屏幕阴影蒙版,再进行模糊处理,以获得半透明的阴影效果。
这是最后实现的效果,我专门挑了几个在刘海部分模型非常接近的头发,仅有贴图差异较大,可以看到左边一个,它的半透过渡比较柔和,所以它的阴影也就会淡一些。而右边的实体区域比较多,所以阴影比较锐利。
对于正常投影难以表达的微小部件,或者程序化生成的模型,我们会调整bias,以达到强化阴影的效果。
接下来一个重要的点是穿搭组合的自由度,也是换装游戏可玩性的支持。