Spaces:
Running
on
Zero
Running
on
Zero
Diffsplat
/
extensions
/RaDe-GS
/SIBR_viewers
/src
/projects
/gaussianviewer
/renderer
/GaussianView.hpp
/* | |
* Copyright (C) 2023, Inria | |
* GRAPHDECO research group, https://team.inria.fr/graphdeco | |
* All rights reserved. | |
* | |
* This software is free for non-commercial, research and evaluation use | |
* under the terms of the LICENSE.md file. | |
* | |
* For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr | |
*/ | |
namespace CudaRasterizer | |
{ | |
class Rasterizer; | |
} | |
namespace sibr { | |
class BufferCopyRenderer; | |
class BufferCopyRenderer2; | |
/** | |
* \class RemotePointView | |
* \brief Wrap a ULR renderer with additional parameters and information. | |
*/ | |
class SIBR_EXP_ULR_EXPORT GaussianView : public sibr::ViewBase | |
{ | |
SIBR_CLASS_PTR(GaussianView); | |
public: | |
/** | |
* Constructor | |
* \param ibrScene The scene to use for rendering. | |
* \param render_w rendering width | |
* \param render_h rendering height | |
*/ | |
GaussianView(const sibr::BasicIBRScene::Ptr& ibrScene, uint render_w, uint render_h, const char* file, bool* message_read, int sh_degree, bool white_bg = false, bool useInterop = true, int device = 0); | |
/** Replace the current scene. | |
*\param newScene the new scene to render */ | |
void setScene(const sibr::BasicIBRScene::Ptr & newScene); | |
/** | |
* Perform rendering. Called by the view manager or rendering mode. | |
* \param dst The destination rendertarget. | |
* \param eye The novel viewpoint. | |
*/ | |
void onRenderIBR(sibr::IRenderTarget& dst, const sibr::Camera& eye) override; | |
/** | |
* Update inputs (do nothing). | |
* \param input The inputs state. | |
*/ | |
void onUpdate(Input& input) override; | |
/** | |
* Update the GUI. | |
*/ | |
void onGUI() override; | |
/** \return a reference to the scene */ | |
const std::shared_ptr<sibr::BasicIBRScene> & getScene() const { return _scene; } | |
virtual ~GaussianView() override; | |
bool* _dontshow; | |
protected: | |
std::string currMode = "Splats"; | |
bool _cropping = false; | |
sibr::Vector3f _boxmin, _boxmax, _scenemin, _scenemax; | |
char _buff[512] = "cropped.ply"; | |
bool _fastCulling = true; | |
int _device = 0; | |
int _sh_degree = 3; | |
int count; | |
float* pos_cuda; | |
float* rot_cuda; | |
float* scale_cuda; | |
float* opacity_cuda; | |
float* shs_cuda; | |
int* rect_cuda; | |
GLuint imageBuffer; | |
cudaGraphicsResource_t imageBufferCuda; | |
size_t allocdGeom = 0, allocdBinning = 0, allocdImg = 0; | |
void* geomPtr = nullptr, * binningPtr = nullptr, * imgPtr = nullptr; | |
std::function<char* (size_t N)> geomBufferFunc, binningBufferFunc, imgBufferFunc; | |
float* view_cuda; | |
float* proj_cuda; | |
float* cam_pos_cuda; | |
float* background_cuda; | |
float _scalingModifier = 1.0f; | |
GaussianData* gData; | |
bool _interop_failed = false; | |
std::vector<char> fallback_bytes; | |
float* fallbackBufferCuda = nullptr; | |
bool accepted = false; | |
std::shared_ptr<sibr::BasicIBRScene> _scene; ///< The current scene. | |
PointBasedRenderer::Ptr _pointbasedrenderer; | |
BufferCopyRenderer* _copyRenderer; | |
GaussianSurfaceRenderer* _gaussianRenderer; | |
}; | |
} /*namespace sibr*/ | |