capture with renderdoc can be triggered from editor UI
This commit is contained in:
parent
a877c92366
commit
299dedfc6d
3 changed files with 26 additions and 5 deletions
|
@ -4934,10 +4934,15 @@ struct StudioAppPlugin : StudioApp::IPlugin
|
|||
|
||||
void init() override
|
||||
{
|
||||
m_renderdoc_action.init(" Launch RenderDoc", "Launch RenderDoc", "launch_renderdoc", "", false);
|
||||
m_renderdoc_action.func.bind<&StudioAppPlugin::launchRenderDoc>(this);
|
||||
m_renderdoc_launch_action.init(" Launch RenderDoc", "Launch RenderDoc", "launch_renderdoc", "", false);
|
||||
m_renderdoc_launch_action.func.bind<&StudioAppPlugin::launchRenderDoc>(this);
|
||||
|
||||
m_renderdoc_capture_action.init(" Capture with RenderDoc", "Capture with RenderDoc", "capture_renderdoc", "", false);
|
||||
m_renderdoc_capture_action.func.bind<&StudioAppPlugin::captureRenderDoc>(this);
|
||||
|
||||
if (renderDocOption()) {
|
||||
m_app.addToolAction(&m_renderdoc_action);
|
||||
m_app.addToolAction(&m_renderdoc_launch_action);
|
||||
m_app.addToolAction(&m_renderdoc_capture_action);
|
||||
}
|
||||
|
||||
IAllocator& allocator = m_app.getAllocator();
|
||||
|
@ -5003,6 +5008,7 @@ struct StudioAppPlugin : StudioApp::IPlugin
|
|||
m_particle_emitter_property_plugin.m_particle_editor = m_particle_editor.get();
|
||||
}
|
||||
|
||||
void captureRenderDoc() { m_scene_view.captureFrameRenderDoc(); }
|
||||
void launchRenderDoc() { gpu::launchRenderDoc(); }
|
||||
|
||||
void showEnvironmentProbeGizmo(UniverseView& view, ComponentUID cmp) {
|
||||
|
@ -5207,7 +5213,8 @@ struct StudioAppPlugin : StudioApp::IPlugin
|
|||
|
||||
~StudioAppPlugin()
|
||||
{
|
||||
m_app.removeAction(&m_renderdoc_action);
|
||||
m_app.removeAction(&m_renderdoc_launch_action);
|
||||
m_app.removeAction(&m_renderdoc_capture_action);
|
||||
|
||||
IAllocator& allocator = m_app.getAllocator();
|
||||
|
||||
|
@ -5246,7 +5253,8 @@ struct StudioAppPlugin : StudioApp::IPlugin
|
|||
}
|
||||
|
||||
StudioApp& m_app;
|
||||
Action m_renderdoc_action;
|
||||
Action m_renderdoc_launch_action;
|
||||
Action m_renderdoc_capture_action;
|
||||
CompositeTextureEditor m_composite_texture_editor;
|
||||
UniquePtr<ParticleEditor> m_particle_editor;
|
||||
EditorUIRenderPlugin m_editor_ui_render_plugin;
|
||||
|
|
|
@ -1157,6 +1157,10 @@ void SceneView::onToolbar()
|
|||
}
|
||||
}
|
||||
|
||||
void SceneView::captureFrameRenderDoc() {
|
||||
m_renderdoc_capture_request = true;
|
||||
}
|
||||
|
||||
void SceneView::handleEvents() {
|
||||
const bool handle_input = m_is_mouse_captured || (ImGui::IsItemHovered() && os::getFocused() == ImGui::GetWindowViewport()->PlatformHandle);
|
||||
const os::Event* events = m_app.getEvents();
|
||||
|
@ -1386,7 +1390,14 @@ void SceneView::onWindowGUI()
|
|||
vp.h = (int)size.y;
|
||||
m_view->setViewport(vp);
|
||||
m_pipeline->setViewport(vp);
|
||||
if (m_renderdoc_capture_request) {
|
||||
m_pipeline->getRenderer().getDrawStream().startCapture();
|
||||
}
|
||||
m_pipeline->render(false);
|
||||
if (m_renderdoc_capture_request) {
|
||||
m_pipeline->getRenderer().getDrawStream().stopCapture();
|
||||
m_renderdoc_capture_request = false;
|
||||
}
|
||||
m_view->m_draw_vertices.clear();
|
||||
m_view->m_draw_cmds.clear();
|
||||
m_view->inputFrame();
|
||||
|
|
|
@ -27,6 +27,7 @@ struct SceneView : StudioApp::GUIPlugin
|
|||
explicit SceneView(StudioApp& app);
|
||||
~SceneView();
|
||||
|
||||
void captureFrameRenderDoc();
|
||||
void update(float time_delta) override;
|
||||
void setUniverse(Universe* universe);
|
||||
void onWindowGUI() override;
|
||||
|
@ -84,6 +85,7 @@ private:
|
|||
Shader* m_debug_shape_shader;
|
||||
struct UniverseViewImpl* m_view;
|
||||
|
||||
bool m_renderdoc_capture_request = false;
|
||||
bool m_is_measure_active = false;
|
||||
bool m_is_measure_from_set = false;
|
||||
DVec3 m_measure_to = {0, 0, 0};
|
||||
|
|
Loading…
Reference in a new issue