void RenderSettingsWindow::create_image_plane_sampling_panel(QLayout* parent)
{
    FoldablePanelWidget* panel = new FoldablePanelWidget("Image Plane Sampling");
    parent->addWidget(panel);
    m_panels.push_back(panel);

    QVBoxLayout* layout = new QVBoxLayout();
    panel->container()->setLayout(layout);

    create_image_plane_sampling_general_settings(layout);
    create_image_plane_sampling_sampler_settings(layout);
}
void RenderSettingsWindow::create_system_panel(QLayout* parent)
{
    FoldablePanelWidget* panel = new FoldablePanelWidget("System");
    parent->addWidget(panel);
    m_panels.push_back(panel);

    panel->fold();

    QVBoxLayout* layout = new QVBoxLayout();
    panel->container()->setLayout(layout);

    create_system_override_rendering_threads_settings(layout);
    create_system_override_texture_store_max_size_settings(layout);
}
void RenderSettingsWindow::create_lighting_panel(QLayout* parent)
{
    FoldablePanelWidget* panel = new FoldablePanelWidget("Lighting");
    parent->addWidget(panel);
    m_panels.push_back(panel);

    QFormLayout* layout = create_form_layout();
    panel->container()->setLayout(layout);

    QComboBox* engine = create_combobox("lighting.engine");
    engine->addItem("Distribution Ray Tracer", "drt");
    engine->addItem("Unidirectional Path Tracer", "pt");
    layout->addRow("Engine:", engine);
}
void RenderSettingsWindow::create_drt_panel(QLayout* parent)
{
    FoldablePanelWidget* panel = new FoldablePanelWidget("Distribution Ray Tracer");
    parent->addWidget(panel);
    m_panels.push_back(panel);

    panel->fold();

    QVBoxLayout* layout = new QVBoxLayout();
    panel->container()->setLayout(layout);

    QGroupBox* groupbox = new QGroupBox("Components");
    layout->addWidget(groupbox);

    QVBoxLayout* sublayout = new QVBoxLayout();
    groupbox->setLayout(sublayout);

    sublayout->addWidget(create_checkbox("drt.lighting_components.ibl", "Image-Based Lighting"));

    create_bounce_settings_group(layout, "drt");
    create_drt_advanced_settings(layout);
}
void RenderSettingsWindow::create_sppm_panel(QLayout* parent)
{
    FoldablePanelWidget* panel = new FoldablePanelWidget("Stochastic Progressive Photon Mapping");
    parent->addWidget(panel);
    m_panels.push_back(panel);

    panel->fold();

    QVBoxLayout* layout = new QVBoxLayout();
    panel->container()->setLayout(layout);

    QGroupBox* groupbox = new QGroupBox("Components");
    layout->addWidget(groupbox);

    QVBoxLayout* sublayout = new QVBoxLayout();
    groupbox->setLayout(sublayout);

    QRadioButton* dl_buttons_sppm = create_radio_button("sppm.lighting_components.dl.sppm", "SPPM Direct Lighting");
    QRadioButton* dl_buttons_rt = create_radio_button("sppm.lighting_components.dl.rt", "RT Direct Lighting");
    QRadioButton* dl_buttons_off = create_radio_button("sppm.lighting_components.dl.off", "No Direct Lighting");

    QButtonGroup* dl_buttons = new QButtonGroup(groupbox);
    dl_buttons->addButton(dl_buttons_sppm);
    dl_buttons->addButton(dl_buttons_rt);
    dl_buttons->addButton(dl_buttons_off);

    QHBoxLayout* button_layout = new QHBoxLayout();
    button_layout->addWidget(dl_buttons_sppm);
    button_layout->addWidget(dl_buttons_rt);
    button_layout->addWidget(dl_buttons_off);
    sublayout->addLayout(button_layout);

    sublayout->addWidget(create_checkbox("sppm.lighting_components.ibl", "Image-Based Lighting"));
    sublayout->addWidget(create_checkbox("sppm.lighting_components.caustics", "Caustics"));

    create_sppm_photon_tracing_settings(layout);
    create_sppm_radiance_estimation_settings(layout);
}
void RenderSettingsWindow::create_pt_panel(QLayout* parent)
{
    FoldablePanelWidget* panel = new FoldablePanelWidget("Unidirectional Path Tracer");
    parent->addWidget(panel);
    m_panels.push_back(panel);

    panel->fold();

    QVBoxLayout* layout = new QVBoxLayout();
    panel->container()->setLayout(layout);

    QGroupBox* groupbox = new QGroupBox("Components");
    layout->addWidget(groupbox);

    QVBoxLayout* sublayout = new QVBoxLayout();
    groupbox->setLayout(sublayout);

    sublayout->addWidget(create_checkbox("pt.lighting_components.dl", "Direct Lighting"));
    sublayout->addWidget(create_checkbox("pt.lighting_components.ibl", "Image-Based Lighting"));
    sublayout->addWidget(create_checkbox("pt.lighting_components.caustics", "Caustics"));

    create_bounce_settings(layout, "pt");
    create_pt_advanced_settings(layout);
}