Skip to content

Commit b14a93a

Browse files
authored
m_pViewportSampleNumber (#2105)
1 parent e906cd1 commit b14a93a

File tree

6 files changed

+56
-0
lines changed

6 files changed

+56
-0
lines changed

ui/zenoedit/dialog/zpreferencesdlg.cpp

+28
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
#include "startup/zstartup.h"
88
#include "zshortcutsettingdlg.h"
99
#include <zenoui/comctrl/zlabel.h>
10+
#include "viewport/displaywidget.h"
11+
#include <zenovis/DrawOptions.h>
1012

1113
//Language Pane
1214
ZLanguagePane::ZLanguagePane(QWidget* parent)
@@ -133,6 +135,23 @@ ZenoCachePane::ZenoCachePane(QWidget* parent) : QWidget(parent)
133135
m_pAutoCleanCache->setEnabled(state && !m_pTempCacheDir->isChecked());
134136
});
135137

138+
m_pViewportSampleNumber = new QSpinBox;
139+
m_pViewportSampleNumber->setRange(1, 10000);
140+
m_pViewportSampleNumber->setValue(1);
141+
{
142+
auto main = zenoApp->getMainWindow();
143+
ZASSERT_EXIT(main);
144+
for (auto displaywid : main->viewports()) {
145+
if (displaywid && !displaywid->isGLViewport()) {
146+
if (auto vis = displaywid->getZenoVis()) {
147+
if (auto scene = vis->getSession()->get_scene()) {
148+
m_pViewportSampleNumber->setValue(scene->drawOptions->num_samples);
149+
}
150+
}
151+
}
152+
}
153+
}
154+
136155
QGridLayout* pLayout = new QGridLayout(this);
137156
pLayout->addWidget(new QLabel(tr("Enable cache")), 0, 0);
138157
pLayout->addWidget(m_pEnableCheckbox, 0, 1);
@@ -148,6 +167,8 @@ ZenoCachePane::ZenoCachePane(QWidget* parent) : QWidget(parent)
148167
pLayout->addWidget(m_pEnableShiftChangeFOV, 5, 1);
149168
pLayout->addWidget(new QLabel(tr("Viewport Point Size scale")), 6, 0);
150169
pLayout->addWidget(m_pViewportPointSizeScaleSpinBox, 6, 1);
170+
pLayout->addWidget(new QLabel(tr("Viewport Sample Number")), 7, 0);
171+
pLayout->addWidget(m_pViewportSampleNumber, 7, 1);
151172
QSpacerItem* pSpacerItem = new QSpacerItem(10, 10, QSizePolicy::Expanding);
152173
pLayout->addItem(pSpacerItem, 0, 2, 5);
153174
pLayout->setAlignment(Qt::AlignLeft | Qt::AlignTop);
@@ -163,6 +184,13 @@ void ZenoCachePane::saveValue()
163184
inst.setValue(zsCacheAutoClean, m_pAutoCleanCache->checkState() == Qt::Checked);
164185
inst.setValue(zsEnableShiftChangeFOV, m_pEnableShiftChangeFOV->checkState() == Qt::Checked);
165186
inst.setValue(zsViewportPointSizeScale, m_pViewportPointSizeScaleSpinBox->value());
187+
auto main = zenoApp->getMainWindow();
188+
ZASSERT_EXIT(main);
189+
for (auto displaywid : main->viewports()) {
190+
if (displaywid) {
191+
displaywid->setSampleNumber(m_pViewportSampleNumber->value());
192+
}
193+
}
166194
}
167195

168196
//layout pane

ui/zenoedit/dialog/zpreferencesdlg.h

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class ZenoCachePane : public QWidget
3535
QDoubleSpinBox* m_pViewportPointSizeScaleSpinBox;
3636

3737
QCheckBox* m_pEnableShiftChangeFOV;
38+
QSpinBox* m_pViewportSampleNumber;
3839
};
3940

4041
//NASLOCPane

