Open oliver-batchelor opened 7 months ago
FWIW: Along this line I've been been making a derivative taichi_3d_gaussian_splatting (just the rasterizer for now), key idea is to split everything into parts, so that it's easy to say, replace spherical harmonics with something else. I don't think it loses much efficiency in doing so but gains a lot of flexibility.
Hi there,
Thanks for your great piece of work - I'm keen to try simplifying a few things and interested in your opinion:
First one is relatively simple: There's lots of code like this where there's a parameter:
in_camera_grad_color_buffer: ti.types.ndarray(ti.f32, ndim=2), # (M, 3)
Then some code later:
But did you realise you can declare the parameter like this? Directly creating the vec3 instead:
in_camera_grad_color_buffer: ti.types.ndarray(ti.math.vec3, ndim=1), # (M, 3)
Second one is potentially packing parameters into vectors a little like how you did the Gaussian3D struct, so instead of having a bunch of input parameters:
They could be packed into a
ti.types.ndarray(vec12, ndim=1)
and unpacked into aGaussian2D
struct, a few helper abstractions can simplify it to avoid creating even more boilerplate...Thanks! Oliver