本笔记仅为个人的理解,如果有误欢迎指出。
Screen-Space Grass
屏幕空间草
文章讲述了一种用噪声在屏幕空间中模拟中景和远景的草地效果。

算法主要分为两个阶段:
1,地形模板缓冲区遮罩;
2,后处理渲染;
1,地形模板缓冲区遮罩
这一部分主要为了标记屏幕空间中哪些区域是地形,或是哪些地方需要画草
文章中将地形的模板值设为了2,其他的物体的模板值设为了1
2,后处理渲染
这一部分是文章草地渲染的核心。
文章渲染草地的思路很简单,作者并没有真正生成草的几何体,而是在屏幕空间中把地形颜色颜色沿垂直方向拉伸,这会形成细长的纹理,所以在远处看起来会像草叶。

相关代码上可以看到,只是简单的做一些偏移

效果:

其他细节:
如何识别是不是草:
文章模板测试中标记的只是地形,但是不是草地区域需要另外做区分,作者简单判断原像素是不是绿色来判断是不是草区域。
也就是要同时满足在地形上绿色的条件才会进行托抹。
有可能一些非地形组成部分的源像素被误处理,比如树木、路标、其他场景装饰物等等。为了检测这种情况,作者简单做了一个深度测试

所以SSG实际上通过三层判断条件来尽可能保证处理草地。
第一层是Stencil Mask
第二层是Green Test
第三层是Depth Test
最终效果:

局限性:
1,只能固定垂直方向:因为它假设草叶永远朝屏幕上方生长。
2,缺乏风场动画
参考资料: