"docs/docker.mdx" did not exist on "e9e9bdb8d904f009e8b1e54af9f77624d481cfb2"
test_rendering.py 929 Bytes
Newer Older
Ruilong Li(李瑞龙)'s avatar
Ruilong Li(李瑞龙) committed
1
import pytest
Ruilong Li(李瑞龙)'s avatar
Ruilong Li(李瑞龙) committed
2
3
import torch

Ruilong Li(李瑞龙)'s avatar
Ruilong Li(李瑞龙) committed
4
5
from nerfacc.ray_marching import ray_marching
from nerfacc.vol_rendering import render_weight_from_density
Ruilong Li(李瑞龙)'s avatar
Ruilong Li(李瑞龙) committed
6
7

device = "cuda:0"
Ruilong Li(李瑞龙)'s avatar
Ruilong Li(李瑞龙) committed
8
batch_size = 128
Ruilong Li(李瑞龙)'s avatar
Ruilong Li(李瑞龙) committed
9
10


Ruilong Li(李瑞龙)'s avatar
Ruilong Li(李瑞龙) committed
11
12
13
14
@pytest.mark.skipif(not torch.cuda.is_available, reason="No CUDA device")
def test_transmittance_compress():
    rays_o = torch.rand((batch_size, 3), device=device)
    rays_d = torch.randn((batch_size, 3), device=device)
Ruilong Li(李瑞龙)'s avatar
Ruilong Li(李瑞龙) committed
15
16
    rays_d = rays_d / rays_d.norm(dim=-1, keepdim=True)

Ruilong Li(李瑞龙)'s avatar
Ruilong Li(李瑞龙) committed
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    packed_info, t_starts, t_ends = ray_marching(
        rays_o,
        rays_d,
        near_plane=0.1,
        far_plane=1.0,
        render_step_size=1e-2,
    )
    sigmas = torch.rand_like(t_starts, requires_grad=True)
    weights = render_weight_from_density(
        packed_info,
        t_starts,
        t_ends,
        sigmas * 1e2,
    )
    weights.sum().backward()
    assert sigmas.grad is not None
Ruilong Li(李瑞龙)'s avatar
Ruilong Li(李瑞龙) committed
33
34
35


if __name__ == "__main__":
Ruilong Li(李瑞龙)'s avatar
Ruilong Li(李瑞龙) committed
36
    test_transmittance_compress()