我正在研究一种在真实环境(AR)上呈现虚拟对象的移动应用程序,有点像Pokemon Go。每帧的背景是相机图像,传递给片段着色器。与相机图像一起,程序计算的深度图像作为纹理传递给片段着色器。
我想将深度纹理用作虚拟对象的深度贴图。目前,这有效,但由于以下原因看起来不太好。对象的深度与深度纹理的深度之间的比较是二元的,导致虚拟对象上的遮挡的可见边缘。我希望遮挡逐渐淡入,而不是硬边缘。我怎样才能做到这一点?
片段着色器中的当前比较如下所示:
float visibility = clamp(0.5 * (depth_mm - asset_depth_mm) + 0.5, 0.0, 1.0);
gl_FragColor.a = visibility * object_color.a;
如何更改此项以使对象被遮挡的区域看起来逐渐消失,而不是即时更改alpha?
答案 0 :(得分:0)
我会改变:
char array[6]={'h','e','l','l','o'};
到
float visibility = clamp(0.5 * (depth_mm - asset_depth_mm) + 0.5, 0.0, 1.0);
(将0.001乘数的有效性调整为看起来不错的东西)