一些深度/模版测试效果

铁名_IronName Lv4

应用分类

模板作为蒙版

这类效果的核心是:用深度或模板值标记屏幕上的某些像素,后续只在这些像素上渲染特定内容

效果说明典型技术
反射区域控制只允许反射内容出现在镜子或水面区域内模板标记反射面,反射渲染时测试模板
贴花(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

笔记

  • 模型导入还挺麻烦的。贴图丢失。透明显示错误(这个是因为自动生成的材质的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 进行许可。
评论