MCPcopy Create free account
hub / github.com/TomClabault/HIPRT-Path-Tracer / DisplayViewSystem

Method DisplayViewSystem

src/UI/DisplayView/DisplayViewSystem.cpp:14–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12extern ImGuiLogger g_imgui_logger;
13
14DisplayViewSystem::DisplayViewSystem(std::shared_ptr<GPURenderer> renderer, RenderWindow* render_window)
15{
16 m_renderer = renderer;
17 m_render_window = render_window;
18
19 // Creating the texture that will contain the path traced data to be displayed
20 // by the shader.
21 glGenTextures(1, &m_display_texture_1.first);
22 glGenTextures(1, &m_display_texture_2.first);
23
24 // This empty VAO is necessary on NVIDIA drivers even though
25 // we're hardcoding our full screen quad in the vertex shader
26 glCreateVertexArrays(1, &m_vao);
27
28 OpenGLShader fullscreen_quad_vertex_shader = OpenGLShader(GLSL_SHADERS_DIRECTORY "/fullscreen_quad.vert", OpenGLShader::VERTEX_SHADER);
29 OpenGLShader default_display_fragment_shader = OpenGLShader(GLSL_SHADERS_DIRECTORY "/default_display.frag", OpenGLShader::FRAGMENT_SHADER);
30 OpenGLShader blend_2_display_fragment_shader = OpenGLShader(GLSL_SHADERS_DIRECTORY "/blend_2_display.frag", OpenGLShader::FRAGMENT_SHADER);
31 OpenGLShader normal_display_fragment_shader = OpenGLShader(GLSL_SHADERS_DIRECTORY "/normal_display.frag", OpenGLShader::FRAGMENT_SHADER);
32 OpenGLShader albedo_display_fragment_shader = OpenGLShader(GLSL_SHADERS_DIRECTORY "/albedo_display.frag", OpenGLShader::FRAGMENT_SHADER);
33 OpenGLShader adaptive_display_fragment_shader = OpenGLShader(GLSL_SHADERS_DIRECTORY "/heatmap_int.frag", OpenGLShader::FRAGMENT_SHADER);
34 OpenGLShader pixel_converged_display_fragment_shader = OpenGLShader(GLSL_SHADERS_DIRECTORY "/boolmap_int.frag", OpenGLShader::FRAGMENT_SHADER);
35 OpenGLShader white_furnace_threshold_shader = OpenGLShader(GLSL_SHADERS_DIRECTORY "/white_furnace_threshold.frag", OpenGLShader::FRAGMENT_SHADER);
36
37 // Making shared_ptr<OpenGLProgram>s here because multiple display views may share the same OpenGLProgram
38 std::shared_ptr<OpenGLProgram> default_display_program = std::make_shared<OpenGLProgram>(fullscreen_quad_vertex_shader, default_display_fragment_shader);
39 std::shared_ptr<OpenGLProgram> blend_2_display_program = std::make_shared<OpenGLProgram>(fullscreen_quad_vertex_shader, blend_2_display_fragment_shader);
40 std::shared_ptr<OpenGLProgram> normal_display_program = std::make_shared<OpenGLProgram>(fullscreen_quad_vertex_shader, normal_display_fragment_shader);
41 std::shared_ptr<OpenGLProgram> albedo_display_program = std::make_shared<OpenGLProgram>(fullscreen_quad_vertex_shader, albedo_display_fragment_shader);
42 std::shared_ptr<OpenGLProgram> pixel_convergence_heatmap_display_program = std::make_shared<OpenGLProgram>(fullscreen_quad_vertex_shader, adaptive_display_fragment_shader);
43 std::shared_ptr<OpenGLProgram> pixel_converged_display_program = std::make_shared<OpenGLProgram>(fullscreen_quad_vertex_shader, pixel_converged_display_fragment_shader);
44 std::shared_ptr<OpenGLProgram> white_furnace_threshold_program = std::make_shared<OpenGLProgram>(fullscreen_quad_vertex_shader, white_furnace_threshold_shader);
45
46 // Creating all the display views
47 DisplayView default_display_view = DisplayView(DisplayViewType::DEFAULT, default_display_program);
48 DisplayView gmon_blend_display_view = DisplayView(DisplayViewType::GMON_BLEND, blend_2_display_program);
49 DisplayView denoise_blend_display_view = DisplayView(DisplayViewType::DENOISED_BLEND, blend_2_display_program);
50 DisplayView normals_display_view = DisplayView(DisplayViewType::DISPLAY_DENOISER_NORMALS, normal_display_program);
51 DisplayView albedo_display_view = DisplayView(DisplayViewType::DISPLAY_DENOISER_ALBEDO, albedo_display_program);
52 DisplayView pixel_convergence_heatmap_display_view = DisplayView(DisplayViewType::PIXEL_CONVERGENCE_HEATMAP, pixel_convergence_heatmap_display_program);
53 DisplayView pixel_converged_display_view = DisplayView(DisplayViewType::PIXEL_CONVERGED_MAP, pixel_converged_display_program);
54 DisplayView white_furnace_threshold_view = DisplayView(DisplayViewType::WHITE_FURNACE_THRESHOLD, white_furnace_threshold_program);
55
56 // Adding the display views to the map
57 m_display_views[DisplayViewType::DEFAULT] = default_display_view;
58 m_display_views[DisplayViewType::GMON_BLEND] = gmon_blend_display_view;
59 m_display_views[DisplayViewType::DENOISED_BLEND] = denoise_blend_display_view;
60 m_display_views[DisplayViewType::DISPLAY_DENOISER_NORMALS] = normals_display_view;
61 m_display_views[DisplayViewType::DISPLAY_DENOISER_ALBEDO] = albedo_display_view;
62 m_display_views[DisplayViewType::PIXEL_CONVERGENCE_HEATMAP] = pixel_convergence_heatmap_display_view;
63 m_display_views[DisplayViewType::PIXEL_CONVERGED_MAP] = pixel_converged_display_view;
64 m_display_views[DisplayViewType::WHITE_FURNACE_THRESHOLD] = white_furnace_threshold_view;
65
66 // Denoiser blend by default if denoising enabled. Default view otherwise
67 DisplayViewType default_display_view_type = DisplayViewType::DEFAULT;
68 if (m_render_window->get_application_settings()->enable_denoising)
69 default_display_view_type = DisplayViewType::DENOISED_BLEND;
70 else if (m_renderer->get_gmon_render_pass()->is_render_pass_used())
71 default_display_view_type = DisplayViewType::GMON_BLEND;

Callers

nothing calls this directly

Calls 5

OpenGLShaderClass · 0.85
DisplayViewClass · 0.85
is_render_pass_usedMethod · 0.45
get_gmon_render_passMethod · 0.45

Tested by

no test coverage detected