Skip to content

Commit ea8d3bb

Browse files
committed
Gui: [skip ci] add options to set one-pass and backface-pass rendering
1 parent 359d3a2 commit ea8d3bb

File tree

3 files changed

+63
-8
lines changed

3 files changed

+63
-8
lines changed

src/Gui/DlgSettings3DView.ui

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,45 @@ but slower response to any scene changes.</string>
214214
</widget>
215215
</item>
216216
<item row="2" column="0">
217+
<widget class="QLabel" name="transparentRenderLabel">
218+
<property name="toolTip">
219+
<string/>
220+
</property>
221+
<property name="text">
222+
<string>Transparent objects:</string>
223+
</property>
224+
</widget>
225+
</item>
226+
<item row="2" column="4">
227+
<widget class="Gui::PrefComboBox" name="comboTransparentRender">
228+
<property name="minimumSize">
229+
<size>
230+
<width>120</width>
231+
<height>0</height>
232+
</size>
233+
</property>
234+
<property name="toolTip">
235+
<string>Render types of transparent objects</string>
236+
</property>
237+
<property name="prefEntry" stdset="0">
238+
<cstring>TransparentObjectRenderType</cstring>
239+
</property>
240+
<property name="prefPath" stdset="0">
241+
<cstring>View</cstring>
242+
</property>
243+
<item>
244+
<property name="text">
245+
<string>One pass</string>
246+
</property>
247+
</item>
248+
<item>
249+
<property name="text">
250+
<string>Backface pass</string>
251+
</property>
252+
</item>
253+
</widget>
254+
</item>
255+
<item row="3" column="0">
217256
<widget class="QLabel" name="markerSizeLabel">
218257
<property name="toolTip">
219258
<string/>
@@ -223,7 +262,7 @@ but slower response to any scene changes.</string>
223262
</property>
224263
</widget>
225264
</item>
226-
<item row="2" column="4">
265+
<item row="3" column="4">
227266
<widget class="QComboBox" name="boxMarkerSize">
228267
<property name="minimumSize">
229268
<size>
@@ -236,14 +275,14 @@ but slower response to any scene changes.</string>
236275
</property>
237276
</widget>
238277
</item>
239-
<item row="3" column="0">
278+
<item row="4" column="0">
240279
<widget class="QLabel" name="textLabel1">
241280
<property name="text">
242281
<string>Eye to eye distance for stereo modes</string>
243282
</property>
244283
</widget>
245284
</item>
246-
<item row="3" column="4">
285+
<item row="4" column="4">
247286
<widget class="Gui::PrefDoubleSpinBox" name="FloatSpinBox_EyeDistance">
248287
<property name="minimumSize">
249288
<size>
@@ -279,7 +318,7 @@ bounding box size of the 3D object that is currently displayed. </string>
279318
</property>
280319
</widget>
281320
</item>
282-
<item row="4" column="0">
321+
<item row="5" column="0">
283322
<widget class="Gui::PrefCheckBox" name="checkBoxBacklight">
284323
<property name="toolTip">
285324
<string>Backlight is enabled with the defined color</string>
@@ -295,7 +334,7 @@ bounding box size of the 3D object that is currently displayed. </string>
295334
</property>
296335
</widget>
297336
</item>
298-
<item row="4" column="1">
337+
<item row="5" column="1">
299338
<widget class="Gui::PrefColorButton" name="backlightColor">
300339
<property name="enabled">
301340
<bool>false</bool>
@@ -318,7 +357,7 @@ bounding box size of the 3D object that is currently displayed. </string>
318357
</property>
319358
</widget>
320359
</item>
321-
<item row="4" column="2">
360+
<item row="5" column="2">
322361
<spacer name="horizontalSpacer">
323362
<property name="orientation">
324363
<enum>Qt::Horizontal</enum>
@@ -331,7 +370,7 @@ bounding box size of the 3D object that is currently displayed. </string>
331370
</property>
332371
</spacer>
333372
</item>
334-
<item row="4" column="3">
373+
<item row="5" column="3">
335374
<widget class="QLabel" name="backlightLabel">
336375
<property name="enabled">
337376
<bool>false</bool>
@@ -347,7 +386,7 @@ bounding box size of the 3D object that is currently displayed. </string>
347386
</property>
348387
</widget>
349388
</item>
350-
<item row="4" column="4">
389+
<item row="5" column="4">
351390
<widget class="Gui::PrefSlider" name="sliderIntensity">
352391
<property name="enabled">
353392
<bool>false</bool>

src/Gui/DlgSettings3DViewImp.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ void DlgSettings3DViewImp::saveSettings()
8383
index = ui->renderCache->currentIndex();
8484
hGrp->SetInt("RenderCache", index);
8585

86+
ui->comboTransparentRender->onSave();
87+
8688
QVariant const &vBoxMarkerSize = ui->boxMarkerSize->itemData(ui->boxMarkerSize->currentIndex());
8789
hGrp->SetInt("MarkerSize", vBoxMarkerSize.toInt());
8890

@@ -124,6 +126,8 @@ void DlgSettings3DViewImp::loadSettings()
124126
index = hGrp->GetInt("RenderCache", 0);
125127
ui->renderCache->setCurrentIndex(index);
126128

129+
ui->comboTransparentRender->onRestore();
130+
127131
int const current = hGrp->GetInt("MarkerSize", 9L);
128132
ui->boxMarkerSize->addItem(tr("5px"), QVariant(5));
129133
ui->boxMarkerSize->addItem(tr("7px"), QVariant(7));

src/Gui/View3DInventor.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ View3DInventor::View3DInventor(Gui::Document* pcDocument, QWidget* parent,
189189
OnChange(*hGrp,"Dimensions3dVisible");
190190
OnChange(*hGrp,"DimensionsDeltaVisible");
191191
OnChange(*hGrp,"PickRadius");
192+
OnChange(*hGrp,"TransparentObjectRenderType");
192193

193194
stopSpinTimer = new QTimer(this);
194195
connect(stopSpinTimer, SIGNAL(timeout()), this, SLOT(stopAnimating()));
@@ -414,6 +415,17 @@ void View3DInventor::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M
414415
else if (strcmp(Reason, "PickRadius") == 0) {
415416
_viewer->setPickRadius(rGrp.GetFloat("PickRadius", 5.0f));
416417
}
418+
else if (strcmp(Reason, "TransparentObjectRenderType") == 0) {
419+
long renderType = rGrp.GetInt("TransparentObjectRenderType", 0);
420+
if (renderType == 0) {
421+
_viewer->getSoRenderManager()->getGLRenderAction()
422+
->setTransparentDelayedObjectRenderType(SoGLRenderAction::ONE_PASS);
423+
}
424+
else if (renderType == 1) {
425+
_viewer->getSoRenderManager()->getGLRenderAction()
426+
->setTransparentDelayedObjectRenderType(SoGLRenderAction::NONSOLID_SEPARATE_BACKFACE_PASS);
427+
}
428+
}
417429
else {
418430
unsigned long col1 = rGrp.GetUnsigned("BackgroundColor",3940932863UL);
419431
unsigned long col2 = rGrp.GetUnsigned("BackgroundColor2",859006463UL); // default color (dark blue)

0 commit comments

Comments
 (0)