22#define CUDA_RASTERIZER_H_INCLUDED
33
44#include < vector>
5+ #include < functional>
56
67namespace CudaRasterizer
78{
89 class Rasterizer
910 {
1011 public:
1112
12- virtual void markVisible (
13+ static void markVisible (
1314 int P,
1415 float * means3D,
1516 float * viewmatrix,
1617 float * projmatrix,
17- bool * present) = 0 ;
18+ bool * present);
1819
19- virtual void forward (
20+ static int forward (
21+ std::function<char * (int )> geometryBuffer,
22+ std::function<char* (int )> binningBuffer,
23+ std::function<char* (int )> imageBuffer,
2024 const int P, int D, int M,
2125 const float* background,
2226 const int width, int height,
@@ -34,10 +38,10 @@ namespace CudaRasterizer
3438 const float tan_fovx, float tan_fovy,
3539 const bool prefiltered,
3640 float* out_color,
37- int * radii = nullptr ) = 0 ;
41+ int* radii) ;
3842
39- virtual void backward (
40- const int P, int D, int M,
43+ static void backward (
44+ const int P, int D, int M, int R,
4145 const float * background,
4246 const int width, int height,
4347 const float * means3D,
@@ -47,11 +51,14 @@ namespace CudaRasterizer
4751 const float scale_modifier,
4852 const float * rotations,
4953 const float * cov3D_precomp,
50- const float * viewmatrix,
54+ const float * viewmatrix,
5155 const float * projmatrix,
5256 const float * campos,
5357 const float tan_fovx, float tan_fovy,
5458 const int * radii,
59+ char * geom_buffer,
60+ char * binning_buffer,
61+ char * image_buffer,
5562 const float * dL_dpix,
5663 float * dL_dmean2D,
5764 float * dL_dconic,
@@ -61,11 +68,7 @@ namespace CudaRasterizer
6168 float * dL_dcov3D,
6269 float * dL_dsh,
6370 float * dL_dscale,
64- float * dL_drot) = 0;
65-
66- virtual ~Rasterizer () {};
67-
68- static Rasterizer* make (int resizeMultipliyer = 2 );
71+ float * dL_drot);
6972 };
7073};
7174
0 commit comments