55 lines
No EOL
1,012 B
C++
55 lines
No EOL
1,012 B
C++
#pragma once
|
|
|
|
#include "RayTracer.hpp"
|
|
#include "RasterRender.hpp"
|
|
|
|
namespace tp {
|
|
class Editor {
|
|
public:
|
|
enum class RenderType { RASTER, PATH_TRACER };
|
|
|
|
public:
|
|
Editor();
|
|
~Editor();
|
|
|
|
void loadDefaults();
|
|
|
|
uint4 getViewportTexID();
|
|
|
|
void setViewportSize(const Vec2F& size);
|
|
void renderViewport();
|
|
|
|
void renderPathFrame();
|
|
void setRenderType(RenderType type);
|
|
void denoisePathRenderBuffers();
|
|
|
|
void navigationOrbit(const Vec2F& delta);
|
|
void navigationPan(const Vec2F& pos, const Vec2F& prevPos);
|
|
void navigationZoom(halnf factor);
|
|
void navigationReset();
|
|
|
|
void selectObject(const Vec2F& screenPos);
|
|
Object* getActiveObject();
|
|
|
|
Scene* getScene();
|
|
|
|
private:
|
|
void sendBuffersToGPU();
|
|
void denoise();
|
|
|
|
private:
|
|
Scene mScene;
|
|
|
|
Camera mResetCamera;
|
|
|
|
RenderType mRenderType = RenderType::RASTER;
|
|
|
|
RasterRender mRasterRenderer;
|
|
RayTracer mPathRenderer;
|
|
|
|
RayTracer::OutputBuffers mPathTracerBuffers;
|
|
uint4 mPathRenderTexture = 0;
|
|
|
|
Object* mActive = nullptr;
|
|
};
|
|
} |