山寨SSSSS

主要参考了KlayGE里的SSSSS实现,在Unity里山寨了一下:

SSSSS打开 SSSSS关闭
unity_sssss_on unity_sssss_off

然后不得不吐槽u3d的API太少了,怎么优化都不给力…

  • 参考MRT example用倒是用出来了,不过有点麻烦,而且后来根本没法跑3个Loop,删到只剩下x/y方向各一次也用不上了…
  • 在后处理里没法用stencil真是猎奇啊啊啊,Using the stencil-buffer in a post-process?这个帖子里描述的一模一样;
  • 替换掉Graphics.Blit也基本没有效果提升;
  • 没有factor blend真麻烦,还要自己在代码里算混合…
  • 最后还尝试了在OnPostRender()里搞,如果是相机有RT的话、这样能读取到stencil倒是,不过会有其他的问题

反正就是各种蛋疼,N5上都只有30fps;实在不行只能考虑纹理空间的SSS了,不然每次算整个屏幕太费了~

Download: SSSSS.shader SSSSS.cs