Alpha channel to return the mask

Summary: Updated the alpha channel in the `hard_rgb_blend` function to return the mask of the pixels which have overlapping mesh faces.

Reviewed By: bottler

Differential Revision: D29001604

fbshipit-source-id: 22a2173d769f2d3ad34892d68ceb628f073bca22
This commit is contained in:
Nikhila Ravi 2021-06-09 15:06:03 -07:00 committed by Facebook GitHub Bot
parent ac6c07fa43
commit a15c33a3cc
3 changed files with 12 additions and 3 deletions

View File

@ -58,7 +58,8 @@ def hard_rgb_blend(colors, fragments, blend_params) -> torch.Tensor:
) # (N, H, W, 3)
# Concat with the alpha channel.
alpha = torch.ones((N, H, W, 1), dtype=colors.dtype, device=device)
alpha = (~is_background).type_as(pixel_colors)[..., None]
return torch.cat([pixel_colors, alpha], dim=-1) # (N, H, W, 4)

View File

@ -184,8 +184,8 @@ class TestBlending(TestCaseMixin, unittest.TestCase):
channel_color = blend_params.background_color[i]
self.assertTrue(images[~is_foreground][..., i].eq(channel_color).all())
# Examine the alpha channel is correct
self.assertTrue(images[..., 3].eq(1).all())
# Examine the alpha channel
self.assertClose(images[..., 3], (pix_to_face[..., 0] >= 0).float())
def test_sigmoid_alpha_blend_manual_gradients(self):
# Create dummy outputs of rasterization

View File

@ -125,6 +125,10 @@ class TestRenderMeshes(TestCaseMixin, unittest.TestCase):
)
images, fragments = renderer(sphere_mesh)
self.assertClose(fragments.zbuf, rasterizer(sphere_mesh).zbuf)
# Check the alpha channel is the mask
self.assertClose(
images[..., -1], (fragments.pix_to_face[..., 0] >= 0).float()
)
else:
renderer = MeshRenderer(rasterizer=rasterizer, shader=shader)
images = renderer(sphere_mesh)
@ -165,6 +169,10 @@ class TestRenderMeshes(TestCaseMixin, unittest.TestCase):
self.assertClose(
fragments.zbuf, rasterizer(sphere_mesh, lights=lights).zbuf
)
# Check the alpha channel is the mask
self.assertClose(
images[..., -1], (fragments.pix_to_face[..., 0] >= 0).float()
)
else:
phong_renderer = MeshRenderer(
rasterizer=rasterizer, shader=phong_shader