ui/zenoedit/viewport/displaywidget.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -779,6 +779,13 @@ void DisplayWidget::onSetBackground(bool bShowBackground)
779779
}
780780
}
781781

782+
void DisplayWidget::setSampleNumber(int sample_number)
783+
{
784+
if (!m_bGLView) {
785+
m_optixView->setSampleNumber(sample_number);
786+
}
787+
}
788+
782789
zenovis::ZOptixCameraSettingInfo DisplayWidget::getCamera() const
783790
{
784791
if (!m_bGLView) {

ui/zenoedit/viewport/displaywidget.h

+1
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public slots:
8181
void onDockViewAction(bool triggered);
8282
void onSetCamera(zenovis::ZOptixCameraSettingInfo value);
8383
void onSetBackground(bool bShowBackground);
84+
void setSampleNumber(int sample_number);
8485
zenovis::ZOptixCameraSettingInfo getCamera() const;
8586

8687
signals:

ui/zenoedit/viewport/optixviewport.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,16 @@ void OptixWorker::onSetBackground(bool bShowBg)
351351
updateFrame();
352352
}
353353

354+
void OptixWorker::onSetSampleNumber(int sample_number) {
355+
ZASSERT_EXIT(m_zenoVis);
356+
auto session = m_zenoVis->getSession();
357+
ZASSERT_EXIT(session);
358+
auto scene = session->get_scene();
359+
ZASSERT_EXIT(scene);
360+
scene->drawOptions->num_samples = sample_number;
361+
updateFrame();
362+
}
363+
354364
void OptixWorker::onSetData(
355365
float aperture,
356366
float shutter_speed,
@@ -440,6 +450,7 @@ ZOptixViewport::ZOptixViewport(QWidget* parent)
440450
connect(this, &ZOptixViewport::sig_cleanUpScene, m_worker, &OptixWorker::onCleanUpScene);
441451
connect(this, &ZOptixViewport::sig_cleanUpView, m_worker, &OptixWorker::onCleanUpView);
442452
connect(this, &ZOptixViewport::sig_setBackground, m_worker, &OptixWorker::onSetBackground);
453+
connect(this, &ZOptixViewport::sig_setSampleNumber, m_worker, &OptixWorker::onSetSampleNumber);
443454
connect(this, &ZOptixViewport::sig_setdata_on_optix_thread, m_worker, &OptixWorker::onSetData);
444455

445456
setRenderSeparately(false, false);
@@ -599,6 +610,11 @@ void ZOptixViewport::showBackground(bool bShow)
599610
emit sig_setBackground(bShow);
600611
}
601612

613+
void ZOptixViewport::setSampleNumber(int sample_number)
614+
{
615+
emit sig_setSampleNumber(sample_number);
616+
}
617+
602618
void ZOptixViewport::resizeEvent(QResizeEvent* event)
603619
{
604620
QWidget::resizeEvent(event);

ui/zenoedit/viewport/optixviewport.h

+3
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public slots:
4444
void onCleanUpScene();
4545
void onCleanUpView();
4646
void onSetBackground(bool bShowBg);
47+
void onSetSampleNumber(int sample_number);
4748

4849
void onSetData(float, float, float, bool, bool, bool, bool, float);
4950

@@ -73,6 +74,7 @@ class ZOptixViewport : public QWidget
7374
void setSafeFrames(bool bLock, int nx, int ny);
7475
void setNumSamples(int samples);
7576
void showBackground(bool bShow);
77+
void setSampleNumber(int sample_number);
7678
Zenovis* getZenoVis() const;
7779
bool isCameraMoving() const;
7880
void updateCamera();
@@ -111,6 +113,7 @@ class ZOptixViewport : public QWidget
111113
void sig_cleanUpScene();
112114
void sig_cleanUpView();
113115
void sig_setBackground(bool bShowBg);
116+
void sig_setSampleNumber(int sample_number);
114117
void sig_setdata_on_optix_thread(float, float, float, bool, bool, bool, bool, float);
115118

116119
public slots:

0 commit comments

Comments
 (0)