4
0
mirror of https://github.com/nerfstudio-project/nerfstudio.git synced 2026-11-11 02:24:38 +08:00
nerfstudio/tests/nerf/test_renderers.py
2022-04-15 16:58:28 -07:00

41 lines
1.0 KiB
Python

"""
Test renderers
"""
import pytest
import torch
from mattport.nerf import renderers
def test_rgb_renderer():
"""Test RGB volumetric rendering"""
rgb_name = "rgb"
density_name = "density"
num_samples = 10
rgb = torch.ones((3, num_samples, 3))
densities = torch.ones((3, num_samples, 1))
deltas = torch.ones((3, num_samples))
rgb_renderer = renderers.RGB(rgb_name, density_name)
assert rgb_renderer.required_field_outputs is not None
field_output_dict = {rgb_name: rgb, density_name: densities}
out = rgb_renderer(field_output_dict, deltas)
assert torch.max(out) > 0.9
field_output_dict = {rgb_name: rgb * 0, density_name: densities}
out = rgb_renderer(field_output_dict, deltas)
assert torch.max(out) == pytest.approx(0)
field_output_dict = {rgb_name: rgb, density_name: densities * 0}
out = rgb_renderer(field_output_dict, deltas)
assert torch.max(out) == pytest.approx(0)
# TODO Tancik: Add more precise tests
if __name__ == "__main__":
test_rgb_renderer()