一些深度/模版测试效果
应用分类
模板作为蒙版
这类效果的核心是:用深度或模板值标记屏幕上的某些像素,后续只在这些像素上渲染特定内容。
| 效果 | 说明 | 典型技术 |
|---|---|---|
| 反射区域控制 | 只允许反射内容出现在镜子或水面区域内 | 模板标记反射面,反射渲染时测试模板 |
| 贴花(Decal) | 限制贴花只出现在特定表面 | 模板标记目标表面,或深度测试限制投影 |
| 描边/轮廓高亮 | 在物体边缘外侧绘制线条 | 模板标记物体,再渲染外扩模型且仅当模板未标记处 |
| 透视X-Ray | 透过遮挡物看到内部物体 | 模板标记遮挡物,内部物体渲染时测试不通过区域 |
| 切边效果(剖切面) | 只显示平面一侧的物体 | 深度测试函数修改(如Greater)或clip配合模板 |
| 粒子区域限制 | 粒子只出现在特定区域内(如魔法阵内) | 模板标记区域,粒子渲染时测试 |
| 后期特效局部应用 | 模糊、调色等只影响特定区域 | 模板标记区域,后期处理时采样模板缓冲区 |
模板不作为蒙版
- 比较深度值,决定可见性。
| 效果 | 说明 |
|---|---|
| 阴影贴图(ShadowMap) | 从光源深度图比较,判断是否被遮挡 |
| 阴影体(Shadow Volume) | 利用模板标记阴影区域,基于深度测试的增减 |
| 基于深度的着色(湖水/雾) | 获取场景深度,与水面深度差计算颜色 |
| 透明物体排序与混合 | 需要深度测试但关闭深度写入,解决半透明顺序 |
| 遮挡查询(Occlusion Culling) | 用深度测试结果判断物体是否被完全遮挡 |
- 利用模板缓冲区的累加或几何体的正反面计数。
| 效果 | 说明 |
|---|---|
| 阴影体(Z-pass/Z-fail) | 通过模板增减计数,标记阴影区域 |
| 体积光(God Ray) | 沿光线步进,利用深度纹理判断遮挡,本质上也是深度 |
| 立体渲染中的光线步进边界 | 利用深度图确定步进起点/终点 |
| 轮廓体(Silhouette) | 生成物体轮廓体,模板标记边缘 |
已折叠
懒得仔细整理,也懒得删,先放这。
| 效果 | 说明 |
|---|---|
| 提前深度测试(Early-Z) | 优化,不产生视觉效果,但提高性能 |
| 调试可视化(深度/模板值) | 将深度或模板值输出为颜色,用于检查 |
| 逐像素剔除 | 根据模板值跳过不必要的渲染 |
| 效果 | 说明 | 所用机制 |
|---|---|---|
| 镜子/门户(Portal) | 模板标记区域,再渲染另一场景,需要深度测试保持正确遮挡 | 模板+深度 |
| 投影贴花(Projector Decal) | 使用深度纹理计算贴花的世界坐标,再与模板结合限制 | 深度+模板 |
| 水中倒影 | 反射 + 深度混合(控制透明度随水深变化) | 深度+模板 |
| X-Ray + 描边 | 同时看到内部和外部轮廓 | 模板组合 |
实践&代码
主要做的是视觉特效。
- 经典立方体,不同面不同场景。
- 透视X-Ray效果
- 剖切面效果
- 切边效果(能量护盾)
- 描边
—分隔符— - 基于深度的着色(湖水渲染)可参考 https://roystan.net/articles/toon-water/
- 投影贴花
传送门(以后太闲了可以试试,无缝切换那种)
为了方便演示以及展现个人审美,打算搭建一个场景并在其中完成这几个效果。
名为:
掌中立方体 - 配乐:Garoad - a star pierces the darkness
立方体6面,对位面为一组,共三组,渲染3个世界。
世界1:基于深度的着色(湖水渲染)
世界2:战斗场景?有能量护盾就行
世界3:描边的场景(世界1)
浮空平面1:黑色背景,屏幕空间下的科技感数字流,+透视X-Ray效果,对 手和立方体
Credits
- Low Poly Right Hand by Raziq Brown [CC-BY] (https://creativecommons.org/licenses/by/3.0/) via Poly Pizza (https://poly.pizza/m/cl8ax5B13cp)
- Stylized Nature MegaKit[Standard] by @Quaternius
笔记
- 模型导入还挺麻烦的。贴图丢失。透明显示错误(这个是因为自动生成的材质的RenderingMode被设置为了Opaque,而不是CutOut
Unity 模型导入设置:材质
Material Creation Mode: Import via Material Description
会读取FBX文件里详细的材质描述,来生成效果更准确的Unity材质Location: Use Embedded Materials
把材质作为FBX文件的一个“内部零件”来管理。因为是文件内部的资源,所以材质在Inspector里是灰色的,处于只读(read-only) 状态,无法修改。
但在应用设置后,可以点击下方的Extract Materials和Extract Textures按钮,把材质和贴图手动提取到外部文件夹。提取出来的材质就是可编辑的了。
- 标题: 一些深度/模版测试效果
- 作者: 铁名_IronName
- 创建于 : 2026-04-18 10:33:52
- 更新于 : 2026-04-20 19:09:37
- 链接: https://blog.ironname.top/2026/一些深度-模版测试效果/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论