9#include <QtQuick3DRuntimeRender/private/qssgrenderdefaultmaterial_p.h>
10#include <QtQuick3DUtils/private/qssgutils_p.h>
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
129
130
131
132
133
134
135
136
137
138
139
142
143
144
145
146
147
150
151
152
153
154
155
156
159
160
161
162
163
164
165
166
167
168
169
170
173
174
175
176
177
178
179
180
181
182
183
184
187
188
189
190
191
194
195
196
197
198
199
200
201
202
203
206
207
208
209
210
211
212
215
216
217
218
219
220
221
222
223
224
225
226
229
230
231
232
233
236
237
238
239
240
241
242
243
244
245
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
277
278
279
280
281
282
283
284
287
288
289
290
291
292
293
296
297
298
299
300
301
302
303
304
305
306
307
310
311
312
313
314
315
318
319
320
321
322
323
324
325
326
327
328
329
332
333
334
335
336
337
338
341
342
343
344
345
348
349
350
351
352
353
354
355
356
357
360
361
362
363
364
367
368
369
370
371
374
375
376
377
378
379
382
383
384
385
386
387
388
389
390
391
394
395
396
397
398
399
400
401
404
405
406
407
410
411
412
413
414
417
418
419
420
421
422
423
424
425
428
429
430
431
432
433
434
435
436
437
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
491
492
493
494
495
496
497
498
499
500
501
502
505
506
507
508
509
510
511
512
513
514
515
518
519
520
521
522
523
524
525
526
527
528
529
530
533
534
535
536
537
538
539
540
543
544
545
546
547
548
549
550
551
552
553
556
557
558
559
560
561
562
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
599
600
601
602
603
604
607
608
609
610
611
612
613
616
617
618
619
620
621
622
623
624
625
626
629
630
631
632
633
636
637
638
639
640
641
642
645
646
647
648
649
650
651
652
653
654
655
656
659
660
661
662
663
664
668
669
670
671
674
675
676
677
678
679
682
683
684
685
686
687
688
689
692
693
694
695
696
697
698
699
700
701
702
703
706
707
708
709
710
711
712
713
714
717
718
719
720
721
722
723
726
727
728
729
730
731
732
733
734
735
736
737
740
741
742
743
744
745
746
749
750
751
752
753
754
755
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
793
794
795
796
797
800
801
802
803
804
805
806
809
810
811
812
813
814
815
818
819
820
821
822
823
826
827
828
829
830
833
834
835
836
837
838
839
842
843
844
845
846
847
848
851
852
853
854
855
856
859
860
861
862
863
864
865
868
869
870
871
872
873
874
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
964QQuick3DPrincipledMaterial::QQuick3DPrincipledMaterial(QQuick3DObject *parent)
965 : QQuick3DMaterial(*(
new QQuick3DObjectPrivate(QQuick3DObjectPrivate::Type::PrincipledMaterial)), parent)
968QQuick3DPrincipledMaterial::~QQuick3DPrincipledMaterial()
972QQuick3DPrincipledMaterial::Lighting QQuick3DPrincipledMaterial::lighting()
const
977QQuick3DPrincipledMaterial::BlendMode QQuick3DPrincipledMaterial::blendMode()
const
982QColor QQuick3DPrincipledMaterial::baseColor()
const
987QQuick3DTexture *QQuick3DPrincipledMaterial::baseColorMap()
const
989 return m_baseColorMap;
992bool QQuick3DPrincipledMaterial::baseColorSingleChannelEnabled()
const
994 return m_baseColorSingleChannelEnabled;
997QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::baseColorChannel()
const
999 return m_baseColorChannel;
1002bool QQuick3DPrincipledMaterial::specularSingleChannelEnabled()
const
1004 return m_specularSingleChannelEnabled;
1007QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::specularChannel()
const
1009 return m_specularChannel;
1012bool QQuick3DPrincipledMaterial::emissiveSingleChannelEnabled()
const
1014 return m_emissiveSingleChannelEnabled;
1017QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::emissiveChannel()
const
1019 return m_emissiveChannel;
1022QQuick3DTexture *QQuick3DPrincipledMaterial::emissiveMap()
const
1024 return m_emissiveMap;
1027QVector3D QQuick3DPrincipledMaterial::emissiveFactor()
const
1029 return m_emissiveFactor;
1032QQuick3DTexture *QQuick3DPrincipledMaterial::specularReflectionMap()
const
1034 return m_specularReflectionMap;
1037QQuick3DTexture *QQuick3DPrincipledMaterial::specularMap()
const
1039 return m_specularMap;
1042float QQuick3DPrincipledMaterial::specularTint()
const
1044 return m_specularTint;
1047float QQuick3DPrincipledMaterial::specularAmount()
const
1049 return m_specularAmount;
1052float QQuick3DPrincipledMaterial::roughness()
const
1057QQuick3DTexture *QQuick3DPrincipledMaterial::roughnessMap()
const
1059 return m_roughnessMap;
1062bool QQuick3DPrincipledMaterial::invertOpacityMapValue()
const
1064 return m_invertOpacityMapValue;
1067float QQuick3DPrincipledMaterial::opacity()
const
1072QQuick3DTexture *QQuick3DPrincipledMaterial::opacityMap()
const
1074 return m_opacityMap;
1077QQuick3DTexture *QQuick3DPrincipledMaterial::normalMap()
const
1082float QQuick3DPrincipledMaterial::metalness()
const
1084 return m_metalnessAmount;
1087QQuick3DTexture *QQuick3DPrincipledMaterial::metalnessMap()
const
1089 return m_metalnessMap;
1092float QQuick3DPrincipledMaterial::normalStrength()
const
1094 return m_normalStrength;
1097QQuick3DTexture *QQuick3DPrincipledMaterial::occlusionMap()
const
1099 return m_occlusionMap;
1102float QQuick3DPrincipledMaterial::occlusionAmount()
const
1104 return m_occlusionAmount;
1107QQuick3DPrincipledMaterial::AlphaMode QQuick3DPrincipledMaterial::alphaMode()
const
1112float QQuick3DPrincipledMaterial::alphaCutoff()
const
1114 return m_alphaCutoff;
1117QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::roughnessChannel()
const
1119 return m_roughnessChannel;
1122QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::opacityChannel()
const
1124 return m_opacityChannel;
1127QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::metalnessChannel()
const
1129 return m_metalnessChannel;
1132QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::occlusionChannel()
const
1134 return m_occlusionChannel;
1137float QQuick3DPrincipledMaterial::pointSize()
const
1142float QQuick3DPrincipledMaterial::lineWidth()
const
1147QQuick3DTexture *QQuick3DPrincipledMaterial::heightMap()
const
1152QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::heightChannel()
const
1154 return m_heightChannel;
1157float QQuick3DPrincipledMaterial::heightAmount()
const
1159 return m_heightAmount;
1162int QQuick3DPrincipledMaterial::minHeightMapSamples()
const
1164 return m_minHeightMapSamples;
1167int QQuick3DPrincipledMaterial::maxHeightMapSamples()
const
1169 return m_maxHeightMapSamples;
1172void QQuick3DPrincipledMaterial::markAllDirty()
1174 m_dirtyAttributes = 0xffffffff;
1175 QQuick3DMaterial::markAllDirty();
1178void QQuick3DPrincipledMaterial::setLighting(QQuick3DPrincipledMaterial::Lighting lighting)
1180 if (m_lighting == lighting)
1183 m_lighting = lighting;
1184 emit lightingChanged(m_lighting);
1185 markDirty(LightingModeDirty);
1188void QQuick3DPrincipledMaterial::setBlendMode(QQuick3DPrincipledMaterial::BlendMode blendMode)
1190 if (m_blendMode == blendMode)
1193 m_blendMode = blendMode;
1194 emit blendModeChanged(m_blendMode);
1195 markDirty(BlendModeDirty);
1198void QQuick3DPrincipledMaterial::setBaseColor(QColor diffuseColor)
1200 if (m_baseColor == diffuseColor)
1203 m_baseColor = diffuseColor;
1204 emit baseColorChanged(m_baseColor);
1205 markDirty(BaseColorDirty);
1208void QQuick3DPrincipledMaterial::setBaseColorMap(QQuick3DTexture *baseColorMap)
1210 if (m_baseColorMap == baseColorMap)
1213 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setBaseColorMap, baseColorMap, m_baseColorMap);
1215 m_baseColorMap = baseColorMap;
1216 emit baseColorMapChanged(m_baseColorMap);
1217 markDirty(BaseColorDirty);
1220void QQuick3DPrincipledMaterial::setBaseColorSingleChannelEnabled(
bool baseColorSingleChannelEnabled)
1222 if (m_baseColorSingleChannelEnabled == baseColorSingleChannelEnabled)
1225 m_baseColorSingleChannelEnabled = baseColorSingleChannelEnabled;
1226 emit baseColorSingleChannelEnabledChanged(baseColorSingleChannelEnabled);
1227 markDirty(BaseColorDirty);
1230void QQuick3DPrincipledMaterial::setBaseColorChannel(TextureChannelMapping channel)
1232 if (m_baseColorChannel == channel)
1235 m_baseColorChannel = channel;
1236 emit baseColorChannelChanged(channel);
1237 markDirty(BaseColorDirty);
1240void QQuick3DPrincipledMaterial::setSpecularSingleChannelEnabled(
bool specularSingleChannelEnabled)
1242 if (m_specularSingleChannelEnabled == specularSingleChannelEnabled)
1245 m_specularSingleChannelEnabled = specularSingleChannelEnabled;
1246 emit specularSingleChannelEnabledChanged(specularSingleChannelEnabled);
1247 markDirty(SpecularDirty);
1250void QQuick3DPrincipledMaterial::setSpecularChannel(TextureChannelMapping channel)
1252 if (m_specularChannel == channel)
1255 m_specularChannel = channel;
1256 emit specularChannelChanged(channel);
1257 markDirty(SpecularDirty);
1260void QQuick3DPrincipledMaterial::setEmissiveSingleChannelEnabled(
bool emissiveSingleChannelEnabled)
1262 if (m_emissiveSingleChannelEnabled == emissiveSingleChannelEnabled)
1265 m_emissiveSingleChannelEnabled = emissiveSingleChannelEnabled;
1266 emit emissiveSingleChannelEnabledChanged(emissiveSingleChannelEnabled);
1267 markDirty(EmissiveDirty);
1270void QQuick3DPrincipledMaterial::setEmissiveChannel(TextureChannelMapping channel)
1272 if (m_emissiveChannel == channel)
1275 m_emissiveChannel = channel;
1276 emit emissiveChannelChanged(channel);
1277 markDirty(EmissiveDirty);
1280void QQuick3DPrincipledMaterial::setEmissiveMap(QQuick3DTexture *emissiveMap)
1282 if (m_emissiveMap == emissiveMap)
1285 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setEmissiveMap, emissiveMap, m_emissiveMap);
1287 m_emissiveMap = emissiveMap;
1288 emit emissiveMapChanged(m_emissiveMap);
1289 markDirty(EmissiveDirty);
1292void QQuick3DPrincipledMaterial::setEmissiveFactor(QVector3D emissiveFactor)
1294 if (m_emissiveFactor == emissiveFactor)
1297 m_emissiveFactor = emissiveFactor;
1298 emit emissiveFactorChanged(m_emissiveFactor);
1299 markDirty(EmissiveDirty);
1302void QQuick3DPrincipledMaterial::setSpecularReflectionMap(QQuick3DTexture *specularReflectionMap)
1304 if (m_specularReflectionMap == specularReflectionMap)
1307 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setSpecularReflectionMap, specularReflectionMap, m_specularReflectionMap);
1309 m_specularReflectionMap = specularReflectionMap;
1310 emit specularReflectionMapChanged(m_specularReflectionMap);
1311 markDirty(SpecularDirty);
1314void QQuick3DPrincipledMaterial::setSpecularMap(QQuick3DTexture *specularMap)
1316 if (m_specularMap == specularMap)
1319 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setSpecularMap, specularMap, m_specularMap);
1321 m_specularMap = specularMap;
1322 emit specularMapChanged(m_specularMap);
1323 markDirty(SpecularDirty);
1326void QQuick3DPrincipledMaterial::setSpecularTint(
float specularTint)
1328 specularTint = ensureNormalized(specularTint);
1329 if (qFuzzyCompare(m_specularTint, specularTint))
1332 m_specularTint = specularTint;
1333 emit specularTintChanged(m_specularTint);
1334 markDirty(SpecularDirty);
1337void QQuick3DPrincipledMaterial::setSpecularAmount(
float specularAmount)
1339 specularAmount = ensureNormalized(specularAmount);
1340 if (qFuzzyCompare(m_specularAmount, specularAmount))
1343 m_specularAmount = specularAmount;
1344 emit specularAmountChanged(m_specularAmount);
1345 markDirty(SpecularDirty);
1348void QQuick3DPrincipledMaterial::setRoughness(
float roughness)
1350 roughness = ensureNormalized(roughness);
1351 if (qFuzzyCompare(m_roughness, roughness))
1354 m_roughness = roughness;
1355 emit roughnessChanged(m_roughness);
1356 markDirty(RoughnessDirty);
1359void QQuick3DPrincipledMaterial::setRoughnessMap(QQuick3DTexture *roughnessMap)
1361 if (m_roughnessMap == roughnessMap)
1364 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setRoughnessMap, roughnessMap, m_roughnessMap);
1366 m_roughnessMap = roughnessMap;
1367 emit roughnessMapChanged(m_roughnessMap);
1368 markDirty(RoughnessDirty);
1371void QQuick3DPrincipledMaterial::setInvertOpacityMapValue(
bool invertOpacityMapValue)
1373 if (invertOpacityMapValue == m_invertOpacityMapValue)
1376 m_invertOpacityMapValue = invertOpacityMapValue;
1377 emit invertOpacityMapValueChanged(m_invertOpacityMapValue);
1378 markDirty(OpacityDirty);
1381void QQuick3DPrincipledMaterial::setOpacity(
float opacity)
1383 opacity = ensureNormalized(opacity);
1384 if (qFuzzyCompare(m_opacity, opacity))
1387 m_opacity = opacity;
1388 emit opacityChanged(m_opacity);
1389 markDirty(OpacityDirty);
1392void QQuick3DPrincipledMaterial::setOpacityMap(QQuick3DTexture *opacityMap)
1394 if (m_opacityMap == opacityMap)
1397 QQuick3DObjectPrivate::attachWatcher(
this, &::QQuick3DPrincipledMaterial::setOpacityMap, opacityMap, m_opacityMap);
1399 m_opacityMap = opacityMap;
1400 emit opacityMapChanged(m_opacityMap);
1401 markDirty(OpacityDirty);
1404void QQuick3DPrincipledMaterial::setNormalMap(QQuick3DTexture *normalMap)
1406 if (m_normalMap == normalMap)
1409 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setNormalMap, normalMap, m_normalMap);
1411 m_normalMap = normalMap;
1412 emit normalMapChanged(m_normalMap);
1413 markDirty(NormalDirty);
1416void QQuick3DPrincipledMaterial::setMetalness(
float metalnessAmount)
1418 metalnessAmount = ensureNormalized(metalnessAmount);
1419 if (qFuzzyCompare(m_metalnessAmount, metalnessAmount))
1422 m_metalnessAmount = metalnessAmount;
1423 emit metalnessChanged(m_metalnessAmount);
1424 markDirty(MetalnessDirty);
1427void QQuick3DPrincipledMaterial::setMetalnessMap(QQuick3DTexture *metallicMap)
1429 if (m_metalnessMap == metallicMap)
1432 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setMetalnessMap, metallicMap, m_metalnessMap);
1434 m_metalnessMap = metallicMap;
1435 emit metalnessMapChanged(m_metalnessMap);
1436 markDirty(MetalnessDirty);
1439void QQuick3DPrincipledMaterial::setNormalStrength(
float factor)
1441 factor = ensureNormalized(factor);
1442 if (qFuzzyCompare(m_normalStrength, factor))
1445 m_normalStrength = factor;
1446 emit normalStrengthChanged(m_normalStrength);
1447 markDirty(NormalDirty);
1450void QQuick3DPrincipledMaterial::setOcclusionMap(QQuick3DTexture *occlusionMap)
1452 if (m_occlusionMap == occlusionMap)
1455 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setOcclusionMap, occlusionMap, m_occlusionMap);
1457 m_occlusionMap = occlusionMap;
1458 emit occlusionMapChanged(m_occlusionMap);
1459 markDirty(OcclusionDirty);
1462void QQuick3DPrincipledMaterial::setOcclusionAmount(
float occlusionAmount)
1464 if (qFuzzyCompare(m_occlusionAmount, occlusionAmount))
1467 m_occlusionAmount = occlusionAmount;
1468 emit occlusionAmountChanged(m_occlusionAmount);
1469 markDirty(OcclusionDirty);
1472void QQuick3DPrincipledMaterial::setAlphaMode(QQuick3DPrincipledMaterial::AlphaMode alphaMode)
1474 if (m_alphaMode == alphaMode)
1477 m_alphaMode = alphaMode;
1478 emit alphaModeChanged(m_alphaMode);
1479 markDirty(AlphaModeDirty);
1482void QQuick3DPrincipledMaterial::setAlphaCutoff(
float alphaCutoff)
1484 if (qFuzzyCompare(m_alphaCutoff, alphaCutoff))
1487 m_alphaCutoff = alphaCutoff;
1488 emit alphaCutoffChanged(m_alphaCutoff);
1489 markDirty(AlphaModeDirty);
1492void QQuick3DPrincipledMaterial::setMetalnessChannel(TextureChannelMapping channel)
1494 if (m_metalnessChannel == channel)
1497 m_metalnessChannel = channel;
1498 emit metalnessChannelChanged(channel);
1499 markDirty(MetalnessDirty);
1502void QQuick3DPrincipledMaterial::setRoughnessChannel(TextureChannelMapping channel)
1504 if (m_roughnessChannel == channel)
1507 m_roughnessChannel = channel;
1508 emit roughnessChannelChanged(channel);
1509 markDirty(RoughnessDirty);
1512void QQuick3DPrincipledMaterial::setOpacityChannel(TextureChannelMapping channel)
1514 if (m_opacityChannel == channel)
1517 m_opacityChannel = channel;
1518 emit opacityChannelChanged(channel);
1519 markDirty(OpacityDirty);
1522void QQuick3DPrincipledMaterial::setOcclusionChannel(TextureChannelMapping channel)
1524 if (m_occlusionChannel == channel)
1527 m_occlusionChannel = channel;
1528 emit occlusionChannelChanged(channel);
1529 markDirty(OcclusionDirty);
1532void QQuick3DPrincipledMaterial::setPointSize(
float size)
1534 if (qFuzzyCompare(m_pointSize, size))
1537 emit pointSizeChanged();
1538 markDirty(PointSizeDirty);
1541void QQuick3DPrincipledMaterial::setLineWidth(
float width)
1543 if (qFuzzyCompare(m_lineWidth, width))
1545 m_lineWidth = width;
1546 emit lineWidthChanged();
1547 markDirty(LineWidthDirty);
1550void QQuick3DPrincipledMaterial::setHeightMap(QQuick3DTexture *heightMap)
1552 if (m_heightMap == heightMap)
1555 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setHeightMap, heightMap, m_heightMap);
1557 m_heightMap = heightMap;
1558 emit heightMapChanged(m_heightMap);
1559 markDirty(HeightDirty);
1562void QQuick3DPrincipledMaterial::setHeightChannel(QQuick3DMaterial::TextureChannelMapping channel)
1564 if (m_heightChannel == channel)
1567 m_heightChannel = channel;
1568 emit heightChannelChanged(m_heightChannel);
1569 markDirty(HeightDirty);
1572void QQuick3DPrincipledMaterial::setHeightAmount(
float heightAmount)
1574 if (m_heightAmount == heightAmount)
1577 m_heightAmount = heightAmount;
1578 emit heightAmountChanged(m_heightAmount);
1579 markDirty(HeightDirty);
1582void QQuick3DPrincipledMaterial::setMinHeightMapSamples(
int samples)
1584 if (m_minHeightMapSamples == samples)
1587 m_minHeightMapSamples = samples;
1588 emit minHeightMapSamplesChanged(samples);
1589 markDirty(HeightDirty);
1592void QQuick3DPrincipledMaterial::setMaxHeightMapSamples(
int samples)
1594 if (m_maxHeightMapSamples == samples)
1597 m_maxHeightMapSamples = samples;
1598 emit maxHeightMapSamplesChanged(samples);
1599 markDirty(HeightDirty);
1602QSSGRenderGraphObject *QQuick3DPrincipledMaterial::updateSpatialNode(QSSGRenderGraphObject *node)
1604 static const auto channelMapping = [](TextureChannelMapping mapping) {
1605 return QSSGRenderDefaultMaterial::TextureChannelMapping(mapping);
1610 node =
new QSSGRenderDefaultMaterial(QSSGRenderGraphObject::Type::PrincipledMaterial);
1614 QQuick3DMaterial::updateSpatialNode(node);
1616 QSSGRenderDefaultMaterial *material =
static_cast<QSSGRenderDefaultMaterial *>(node);
1618 material->specularModel = QSSGRenderDefaultMaterial::MaterialSpecularModel::SchlickGGX;
1620 if (m_dirtyAttributes & LightingModeDirty)
1621 material->lighting = QSSGRenderDefaultMaterial::MaterialLighting(m_lighting);
1623 if (m_dirtyAttributes & BlendModeDirty)
1624 material->blendMode = QSSGRenderDefaultMaterial::MaterialBlendMode(m_blendMode);
1626 if (m_dirtyAttributes & BaseColorDirty) {
1627 if (!m_baseColorMap)
1628 material->colorMap =
nullptr;
1630 material->colorMap = m_baseColorMap->getRenderImage();
1632 material->color = QSSGUtils::color::sRGBToLinear(m_baseColor);
1633 material->baseColorSingleChannelEnabled = m_baseColorSingleChannelEnabled;
1634 material->baseColorChannel = channelMapping(m_baseColorChannel);
1637 if (m_dirtyAttributes & EmissiveDirty) {
1639 material->emissiveMap =
nullptr;
1641 material->emissiveMap = m_emissiveMap->getRenderImage();
1643 material->emissiveColor = m_emissiveFactor;
1644 material->emissiveSingleChannelEnabled = m_emissiveSingleChannelEnabled;
1645 material->emissiveChannel = channelMapping(m_emissiveChannel);
1648 if (m_dirtyAttributes & RoughnessDirty) {
1649 if (!m_roughnessMap)
1650 material->roughnessMap =
nullptr;
1652 material->roughnessMap = m_roughnessMap->getRenderImage();
1654 material->specularRoughness = m_roughness;
1655 material->roughnessChannel = channelMapping(m_roughnessChannel);
1658 if (m_dirtyAttributes & MetalnessDirty) {
1659 if (!m_metalnessMap)
1660 material->metalnessMap =
nullptr;
1662 material->metalnessMap = m_metalnessMap->getRenderImage();
1664 material->metalnessAmount = m_metalnessAmount;
1665 material->metalnessChannel = channelMapping(m_metalnessChannel);
1669 if (m_dirtyAttributes & SpecularDirty) {
1670 if (!m_specularReflectionMap)
1671 material->specularReflection =
nullptr;
1673 material->specularReflection = m_specularReflectionMap->getRenderImage();
1675 if (!m_specularMap) {
1676 material->specularMap =
nullptr;
1678 material->specularMap = m_specularMap->getRenderImage();
1681 material->specularAmount = m_specularAmount;
1682 material->specularTint = QVector3D(m_specularTint, m_specularTint, m_specularTint);
1683 material->ior = m_indexOfRefraction;
1684 material->fresnelScaleBiasEnabled = m_fresnelScaleBiasEnabled;
1685 material->fresnelScale = m_fresnelScale;
1686 material->fresnelBias = m_fresnelBias;
1687 material->fresnelPower = m_fresnelPower;
1688 material->specularAmountSingleChannelEnabled = m_specularSingleChannelEnabled;
1689 material->specularAmountChannel = channelMapping(m_specularChannel);
1692 if (m_dirtyAttributes & OpacityDirty) {
1693 material->opacity = m_opacity;
1695 material->opacityMap =
nullptr;
1697 material->opacityMap = m_opacityMap->getRenderImage();
1699 material->invertOpacityMapValue = m_invertOpacityMapValue;
1700 material->opacity = m_opacity;
1701 material->opacityChannel = channelMapping(m_opacityChannel);
1704 if (m_dirtyAttributes & NormalDirty) {
1706 material->normalMap =
nullptr;
1708 material->normalMap = m_normalMap->getRenderImage();
1710 material->bumpAmount = m_normalStrength;
1713 if (m_dirtyAttributes & OcclusionDirty) {
1714 if (!m_occlusionMap)
1715 material->occlusionMap =
nullptr;
1717 material->occlusionMap = m_occlusionMap->getRenderImage();
1718 material->occlusionAmount = m_occlusionAmount;
1719 material->occlusionChannel = channelMapping(m_occlusionChannel);
1722 if (m_dirtyAttributes & AlphaModeDirty) {
1723 material->alphaMode = QSSGRenderDefaultMaterial::MaterialAlphaMode(m_alphaMode);
1724 material->alphaCutoff = m_alphaCutoff;
1727 if (m_dirtyAttributes & PointSizeDirty)
1728 material->pointSize = m_pointSize;
1730 if (m_dirtyAttributes & LineWidthDirty)
1731 material->lineWidth = m_lineWidth;
1733 if (m_dirtyAttributes & HeightDirty) {
1735 material->heightMap =
nullptr;
1737 material->heightMap = m_heightMap->getRenderImage();
1738 material->heightAmount = m_heightAmount;
1739 material->minHeightSamples = m_minHeightMapSamples;
1740 material->maxHeightSamples = m_maxHeightMapSamples;
1741 material->heightChannel = channelMapping(m_heightChannel);
1744 if (m_dirtyAttributes & ClearcoatDirty) {
1745 material->clearcoatAmount = m_clearcoatAmount;
1746 if (!m_clearcoatMap)
1747 material->clearcoatMap =
nullptr;
1749 material->clearcoatMap = m_clearcoatMap->getRenderImage();
1750 material->clearcoatChannel = channelMapping(m_clearcoatChannel);
1751 material->clearcoatRoughnessAmount = m_clearcoatRoughnessAmount;
1752 if (!m_clearcoatRoughnessMap)
1753 material->clearcoatRoughnessMap =
nullptr;
1755 material->clearcoatRoughnessMap = m_clearcoatRoughnessMap->getRenderImage();
1756 material->clearcoatRoughnessChannel = channelMapping(m_clearcoatRoughnessChannel);
1757 if (!m_clearcoatNormalMap)
1758 material->clearcoatNormalMap =
nullptr;
1760 material->clearcoatNormalMap = m_clearcoatNormalMap->getRenderImage();
1761 material->clearcoatNormalStrength = m_clearcoatNormalStrength;
1762 material->clearcoatFresnelScaleBiasEnabled = m_clearcoatFresnelScaleBiasEnabled;
1763 material->clearcoatFresnelScale = m_clearcoatFresnelScale;
1764 material->clearcoatFresnelBias = m_clearcoatFresnelBias;
1765 material->clearcoatFresnelPower = m_clearcoatFresnelPower;
1768 if (m_dirtyAttributes & TransmissionDirty) {
1769 material->transmissionFactor = m_transmissionFactor;
1770 if (!m_transmissionMap)
1771 material->transmissionMap =
nullptr;
1773 material->transmissionMap = m_transmissionMap->getRenderImage();
1774 material->transmissionChannel = channelMapping(m_transmissionChannel);
1777 if (m_dirtyAttributes & VolumeDirty) {
1778 material->thicknessFactor = m_thicknessFactor;
1779 if (!m_thicknessMap)
1780 material->thicknessMap =
nullptr;
1782 material->thicknessMap = m_thicknessMap->getRenderImage();
1783 material->thicknessChannel = channelMapping(m_thicknessChannel);
1785 material->attenuationDistance = m_attenuationDistance;
1786 material->attenuationColor = QSSGUtils::color::sRGBToLinear(m_attenuationColor).toVector3D();
1789 if (m_dirtyAttributes & VertexColorsDirty) {
1790 material->vertexColorsEnabled = m_vertexColorsEnabled;
1791 material->vertexColorsMaskEnabled = m_vertexColorsMaskEnabled;
1792 material->vertexColorRedMask = QSSGRenderDefaultMaterial::VertexColorMaskFlags::fromInt(m_vertexColorRedMask);
1793 material->vertexColorGreenMask = QSSGRenderDefaultMaterial::VertexColorMaskFlags::fromInt(m_vertexColorGreenMask);
1794 material->vertexColorBlueMask = QSSGRenderDefaultMaterial::VertexColorMaskFlags::fromInt(m_vertexColorBlueMask);
1795 material->vertexColorAlphaMask = QSSGRenderDefaultMaterial::VertexColorMaskFlags::fromInt(m_vertexColorAlphaMask);
1798 m_dirtyAttributes = 0;
1803void QQuick3DPrincipledMaterial::itemChange(QQuick3DObject::ItemChange change,
const QQuick3DObject::ItemChangeData &value)
1805 if (change == QQuick3DObject::ItemSceneChange)
1806 updateSceneManager(value.sceneManager);
1809void QQuick3DPrincipledMaterial::updateSceneManager(QQuick3DSceneManager *sceneManager)
1813 QQuick3DObjectPrivate::refSceneManager(m_baseColorMap, *sceneManager);
1814 QQuick3DObjectPrivate::refSceneManager(m_emissiveMap, *sceneManager);
1815 QQuick3DObjectPrivate::refSceneManager(m_specularReflectionMap, *sceneManager);
1816 QQuick3DObjectPrivate::refSceneManager(m_specularMap, *sceneManager);
1817 QQuick3DObjectPrivate::refSceneManager(m_roughnessMap, *sceneManager);
1818 QQuick3DObjectPrivate::refSceneManager(m_opacityMap, *sceneManager);
1819 QQuick3DObjectPrivate::refSceneManager(m_normalMap, *sceneManager);
1820 QQuick3DObjectPrivate::refSceneManager(m_metalnessMap, *sceneManager);
1821 QQuick3DObjectPrivate::refSceneManager(m_occlusionMap, *sceneManager);
1822 QQuick3DObjectPrivate::refSceneManager(m_heightMap, *sceneManager);
1823 QQuick3DObjectPrivate::refSceneManager(m_clearcoatMap, *sceneManager);
1824 QQuick3DObjectPrivate::refSceneManager(m_clearcoatRoughnessMap, *sceneManager);
1825 QQuick3DObjectPrivate::refSceneManager(m_clearcoatNormalMap, *sceneManager);
1826 QQuick3DObjectPrivate::refSceneManager(m_transmissionMap, *sceneManager);
1827 QQuick3DObjectPrivate::refSceneManager(m_thicknessMap, *sceneManager);
1829 QQuick3DObjectPrivate::derefSceneManager(m_baseColorMap);
1830 QQuick3DObjectPrivate::derefSceneManager(m_emissiveMap);
1831 QQuick3DObjectPrivate::derefSceneManager(m_specularReflectionMap);
1832 QQuick3DObjectPrivate::derefSceneManager(m_specularMap);
1833 QQuick3DObjectPrivate::derefSceneManager(m_roughnessMap);
1834 QQuick3DObjectPrivate::derefSceneManager(m_opacityMap);
1835 QQuick3DObjectPrivate::derefSceneManager(m_normalMap);
1836 QQuick3DObjectPrivate::derefSceneManager(m_metalnessMap);
1837 QQuick3DObjectPrivate::derefSceneManager(m_occlusionMap);
1838 QQuick3DObjectPrivate::derefSceneManager(m_heightMap);
1839 QQuick3DObjectPrivate::derefSceneManager(m_clearcoatMap);
1840 QQuick3DObjectPrivate::derefSceneManager(m_clearcoatRoughnessMap);
1841 QQuick3DObjectPrivate::derefSceneManager(m_clearcoatNormalMap);
1842 QQuick3DObjectPrivate::derefSceneManager(m_transmissionMap);
1843 QQuick3DObjectPrivate::derefSceneManager(m_thicknessMap);
1847void QQuick3DPrincipledMaterial::markDirty(QQuick3DPrincipledMaterial::DirtyType type)
1849 if (!(m_dirtyAttributes & quint32(type))) {
1850 m_dirtyAttributes |= quint32(type);
1855float QQuick3DPrincipledMaterial::clearcoatAmount()
const
1857 return m_clearcoatAmount;
1860void QQuick3DPrincipledMaterial::setClearcoatAmount(
float newClearcoatAmount)
1862 if (qFuzzyCompare(m_clearcoatAmount, newClearcoatAmount))
1864 m_clearcoatAmount = newClearcoatAmount;
1865 emit clearcoatAmountChanged(m_clearcoatAmount);
1866 markDirty(ClearcoatDirty);
1869QQuick3DTexture *QQuick3DPrincipledMaterial::clearcoatMap()
const
1871 return m_clearcoatMap;
1874void QQuick3DPrincipledMaterial::setClearcoatMap(QQuick3DTexture *newClearcoatMap)
1876 if (m_clearcoatMap == newClearcoatMap)
1879 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setClearcoatMap, newClearcoatMap, m_clearcoatMap);
1881 m_clearcoatMap = newClearcoatMap;
1882 emit clearcoatMapChanged(m_clearcoatMap);
1883 markDirty(ClearcoatDirty);
1886QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::clearcoatChannel()
const
1888 return m_clearcoatChannel;
1891void QQuick3DPrincipledMaterial::setClearcoatChannel(QQuick3DMaterial::TextureChannelMapping newClearcoatChannel)
1893 if (m_clearcoatChannel == newClearcoatChannel)
1895 m_clearcoatChannel = newClearcoatChannel;
1896 emit clearcoatChannelChanged(m_clearcoatChannel);
1897 markDirty(ClearcoatDirty);
1900float QQuick3DPrincipledMaterial::clearcoatRoughnessAmount()
const
1902 return m_clearcoatRoughnessAmount;
1905void QQuick3DPrincipledMaterial::setClearcoatRoughnessAmount(
float newClearcoatRoughnessAmount)
1907 if (qFuzzyCompare(m_clearcoatRoughnessAmount, newClearcoatRoughnessAmount))
1909 m_clearcoatRoughnessAmount = newClearcoatRoughnessAmount;
1910 emit clearcoatRoughnessAmountChanged(m_clearcoatRoughnessAmount);
1911 markDirty(ClearcoatDirty);
1914QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::clearcoatRoughnessChannel()
const
1916 return m_clearcoatRoughnessChannel;
1919void QQuick3DPrincipledMaterial::setClearcoatRoughnessChannel(QQuick3DMaterial::TextureChannelMapping newClearcoatRoughnessChannel)
1921 if (m_clearcoatRoughnessChannel == newClearcoatRoughnessChannel)
1923 m_clearcoatRoughnessChannel = newClearcoatRoughnessChannel;
1924 emit clearcoatRoughnessChannelChanged(m_clearcoatRoughnessChannel);
1925 markDirty(ClearcoatDirty);
1928QQuick3DTexture *QQuick3DPrincipledMaterial::clearcoatRoughnessMap()
const
1930 return m_clearcoatRoughnessMap;
1933void QQuick3DPrincipledMaterial::setClearcoatRoughnessMap(QQuick3DTexture *newClearcoatRoughnessMap)
1935 if (m_clearcoatRoughnessMap == newClearcoatRoughnessMap)
1938 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setClearcoatRoughnessMap, newClearcoatRoughnessMap, m_clearcoatRoughnessMap);
1940 m_clearcoatRoughnessMap = newClearcoatRoughnessMap;
1941 emit clearcoatRoughnessMapChanged(m_clearcoatRoughnessMap);
1942 markDirty(ClearcoatDirty);
1945QQuick3DTexture *QQuick3DPrincipledMaterial::clearcoatNormalMap()
const
1947 return m_clearcoatNormalMap;
1950void QQuick3DPrincipledMaterial::setClearcoatNormalMap(QQuick3DTexture *newClearcoatNormalMap)
1952 if (m_clearcoatNormalMap == newClearcoatNormalMap)
1955 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setClearcoatNormalMap, newClearcoatNormalMap, m_clearcoatNormalMap);
1957 m_clearcoatNormalMap = newClearcoatNormalMap;
1958 emit clearcoatNormalMapChanged(m_clearcoatNormalMap);
1959 markDirty(ClearcoatDirty);
1963float QQuick3DPrincipledMaterial::clearcoatNormalStrength()
const
1965 return m_clearcoatNormalStrength;
1968void QQuick3DPrincipledMaterial::setClearcoatNormalStrength(
float newClearcoatNormalStrength)
1970 if (qFuzzyCompare(m_clearcoatNormalStrength, newClearcoatNormalStrength))
1973 m_clearcoatNormalStrength = newClearcoatNormalStrength;
1974 emit clearcoatNormalStrengthChanged(m_clearcoatNormalStrength);
1975 markDirty(ClearcoatDirty);
1978float QQuick3DPrincipledMaterial::transmissionFactor()
const
1980 return m_transmissionFactor;
1983void QQuick3DPrincipledMaterial::setTransmissionFactor(
float newTransmissionFactor)
1985 if (qFuzzyCompare(m_transmissionFactor, newTransmissionFactor))
1987 m_transmissionFactor = newTransmissionFactor;
1988 emit transmissionFactorChanged(m_transmissionFactor);
1989 markDirty(TransmissionDirty);
1992QQuick3DTexture *QQuick3DPrincipledMaterial::transmissionMap()
const
1994 return m_transmissionMap;
1997void QQuick3DPrincipledMaterial::setTransmissionMap(QQuick3DTexture *newTransmissionMap)
1999 if (m_transmissionMap == newTransmissionMap)
2002 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setTransmissionMap, newTransmissionMap, m_transmissionMap);
2004 m_transmissionMap = newTransmissionMap;
2005 emit transmissionMapChanged(m_transmissionMap);
2006 markDirty(TransmissionDirty);
2009QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::transmissionChannel()
const
2011 return m_transmissionChannel;
2014float QQuick3DPrincipledMaterial::indexOfRefraction()
const
2016 return m_indexOfRefraction;
2019bool QQuick3DPrincipledMaterial::fresnelScaleBiasEnabled()
const
2021 return m_fresnelScaleBiasEnabled;
2024float QQuick3DPrincipledMaterial::fresnelScale()
const
2026 return m_fresnelScale;
2029float QQuick3DPrincipledMaterial::fresnelBias()
const
2031 return m_fresnelBias;
2034float QQuick3DPrincipledMaterial::fresnelPower()
const
2036 return m_fresnelPower;
2039bool QQuick3DPrincipledMaterial::clearcoatFresnelScaleBiasEnabled()
const
2041 return m_clearcoatFresnelScaleBiasEnabled;
2044float QQuick3DPrincipledMaterial::clearcoatFresnelScale()
const
2046 return m_clearcoatFresnelScale;
2049float QQuick3DPrincipledMaterial::clearcoatFresnelBias()
const
2051 return m_clearcoatFresnelBias;
2054float QQuick3DPrincipledMaterial::clearcoatFresnelPower()
const
2056 return m_clearcoatFresnelPower;
2059bool QQuick3DPrincipledMaterial::vertexColorsEnabled()
const
2061 return m_vertexColorsEnabled;
2064void QQuick3DPrincipledMaterial::setTransmissionChannel(QQuick3DMaterial::TextureChannelMapping newTransmissionChannel)
2066 if (m_transmissionChannel == newTransmissionChannel)
2068 m_transmissionChannel = newTransmissionChannel;
2069 emit transmissionChannelChanged(m_transmissionChannel);
2070 markDirty(TransmissionDirty);
2073float QQuick3DPrincipledMaterial::thicknessFactor()
const
2075 return m_thicknessFactor;
2078void QQuick3DPrincipledMaterial::setThicknessFactor(
float newThicknessFactor)
2080 if (qFuzzyCompare(m_thicknessFactor, newThicknessFactor))
2082 m_thicknessFactor = newThicknessFactor;
2083 emit thicknessFactorChanged(m_thicknessFactor);
2084 markDirty(VolumeDirty);
2087QQuick3DTexture *QQuick3DPrincipledMaterial::thicknessMap()
const
2089 return m_thicknessMap;
2092void QQuick3DPrincipledMaterial::setThicknessMap(QQuick3DTexture *newThicknessMap)
2094 if (m_thicknessMap == newThicknessMap)
2097 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setThicknessMap, newThicknessMap, m_thicknessMap);
2099 m_thicknessMap = newThicknessMap;
2100 emit thicknessMapChanged(m_thicknessMap);
2101 markDirty(VolumeDirty);
2104const QQuick3DMaterial::TextureChannelMapping &QQuick3DPrincipledMaterial::thicknessChannel()
const
2106 return m_thicknessChannel;
2109void QQuick3DPrincipledMaterial::setThicknessChannel(
const QQuick3DMaterial::TextureChannelMapping &newThicknessChannel)
2111 if (m_thicknessChannel == newThicknessChannel)
2113 m_thicknessChannel = newThicknessChannel;
2114 emit thicknessChannelChanged(m_thicknessChannel);
2115 markDirty(VolumeDirty);
2118float QQuick3DPrincipledMaterial::attenuationDistance()
const
2120 return m_attenuationDistance;
2123void QQuick3DPrincipledMaterial::setAttenuationDistance(
float newAttenuationDistance)
2125 if (qFuzzyCompare(m_attenuationDistance, newAttenuationDistance))
2127 m_attenuationDistance = newAttenuationDistance;
2128 emit attenuationDistanceChanged(m_attenuationDistance);
2129 markDirty(VolumeDirty);
2132const QColor &QQuick3DPrincipledMaterial::attenuationColor()
const
2134 return m_attenuationColor;
2137void QQuick3DPrincipledMaterial::setAttenuationColor(
const QColor &newAttenuationColor)
2139 if (m_attenuationColor == newAttenuationColor)
2141 m_attenuationColor = newAttenuationColor;
2142 emit attenuationColorChanged(m_attenuationColor);
2143 markDirty(VolumeDirty);
2146void QQuick3DPrincipledMaterial::setIndexOfRefraction(
float indexOfRefraction)
2148 if (qFuzzyCompare(m_indexOfRefraction, indexOfRefraction))
2151 m_indexOfRefraction = indexOfRefraction;
2152 emit indexOfRefractionChanged(m_indexOfRefraction);
2153 markDirty(SpecularDirty);
2156void QQuick3DPrincipledMaterial::setFresnelScaleBiasEnabled(
bool fresnelScaleBiasEnabled)
2158 if (m_fresnelScaleBiasEnabled == fresnelScaleBiasEnabled)
2161 m_fresnelScaleBiasEnabled = fresnelScaleBiasEnabled;
2162 emit fresnelScaleBiasEnabledChanged(m_fresnelScaleBiasEnabled);
2163 markDirty(SpecularDirty);
2166void QQuick3DPrincipledMaterial::setFresnelScale(
float fresnelScale)
2168 if (qFuzzyCompare(m_fresnelScale, fresnelScale))
2171 m_fresnelScale = fresnelScale;
2172 emit fresnelScaleChanged(m_fresnelScale);
2173 markDirty(SpecularDirty);
2176void QQuick3DPrincipledMaterial::setFresnelBias(
float fresnelBias)
2178 if (qFuzzyCompare(m_fresnelBias, fresnelBias))
2181 m_fresnelBias = fresnelBias;
2182 emit fresnelBiasChanged(m_fresnelBias);
2183 markDirty(SpecularDirty);
2186void QQuick3DPrincipledMaterial::setFresnelPower(
float fresnelPower)
2188 if (qFuzzyCompare(m_fresnelPower, fresnelPower))
2191 m_fresnelPower = fresnelPower;
2192 emit fresnelPowerChanged(m_fresnelPower);
2193 markDirty(SpecularDirty);
2196void QQuick3DPrincipledMaterial::setClearcoatFresnelScaleBiasEnabled(
bool clearcoatFresnelScaleBiasEnabled)
2198 if (m_clearcoatFresnelScaleBiasEnabled == clearcoatFresnelScaleBiasEnabled)
2201 m_clearcoatFresnelScaleBiasEnabled = clearcoatFresnelScaleBiasEnabled;
2202 emit clearcoatFresnelScaleBiasEnabledChanged(m_clearcoatFresnelScaleBiasEnabled);
2203 markDirty(ClearcoatDirty);
2206void QQuick3DPrincipledMaterial::setClearcoatFresnelScale(
float clearcoatFresnelScale)
2208 if (qFuzzyCompare(m_clearcoatFresnelScale, clearcoatFresnelScale))
2211 m_clearcoatFresnelScale = clearcoatFresnelScale;
2212 emit clearcoatFresnelScaleChanged(m_clearcoatFresnelScale);
2213 markDirty(ClearcoatDirty);
2216void QQuick3DPrincipledMaterial::setClearcoatFresnelBias(
float clearcoatFresnelBias)
2218 if (qFuzzyCompare(m_clearcoatFresnelBias, clearcoatFresnelBias))
2221 m_clearcoatFresnelBias = clearcoatFresnelBias;
2222 emit clearcoatFresnelBiasChanged(m_clearcoatFresnelBias);
2223 markDirty(ClearcoatDirty);
2226void QQuick3DPrincipledMaterial::setClearcoatFresnelPower(
float clearcoatFresnelPower)
2228 if (qFuzzyCompare(m_clearcoatFresnelPower, clearcoatFresnelPower))
2231 m_clearcoatFresnelPower = clearcoatFresnelPower;
2232 emit clearcoatFresnelPowerChanged(m_clearcoatFresnelPower);
2233 markDirty(ClearcoatDirty);
2236void QQuick3DPrincipledMaterial::setVertexColorsEnabled(
bool vertexColors)
2238 if (m_vertexColorsEnabled == vertexColors)
2241 m_vertexColorsEnabled = vertexColors;
2242 emit vertexColorsEnabledChanged(m_vertexColorsEnabled);
2243 markDirty(VertexColorsDirty);
2246bool QQuick3DPrincipledMaterial::vertexColorsMaskEnabled()
const
2248 return m_vertexColorsMaskEnabled;
2251void QQuick3DPrincipledMaterial::setVertexColorsMaskEnabled(
bool vertexColorsMaskEnabled)
2253 if (m_vertexColorsMaskEnabled == vertexColorsMaskEnabled)
2255 m_vertexColorsMaskEnabled = vertexColorsMaskEnabled;
2256 emit vertexColorsMaskEnabledChanged();
2257 markDirty(VertexColorsDirty);
2260QQuick3DPrincipledMaterial::VertexColorMaskFlags QQuick3DPrincipledMaterial::vertexColorRedMask()
const
2262 return m_vertexColorRedMask;
2265void QQuick3DPrincipledMaterial::setVertexColorRedMask(QQuick3DPrincipledMaterial::VertexColorMaskFlags vertexColorRedMask)
2267 if (m_vertexColorRedMask == vertexColorRedMask)
2269 m_vertexColorRedMask = vertexColorRedMask;
2270 emit vertexColorRedMaskChanged();
2271 markDirty(VertexColorsDirty);
2274QQuick3DPrincipledMaterial::VertexColorMaskFlags QQuick3DPrincipledMaterial::vertexColorGreenMask()
const
2276 return m_vertexColorGreenMask;
2279void QQuick3DPrincipledMaterial::setVertexColorGreenMask(QQuick3DPrincipledMaterial::VertexColorMaskFlags vertexColorGreenMask)
2281 if (m_vertexColorGreenMask == vertexColorGreenMask)
2283 m_vertexColorGreenMask = vertexColorGreenMask;
2284 emit vertexColorGreenMaskChanged();
2285 markDirty(VertexColorsDirty);
2288QQuick3DPrincipledMaterial::VertexColorMaskFlags QQuick3DPrincipledMaterial::vertexColorBlueMask()
const
2290 return m_vertexColorBlueMask;
2293void QQuick3DPrincipledMaterial::setVertexColorBlueMask(QQuick3DPrincipledMaterial::VertexColorMaskFlags vertexColorBlueMask)
2295 if (m_vertexColorBlueMask == vertexColorBlueMask)
2297 m_vertexColorBlueMask = vertexColorBlueMask;
2298 emit vertexColorBlueMaskChanged();
2299 markDirty(VertexColorsDirty);
2302QQuick3DPrincipledMaterial::VertexColorMaskFlags QQuick3DPrincipledMaterial::vertexColorAlphaMask()
const
2304 return m_vertexColorAlphaMask;
2307void QQuick3DPrincipledMaterial::setVertexColorAlphaMask(QQuick3DPrincipledMaterial::VertexColorMaskFlags vertexColorAlphaMask)
2309 if (m_vertexColorAlphaMask == vertexColorAlphaMask)
2311 m_vertexColorAlphaMask = vertexColorAlphaMask;
2312 emit vertexColorAlphaMaskChanged();
2313 markDirty(VertexColorsDirty);
Combined button and popup list for selecting options.