GPU PRO 5 - 3.1 Screen-Space Grass 笔记

本笔记仅为个人的理解,如果有误欢迎指出。

Screen-Space Grass

屏幕空间草

文章讲述了一种用噪声在屏幕空间中模拟中景和远景的草地效果。

算法主要分为两个阶段:

1,地形模板缓冲区遮罩;

2,后处理渲染;

1,地形模板缓冲区遮罩

这一部分主要为了标记屏幕空间中哪些区域是地形,或是哪些地方需要画草

文章中将地形的模板值设为了2,其他的物体的模板值设为了1

2,后处理渲染

这一部分是文章草地渲染的核心。

文章渲染草地的思路很简单,作者并没有真正生成草的几何体,而是在屏幕空间中把地形颜色颜色沿垂直方向拉伸,这会形成细长的纹理,所以在远处看起来会像草叶。

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

效果:

其他细节:

如何识别是不是草:

文章模板测试中标记的只是地形,但是不是草地区域需要另外做区分,作者简单判断原像素是不是绿色来判断是不是草区域。

也就是要同时满足在地形上绿色的条件才会进行托抹。

有可能一些非地形组成部分的源像素被误处理,比如树木、路标、其他场景装饰物等等。为了检测这种情况,作者简单做了一个深度测试

所以SSG实际上通过三层判断条件来尽可能保证处理草地。

第一层是Stencil Mask

第二层是Green Test

第三层是Depth Test

最终效果:

局限性:

1,只能固定垂直方向:因为它假设草叶永远朝屏幕上方生长。

2,缺乏风场动画

参考资料:

GPU Pro5 图像空间篇

相关推荐
玖玥拾3 小时前
LeetCode 392 判断子序列
笔记·算法·leetcode
摇滚侠3 小时前
《SpringBoot 3:入门与应用实战》第 7 章 AOP 思想与实现 阅读笔记 15
java·spring boot·笔记
摇滚侠4 小时前
《SpringBoot 3:入门与应用实战》第 7 章 AOP 思想与实现 阅读笔记 14
spring boot·笔记·后端
陈年老古董6 小时前
OpenCV图像处理笔记:图像拼接、答题卡识别与目标提取
人工智能·笔记·python·opencv·计算机视觉
陈年老古董6 小时前
CentOS编译安装Python3.11完整教程
linux·笔记·学习·centos·python3.11
动词ing7 小时前
【学习笔记】数据结构(数组长度和关键特性+快慢指针+左右指针)
数据结构·笔记·学习
老当益壮梁奶奶7 小时前
Linux 软件编程学习笔记(六):线程编程入门与实践
linux·c语言·c++·笔记·学习
摇滚侠7 小时前
《SpringBoot 3:入门与应用实战》第 8 章 AOP 的进阶机制和应用 阅读笔记 16
java·spring boot·笔记
GlueNa2SiO37 小时前
01-Flask入门与环境搭建
笔记·python·学习·flask
GGMM7897 小时前
施耐德 VZ3N1312 浪涌吸收板(整流缓冲板)
笔记·变频器·变频器维修