first commit
This commit is contained in:
48
taichi_modules/volume_render_test.py
Normal file
48
taichi_modules/volume_render_test.py
Normal file
@@ -0,0 +1,48 @@
|
||||
import taichi as ti
|
||||
|
||||
|
||||
@ti.kernel
|
||||
def composite_test(
|
||||
sigmas: ti.types.ndarray(ndim=2), rgbs: ti.types.ndarray(ndim=3),
|
||||
deltas: ti.types.ndarray(ndim=2), ts: ti.types.ndarray(ndim=2),
|
||||
hits_t: ti.types.ndarray(ndim=2),
|
||||
alive_indices: ti.types.ndarray(ndim=1), T_threshold: float,
|
||||
N_eff_samples: ti.types.ndarray(ndim=1),
|
||||
opacity: ti.types.ndarray(ndim=1),
|
||||
depth: ti.types.ndarray(ndim=1), rgb: ti.types.ndarray(ndim=2)):
|
||||
|
||||
for n in alive_indices:
|
||||
samples = N_eff_samples[n]
|
||||
if samples == 0:
|
||||
alive_indices[n] = -1
|
||||
else:
|
||||
r = alive_indices[n]
|
||||
|
||||
T = 1 - opacity[r]
|
||||
|
||||
rgb_temp_0 = 0.0
|
||||
rgb_temp_1 = 0.0
|
||||
rgb_temp_2 = 0.0
|
||||
depth_temp = 0.0
|
||||
opacity_temp = 0.0
|
||||
|
||||
for s in range(samples):
|
||||
a = 1.0 - ti.exp(-sigmas[n, s] * deltas[n, s])
|
||||
w = a * T
|
||||
|
||||
rgb_temp_0 += w * rgbs[n, s, 0]
|
||||
rgb_temp_1 += w * rgbs[n, s, 1]
|
||||
rgb_temp_2 += w * rgbs[n, s, 2]
|
||||
depth[r] += w * ts[n, s]
|
||||
opacity[r] += w
|
||||
T *= 1.0 - a
|
||||
|
||||
if T <= T_threshold:
|
||||
alive_indices[n] = -1
|
||||
break
|
||||
|
||||
rgb[r, 0] += rgb_temp_0
|
||||
rgb[r, 1] += rgb_temp_1
|
||||
rgb[r, 2] += rgb_temp_2
|
||||
depth[r] += depth_temp
|
||||
opacity[r] += opacity_temp
|
||||
Reference in New Issue
Block a user