边缘检测效应

在考虑场景几何体时,该版本的边缘检测 (Edge Detect) 图像效果会在边缘附近产生轮廓。边缘不是由颜色差异确定的,而是由表面法线和相邻像素的相机的距离确定(表面法线是指示表面在给定像素位置的朝向的“箭头”)。一般来说,两个相邻像素具有显著差异的法线和/或离相机距离相差很大时在场景中就会出现边缘。

与其他图像效果一样,此效果仅适用于 Unity 专业版,并且必须先安装 Pro Standard Assets,然后才能使用。


示例边缘检测。请注意边缘轮廓是如何通过添加抗锯齿效果变得平滑而通过边缘检测的。

此效果使用 ImageEffectOpaque 属性,启用在透明渲染通道前执行的图像效果。默认情况下,在完全渲染不透明和透明通道后才执行图像效果。

属性

属性:功能:
模式 (Mode)选择过滤器类型(参阅下文)。
深度灵敏度 (Depth Sensitivity)可指出边缘的相邻像素距离间的最小差异。
法线灵敏度可指出边缘的相邻像素法线间的最小差异。
采样距离 (Sampling Distance)较大的采样距离(默认值为 1.0)会产生较粗的边缘,但也会引入光晕假象。
边缘指数 (Edges exponent)用于 Sobel 过滤器的指数。越小的指数数值可检测到更小的深度差异并以此作为边缘。
背景选项 (Background options)
仅限边缘 (Edges only)使用固定颜色混合背景。
背景 (Background)当仅限边缘 (Edges only) 大于 0 时使用的颜色。

过滤器类型 (Filter Types)

新的 SobelDepthThin 过滤器可使边缘检测对其他基于深度的图像效果也同样有效,例如对于视野深度 (Depth of Field)、雾 (Fog)、或运动模糊 (Motion Blur),因为边缘不总是存在于对象的轮廓中:


边缘不会泄露到散焦背景中,同时背景模糊并不删除产生的边缘

请注意:由于只有深度用于边缘检测,该过滤器会丢弃轮廓内部的边缘。

SobelDepth 工作方式类似,但不会丢弃对象轮廓外部的边缘。因此边缘检测更精确,但并不怎么适合于其他基于深度的效果。

TriangleDepthNormals 可能是最廉价的过滤器,但却可以检查深度和法线以确定像素是否在边缘上,即:不仅仅检测对象轮廓。但是大量的法线贴图细节会使过滤器崩溃。

RobertsCrossDepthNormals 将其属性与 Triangle 过滤器共享,但会检查更多的采样以确定边缘。作为自然的副产物,获得的边缘可能会更粗。

硬件支持

该效果需要带像素着色器 (2.0) 或 OpenGL ES 2.0 的显卡。 此外,还需要深度纹理支持。 PC: 自 2004 年后的 NVIDIA 卡 (GeForce 6)、自 2004 年后的 AMD 卡 (Radeon 9500)、自 2006 年后的 Intel 卡 (GMA X3000);移动: 带深度纹理支持的 OpenGL ES 2.0;控制台: Xbox 360、PS3。

将自动禁用所有不被终端用户显卡支持的图像效果。

Page last updated: 2013-07-01