7#include <QtQuick3DRuntimeRender/private/qssgrenderdefaultmaterial_p.h>
8#include <QtQuick3DUtils/private/qssgutils_p.h>
13
14
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
96
97
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
127
128
129
130
131
132
133
134
135
136
137
140
141
142
143
144
145
148
149
150
151
152
153
154
157
158
159
160
161
162
163
164
165
166
167
168
171
172
173
174
175
176
177
178
179
180
181
182
185
186
187
188
189
192
193
194
195
196
197
198
199
200
201
204
205
206
207
208
209
210
213
214
215
216
217
218
219
220
221
222
223
224
227
228
229
230
231
234
235
236
237
238
239
240
241
242
243
246
247
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
275
276
277
278
279
280
281
282
285
286
287
288
289
290
291
294
295
296
297
298
299
300
301
302
303
304
305
308
309
310
311
312
313
316
317
318
319
320
321
322
323
324
325
326
327
330
331
332
333
334
335
336
339
340
341
342
343
346
347
348
349
350
351
352
353
354
355
358
359
360
361
362
365
366
367
368
369
372
373
374
375
376
377
380
381
382
383
384
385
386
387
388
389
392
393
394
395
396
397
398
399
402
403
404
405
408
409
410
411
412
415
416
417
418
419
420
421
422
423
426
427
428
429
430
431
432
433
434
435
438
439
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
489
490
491
492
493
494
495
496
497
498
499
500
503
504
505
506
507
508
509
510
511
512
513
516
517
518
519
520
521
522
523
524
525
526
527
528
531
532
533
534
535
536
537
538
541
542
543
544
545
546
547
548
549
550
551
554
555
556
557
558
559
560
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
597
598
599
600
601
602
605
606
607
608
609
610
611
614
615
616
617
618
619
620
621
622
623
624
627
628
629
630
631
634
635
636
637
638
639
640
643
644
645
646
647
648
649
650
651
652
653
654
657
658
659
660
661
662
666
667
668
669
672
673
674
675
676
677
680
681
682
683
684
685
686
687
690
691
692
693
694
695
696
697
698
699
700
701
704
705
706
707
708
709
710
711
712
715
716
717
718
719
720
721
724
725
726
727
728
729
730
731
732
733
734
735
738
739
740
741
742
743
744
747
748
749
750
751
752
753
756
757
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
791
792
793
794
795
798
799
800
801
802
803
804
807
808
809
810
811
812
813
816
817
818
819
820
821
824
825
826
827
828
831
832
833
834
835
836
837
840
841
842
843
844
845
846
849
850
851
852
853
854
857
858
859
860
861
862
863
866
867
868
869
870
871
872
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
962QQuick3DPrincipledMaterial::QQuick3DPrincipledMaterial(QQuick3DObject *parent)
963 : QQuick3DMaterial(*(
new QQuick3DObjectPrivate(QQuick3DObjectPrivate::Type::PrincipledMaterial)), parent)
966QQuick3DPrincipledMaterial::~QQuick3DPrincipledMaterial()
970QQuick3DPrincipledMaterial::Lighting QQuick3DPrincipledMaterial::lighting()
const
975QQuick3DPrincipledMaterial::BlendMode QQuick3DPrincipledMaterial::blendMode()
const
980QColor QQuick3DPrincipledMaterial::baseColor()
const
985QQuick3DTexture *QQuick3DPrincipledMaterial::baseColorMap()
const
987 return m_baseColorMap;
990bool QQuick3DPrincipledMaterial::baseColorSingleChannelEnabled()
const
992 return m_baseColorSingleChannelEnabled;
995QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::baseColorChannel()
const
997 return m_baseColorChannel;
1000bool QQuick3DPrincipledMaterial::specularSingleChannelEnabled()
const
1002 return m_specularSingleChannelEnabled;
1005QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::specularChannel()
const
1007 return m_specularChannel;
1010bool QQuick3DPrincipledMaterial::emissiveSingleChannelEnabled()
const
1012 return m_emissiveSingleChannelEnabled;
1015QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::emissiveChannel()
const
1017 return m_emissiveChannel;
1020QQuick3DTexture *QQuick3DPrincipledMaterial::emissiveMap()
const
1022 return m_emissiveMap;
1025QVector3D QQuick3DPrincipledMaterial::emissiveFactor()
const
1027 return m_emissiveFactor;
1030QQuick3DTexture *QQuick3DPrincipledMaterial::specularReflectionMap()
const
1032 return m_specularReflectionMap;
1035QQuick3DTexture *QQuick3DPrincipledMaterial::specularMap()
const
1037 return m_specularMap;
1040float QQuick3DPrincipledMaterial::specularTint()
const
1042 return m_specularTint;
1045float QQuick3DPrincipledMaterial::specularAmount()
const
1047 return m_specularAmount;
1050float QQuick3DPrincipledMaterial::roughness()
const
1055QQuick3DTexture *QQuick3DPrincipledMaterial::roughnessMap()
const
1057 return m_roughnessMap;
1060bool QQuick3DPrincipledMaterial::invertOpacityMapValue()
const
1062 return m_invertOpacityMapValue;
1065float QQuick3DPrincipledMaterial::opacity()
const
1070QQuick3DTexture *QQuick3DPrincipledMaterial::opacityMap()
const
1072 return m_opacityMap;
1075QQuick3DTexture *QQuick3DPrincipledMaterial::normalMap()
const
1080float QQuick3DPrincipledMaterial::metalness()
const
1082 return m_metalnessAmount;
1085QQuick3DTexture *QQuick3DPrincipledMaterial::metalnessMap()
const
1087 return m_metalnessMap;
1090float QQuick3DPrincipledMaterial::normalStrength()
const
1092 return m_normalStrength;
1095QQuick3DTexture *QQuick3DPrincipledMaterial::occlusionMap()
const
1097 return m_occlusionMap;
1100float QQuick3DPrincipledMaterial::occlusionAmount()
const
1102 return m_occlusionAmount;
1105QQuick3DPrincipledMaterial::AlphaMode QQuick3DPrincipledMaterial::alphaMode()
const
1110float QQuick3DPrincipledMaterial::alphaCutoff()
const
1112 return m_alphaCutoff;
1115QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::roughnessChannel()
const
1117 return m_roughnessChannel;
1120QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::opacityChannel()
const
1122 return m_opacityChannel;
1125QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::metalnessChannel()
const
1127 return m_metalnessChannel;
1130QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::occlusionChannel()
const
1132 return m_occlusionChannel;
1135float QQuick3DPrincipledMaterial::pointSize()
const
1140float QQuick3DPrincipledMaterial::lineWidth()
const
1145QQuick3DTexture *QQuick3DPrincipledMaterial::heightMap()
const
1150QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::heightChannel()
const
1152 return m_heightChannel;
1155float QQuick3DPrincipledMaterial::heightAmount()
const
1157 return m_heightAmount;
1160int QQuick3DPrincipledMaterial::minHeightMapSamples()
const
1162 return m_minHeightMapSamples;
1165int QQuick3DPrincipledMaterial::maxHeightMapSamples()
const
1167 return m_maxHeightMapSamples;
1170void QQuick3DPrincipledMaterial::markAllDirty()
1172 m_dirtyAttributes = 0xffffffff;
1173 QQuick3DMaterial::markAllDirty();
1176void QQuick3DPrincipledMaterial::setLighting(QQuick3DPrincipledMaterial::Lighting lighting)
1178 if (m_lighting == lighting)
1181 m_lighting = lighting;
1182 emit lightingChanged(m_lighting);
1183 markDirty(LightingModeDirty);
1186void QQuick3DPrincipledMaterial::setBlendMode(QQuick3DPrincipledMaterial::BlendMode blendMode)
1188 if (m_blendMode == blendMode)
1191 m_blendMode = blendMode;
1192 emit blendModeChanged(m_blendMode);
1193 markDirty(BlendModeDirty);
1196void QQuick3DPrincipledMaterial::setBaseColor(QColor diffuseColor)
1198 if (m_baseColor == diffuseColor)
1201 m_baseColor = diffuseColor;
1202 emit baseColorChanged(m_baseColor);
1203 markDirty(BaseColorDirty);
1206void QQuick3DPrincipledMaterial::setBaseColorMap(QQuick3DTexture *baseColorMap)
1208 if (m_baseColorMap == baseColorMap)
1211 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setBaseColorMap, baseColorMap, m_baseColorMap);
1213 m_baseColorMap = baseColorMap;
1214 emit baseColorMapChanged(m_baseColorMap);
1215 markDirty(BaseColorDirty);
1218void QQuick3DPrincipledMaterial::setBaseColorSingleChannelEnabled(
bool baseColorSingleChannelEnabled)
1220 if (m_baseColorSingleChannelEnabled == baseColorSingleChannelEnabled)
1223 m_baseColorSingleChannelEnabled = baseColorSingleChannelEnabled;
1224 emit baseColorSingleChannelEnabledChanged(baseColorSingleChannelEnabled);
1225 markDirty(BaseColorDirty);
1228void QQuick3DPrincipledMaterial::setBaseColorChannel(TextureChannelMapping channel)
1230 if (m_baseColorChannel == channel)
1233 m_baseColorChannel = channel;
1234 emit baseColorChannelChanged(channel);
1235 markDirty(BaseColorDirty);
1238void QQuick3DPrincipledMaterial::setSpecularSingleChannelEnabled(
bool specularSingleChannelEnabled)
1240 if (m_specularSingleChannelEnabled == specularSingleChannelEnabled)
1243 m_specularSingleChannelEnabled = specularSingleChannelEnabled;
1244 emit specularSingleChannelEnabledChanged(specularSingleChannelEnabled);
1245 markDirty(SpecularDirty);
1248void QQuick3DPrincipledMaterial::setSpecularChannel(TextureChannelMapping channel)
1250 if (m_specularChannel == channel)
1253 m_specularChannel = channel;
1254 emit specularChannelChanged(channel);
1255 markDirty(SpecularDirty);
1258void QQuick3DPrincipledMaterial::setEmissiveSingleChannelEnabled(
bool emissiveSingleChannelEnabled)
1260 if (m_emissiveSingleChannelEnabled == emissiveSingleChannelEnabled)
1263 m_emissiveSingleChannelEnabled = emissiveSingleChannelEnabled;
1264 emit emissiveSingleChannelEnabledChanged(emissiveSingleChannelEnabled);
1265 markDirty(EmissiveDirty);
1268void QQuick3DPrincipledMaterial::setEmissiveChannel(TextureChannelMapping channel)
1270 if (m_emissiveChannel == channel)
1273 m_emissiveChannel = channel;
1274 emit emissiveChannelChanged(channel);
1275 markDirty(EmissiveDirty);
1278void QQuick3DPrincipledMaterial::setEmissiveMap(QQuick3DTexture *emissiveMap)
1280 if (m_emissiveMap == emissiveMap)
1283 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setEmissiveMap, emissiveMap, m_emissiveMap);
1285 m_emissiveMap = emissiveMap;
1286 emit emissiveMapChanged(m_emissiveMap);
1287 markDirty(EmissiveDirty);
1290void QQuick3DPrincipledMaterial::setEmissiveFactor(QVector3D emissiveFactor)
1292 if (m_emissiveFactor == emissiveFactor)
1295 m_emissiveFactor = emissiveFactor;
1296 emit emissiveFactorChanged(m_emissiveFactor);
1297 markDirty(EmissiveDirty);
1300void QQuick3DPrincipledMaterial::setSpecularReflectionMap(QQuick3DTexture *specularReflectionMap)
1302 if (m_specularReflectionMap == specularReflectionMap)
1305 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setSpecularReflectionMap, specularReflectionMap, m_specularReflectionMap);
1307 m_specularReflectionMap = specularReflectionMap;
1308 emit specularReflectionMapChanged(m_specularReflectionMap);
1309 markDirty(SpecularDirty);
1312void QQuick3DPrincipledMaterial::setSpecularMap(QQuick3DTexture *specularMap)
1314 if (m_specularMap == specularMap)
1317 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setSpecularMap, specularMap, m_specularMap);
1319 m_specularMap = specularMap;
1320 emit specularMapChanged(m_specularMap);
1321 markDirty(SpecularDirty);
1324void QQuick3DPrincipledMaterial::setSpecularTint(
float specularTint)
1326 specularTint = ensureNormalized(specularTint);
1327 if (qFuzzyCompare(m_specularTint, specularTint))
1330 m_specularTint = specularTint;
1331 emit specularTintChanged(m_specularTint);
1332 markDirty(SpecularDirty);
1335void QQuick3DPrincipledMaterial::setSpecularAmount(
float specularAmount)
1337 specularAmount = ensureNormalized(specularAmount);
1338 if (qFuzzyCompare(m_specularAmount, specularAmount))
1341 m_specularAmount = specularAmount;
1342 emit specularAmountChanged(m_specularAmount);
1343 markDirty(SpecularDirty);
1346void QQuick3DPrincipledMaterial::setRoughness(
float roughness)
1348 roughness = ensureNormalized(roughness);
1349 if (qFuzzyCompare(m_roughness, roughness))
1352 m_roughness = roughness;
1353 emit roughnessChanged(m_roughness);
1354 markDirty(RoughnessDirty);
1357void QQuick3DPrincipledMaterial::setRoughnessMap(QQuick3DTexture *roughnessMap)
1359 if (m_roughnessMap == roughnessMap)
1362 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setRoughnessMap, roughnessMap, m_roughnessMap);
1364 m_roughnessMap = roughnessMap;
1365 emit roughnessMapChanged(m_roughnessMap);
1366 markDirty(RoughnessDirty);
1369void QQuick3DPrincipledMaterial::setInvertOpacityMapValue(
bool invertOpacityMapValue)
1371 if (invertOpacityMapValue == m_invertOpacityMapValue)
1374 m_invertOpacityMapValue = invertOpacityMapValue;
1375 emit invertOpacityMapValueChanged(m_invertOpacityMapValue);
1376 markDirty(OpacityDirty);
1379void QQuick3DPrincipledMaterial::setOpacity(
float opacity)
1381 opacity = ensureNormalized(opacity);
1382 if (qFuzzyCompare(m_opacity, opacity))
1385 m_opacity = opacity;
1386 emit opacityChanged(m_opacity);
1387 markDirty(OpacityDirty);
1390void QQuick3DPrincipledMaterial::setOpacityMap(QQuick3DTexture *opacityMap)
1392 if (m_opacityMap == opacityMap)
1395 QQuick3DObjectPrivate::attachWatcher(
this, &::QQuick3DPrincipledMaterial::setOpacityMap, opacityMap, m_opacityMap);
1397 m_opacityMap = opacityMap;
1398 emit opacityMapChanged(m_opacityMap);
1399 markDirty(OpacityDirty);
1402void QQuick3DPrincipledMaterial::setNormalMap(QQuick3DTexture *normalMap)
1404 if (m_normalMap == normalMap)
1407 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setNormalMap, normalMap, m_normalMap);
1409 m_normalMap = normalMap;
1410 emit normalMapChanged(m_normalMap);
1411 markDirty(NormalDirty);
1414void QQuick3DPrincipledMaterial::setMetalness(
float metalnessAmount)
1416 metalnessAmount = ensureNormalized(metalnessAmount);
1417 if (qFuzzyCompare(m_metalnessAmount, metalnessAmount))
1420 m_metalnessAmount = metalnessAmount;
1421 emit metalnessChanged(m_metalnessAmount);
1422 markDirty(MetalnessDirty);
1425void QQuick3DPrincipledMaterial::setMetalnessMap(QQuick3DTexture *metallicMap)
1427 if (m_metalnessMap == metallicMap)
1430 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setMetalnessMap, metallicMap, m_metalnessMap);
1432 m_metalnessMap = metallicMap;
1433 emit metalnessMapChanged(m_metalnessMap);
1434 markDirty(MetalnessDirty);
1437void QQuick3DPrincipledMaterial::setNormalStrength(
float factor)
1439 factor = ensureNormalized(factor);
1440 if (qFuzzyCompare(m_normalStrength, factor))
1443 m_normalStrength = factor;
1444 emit normalStrengthChanged(m_normalStrength);
1445 markDirty(NormalDirty);
1448void QQuick3DPrincipledMaterial::setOcclusionMap(QQuick3DTexture *occlusionMap)
1450 if (m_occlusionMap == occlusionMap)
1453 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setOcclusionMap, occlusionMap, m_occlusionMap);
1455 m_occlusionMap = occlusionMap;
1456 emit occlusionMapChanged(m_occlusionMap);
1457 markDirty(OcclusionDirty);
1460void QQuick3DPrincipledMaterial::setOcclusionAmount(
float occlusionAmount)
1462 if (qFuzzyCompare(m_occlusionAmount, occlusionAmount))
1465 m_occlusionAmount = occlusionAmount;
1466 emit occlusionAmountChanged(m_occlusionAmount);
1467 markDirty(OcclusionDirty);
1470void QQuick3DPrincipledMaterial::setAlphaMode(QQuick3DPrincipledMaterial::AlphaMode alphaMode)
1472 if (m_alphaMode == alphaMode)
1475 m_alphaMode = alphaMode;
1476 emit alphaModeChanged(m_alphaMode);
1477 markDirty(AlphaModeDirty);
1480void QQuick3DPrincipledMaterial::setAlphaCutoff(
float alphaCutoff)
1482 if (qFuzzyCompare(m_alphaCutoff, alphaCutoff))
1485 m_alphaCutoff = alphaCutoff;
1486 emit alphaCutoffChanged(m_alphaCutoff);
1487 markDirty(AlphaModeDirty);
1490void QQuick3DPrincipledMaterial::setMetalnessChannel(TextureChannelMapping channel)
1492 if (m_metalnessChannel == channel)
1495 m_metalnessChannel = channel;
1496 emit metalnessChannelChanged(channel);
1497 markDirty(MetalnessDirty);
1500void QQuick3DPrincipledMaterial::setRoughnessChannel(TextureChannelMapping channel)
1502 if (m_roughnessChannel == channel)
1505 m_roughnessChannel = channel;
1506 emit roughnessChannelChanged(channel);
1507 markDirty(RoughnessDirty);
1510void QQuick3DPrincipledMaterial::setOpacityChannel(TextureChannelMapping channel)
1512 if (m_opacityChannel == channel)
1515 m_opacityChannel = channel;
1516 emit opacityChannelChanged(channel);
1517 markDirty(OpacityDirty);
1520void QQuick3DPrincipledMaterial::setOcclusionChannel(TextureChannelMapping channel)
1522 if (m_occlusionChannel == channel)
1525 m_occlusionChannel = channel;
1526 emit occlusionChannelChanged(channel);
1527 markDirty(OcclusionDirty);
1530void QQuick3DPrincipledMaterial::setPointSize(
float size)
1532 if (qFuzzyCompare(m_pointSize, size))
1535 emit pointSizeChanged();
1536 markDirty(PointSizeDirty);
1539void QQuick3DPrincipledMaterial::setLineWidth(
float width)
1541 if (qFuzzyCompare(m_lineWidth, width))
1543 m_lineWidth = width;
1544 emit lineWidthChanged();
1545 markDirty(LineWidthDirty);
1548void QQuick3DPrincipledMaterial::setHeightMap(QQuick3DTexture *heightMap)
1550 if (m_heightMap == heightMap)
1553 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setHeightMap, heightMap, m_heightMap);
1555 m_heightMap = heightMap;
1556 emit heightMapChanged(m_heightMap);
1557 markDirty(HeightDirty);
1560void QQuick3DPrincipledMaterial::setHeightChannel(QQuick3DMaterial::TextureChannelMapping channel)
1562 if (m_heightChannel == channel)
1565 m_heightChannel = channel;
1566 emit heightChannelChanged(m_heightChannel);
1567 markDirty(HeightDirty);
1570void QQuick3DPrincipledMaterial::setHeightAmount(
float heightAmount)
1572 if (m_heightAmount == heightAmount)
1575 m_heightAmount = heightAmount;
1576 emit heightAmountChanged(m_heightAmount);
1577 markDirty(HeightDirty);
1580void QQuick3DPrincipledMaterial::setMinHeightMapSamples(
int samples)
1582 if (m_minHeightMapSamples == samples)
1585 m_minHeightMapSamples = samples;
1586 emit minHeightMapSamplesChanged(samples);
1587 markDirty(HeightDirty);
1590void QQuick3DPrincipledMaterial::setMaxHeightMapSamples(
int samples)
1592 if (m_maxHeightMapSamples == samples)
1595 m_maxHeightMapSamples = samples;
1596 emit maxHeightMapSamplesChanged(samples);
1597 markDirty(HeightDirty);
1600QSSGRenderGraphObject *QQuick3DPrincipledMaterial::updateSpatialNode(QSSGRenderGraphObject *node)
1602 static const auto channelMapping = [](TextureChannelMapping mapping) {
1603 return QSSGRenderDefaultMaterial::TextureChannelMapping(mapping);
1608 node =
new QSSGRenderDefaultMaterial(QSSGRenderGraphObject::Type::PrincipledMaterial);
1612 QQuick3DMaterial::updateSpatialNode(node);
1614 QSSGRenderDefaultMaterial *material =
static_cast<QSSGRenderDefaultMaterial *>(node);
1616 material->specularModel = QSSGRenderDefaultMaterial::MaterialSpecularModel::SchlickGGX;
1618 if (m_dirtyAttributes & LightingModeDirty)
1619 material->lighting = QSSGRenderDefaultMaterial::MaterialLighting(m_lighting);
1621 if (m_dirtyAttributes & BlendModeDirty)
1622 material->blendMode = QSSGRenderDefaultMaterial::MaterialBlendMode(m_blendMode);
1624 if (m_dirtyAttributes & BaseColorDirty) {
1625 if (!m_baseColorMap)
1626 material->colorMap =
nullptr;
1628 material->colorMap = m_baseColorMap->getRenderImage();
1630 material->color = QSSGUtils::color::sRGBToLinear(m_baseColor);
1631 material->baseColorSingleChannelEnabled = m_baseColorSingleChannelEnabled;
1632 material->baseColorChannel = channelMapping(m_baseColorChannel);
1635 if (m_dirtyAttributes & EmissiveDirty) {
1637 material->emissiveMap =
nullptr;
1639 material->emissiveMap = m_emissiveMap->getRenderImage();
1641 material->emissiveColor = m_emissiveFactor;
1642 material->emissiveSingleChannelEnabled = m_emissiveSingleChannelEnabled;
1643 material->emissiveChannel = channelMapping(m_emissiveChannel);
1646 if (m_dirtyAttributes & RoughnessDirty) {
1647 if (!m_roughnessMap)
1648 material->roughnessMap =
nullptr;
1650 material->roughnessMap = m_roughnessMap->getRenderImage();
1652 material->specularRoughness = m_roughness;
1653 material->roughnessChannel = channelMapping(m_roughnessChannel);
1656 if (m_dirtyAttributes & MetalnessDirty) {
1657 if (!m_metalnessMap)
1658 material->metalnessMap =
nullptr;
1660 material->metalnessMap = m_metalnessMap->getRenderImage();
1662 material->metalnessAmount = m_metalnessAmount;
1663 material->metalnessChannel = channelMapping(m_metalnessChannel);
1667 if (m_dirtyAttributes & SpecularDirty) {
1668 if (!m_specularReflectionMap)
1669 material->specularReflection =
nullptr;
1671 material->specularReflection = m_specularReflectionMap->getRenderImage();
1673 if (!m_specularMap) {
1674 material->specularMap =
nullptr;
1676 material->specularMap = m_specularMap->getRenderImage();
1679 material->specularAmount = m_specularAmount;
1680 material->specularTint = QVector3D(m_specularTint, m_specularTint, m_specularTint);
1681 material->ior = m_indexOfRefraction;
1682 material->fresnelScaleBiasEnabled = m_fresnelScaleBiasEnabled;
1683 material->fresnelScale = m_fresnelScale;
1684 material->fresnelBias = m_fresnelBias;
1685 material->fresnelPower = m_fresnelPower;
1686 material->specularAmountSingleChannelEnabled = m_specularSingleChannelEnabled;
1687 material->specularAmountChannel = channelMapping(m_specularChannel);
1690 if (m_dirtyAttributes & OpacityDirty) {
1691 material->opacity = m_opacity;
1693 material->opacityMap =
nullptr;
1695 material->opacityMap = m_opacityMap->getRenderImage();
1697 material->invertOpacityMapValue = m_invertOpacityMapValue;
1698 material->opacity = m_opacity;
1699 material->opacityChannel = channelMapping(m_opacityChannel);
1702 if (m_dirtyAttributes & NormalDirty) {
1704 material->normalMap =
nullptr;
1706 material->normalMap = m_normalMap->getRenderImage();
1708 material->bumpAmount = m_normalStrength;
1711 if (m_dirtyAttributes & OcclusionDirty) {
1712 if (!m_occlusionMap)
1713 material->occlusionMap =
nullptr;
1715 material->occlusionMap = m_occlusionMap->getRenderImage();
1716 material->occlusionAmount = m_occlusionAmount;
1717 material->occlusionChannel = channelMapping(m_occlusionChannel);
1720 if (m_dirtyAttributes & AlphaModeDirty) {
1721 material->alphaMode = QSSGRenderDefaultMaterial::MaterialAlphaMode(m_alphaMode);
1722 material->alphaCutoff = m_alphaCutoff;
1725 if (m_dirtyAttributes & PointSizeDirty)
1726 material->pointSize = m_pointSize;
1728 if (m_dirtyAttributes & LineWidthDirty)
1729 material->lineWidth = m_lineWidth;
1731 if (m_dirtyAttributes & HeightDirty) {
1733 material->heightMap =
nullptr;
1735 material->heightMap = m_heightMap->getRenderImage();
1736 material->heightAmount = m_heightAmount;
1737 material->minHeightSamples = m_minHeightMapSamples;
1738 material->maxHeightSamples = m_maxHeightMapSamples;
1739 material->heightChannel = channelMapping(m_heightChannel);
1742 if (m_dirtyAttributes & ClearcoatDirty) {
1743 material->clearcoatAmount = m_clearcoatAmount;
1744 if (!m_clearcoatMap)
1745 material->clearcoatMap =
nullptr;
1747 material->clearcoatMap = m_clearcoatMap->getRenderImage();
1748 material->clearcoatChannel = channelMapping(m_clearcoatChannel);
1749 material->clearcoatRoughnessAmount = m_clearcoatRoughnessAmount;
1750 if (!m_clearcoatRoughnessMap)
1751 material->clearcoatRoughnessMap =
nullptr;
1753 material->clearcoatRoughnessMap = m_clearcoatRoughnessMap->getRenderImage();
1754 material->clearcoatRoughnessChannel = channelMapping(m_clearcoatRoughnessChannel);
1755 if (!m_clearcoatNormalMap)
1756 material->clearcoatNormalMap =
nullptr;
1758 material->clearcoatNormalMap = m_clearcoatNormalMap->getRenderImage();
1759 material->clearcoatNormalStrength = m_clearcoatNormalStrength;
1760 material->clearcoatFresnelScaleBiasEnabled = m_clearcoatFresnelScaleBiasEnabled;
1761 material->clearcoatFresnelScale = m_clearcoatFresnelScale;
1762 material->clearcoatFresnelBias = m_clearcoatFresnelBias;
1763 material->clearcoatFresnelPower = m_clearcoatFresnelPower;
1766 if (m_dirtyAttributes & TransmissionDirty) {
1767 material->transmissionFactor = m_transmissionFactor;
1768 if (!m_transmissionMap)
1769 material->transmissionMap =
nullptr;
1771 material->transmissionMap = m_transmissionMap->getRenderImage();
1772 material->transmissionChannel = channelMapping(m_transmissionChannel);
1775 if (m_dirtyAttributes & VolumeDirty) {
1776 material->thicknessFactor = m_thicknessFactor;
1777 if (!m_thicknessMap)
1778 material->thicknessMap =
nullptr;
1780 material->thicknessMap = m_thicknessMap->getRenderImage();
1781 material->thicknessChannel = channelMapping(m_thicknessChannel);
1783 material->attenuationDistance = m_attenuationDistance;
1784 material->attenuationColor = QSSGUtils::color::sRGBToLinear(m_attenuationColor).toVector3D();
1787 if (m_dirtyAttributes & VertexColorsDirty) {
1788 material->vertexColorsEnabled = m_vertexColorsEnabled;
1789 material->vertexColorsMaskEnabled = m_vertexColorsMaskEnabled;
1790 material->vertexColorRedMask = QSSGRenderDefaultMaterial::VertexColorMaskFlags::fromInt(m_vertexColorRedMask);
1791 material->vertexColorGreenMask = QSSGRenderDefaultMaterial::VertexColorMaskFlags::fromInt(m_vertexColorGreenMask);
1792 material->vertexColorBlueMask = QSSGRenderDefaultMaterial::VertexColorMaskFlags::fromInt(m_vertexColorBlueMask);
1793 material->vertexColorAlphaMask = QSSGRenderDefaultMaterial::VertexColorMaskFlags::fromInt(m_vertexColorAlphaMask);
1796 m_dirtyAttributes = 0;
1801void QQuick3DPrincipledMaterial::itemChange(QQuick3DObject::ItemChange change,
const QQuick3DObject::ItemChangeData &value)
1803 if (change == QQuick3DObject::ItemSceneChange)
1804 updateSceneManager(value.sceneManager);
1807void QQuick3DPrincipledMaterial::updateSceneManager(QQuick3DSceneManager *sceneManager)
1811 QQuick3DObjectPrivate::refSceneManager(m_baseColorMap, *sceneManager);
1812 QQuick3DObjectPrivate::refSceneManager(m_emissiveMap, *sceneManager);
1813 QQuick3DObjectPrivate::refSceneManager(m_specularReflectionMap, *sceneManager);
1814 QQuick3DObjectPrivate::refSceneManager(m_specularMap, *sceneManager);
1815 QQuick3DObjectPrivate::refSceneManager(m_roughnessMap, *sceneManager);
1816 QQuick3DObjectPrivate::refSceneManager(m_opacityMap, *sceneManager);
1817 QQuick3DObjectPrivate::refSceneManager(m_normalMap, *sceneManager);
1818 QQuick3DObjectPrivate::refSceneManager(m_metalnessMap, *sceneManager);
1819 QQuick3DObjectPrivate::refSceneManager(m_occlusionMap, *sceneManager);
1820 QQuick3DObjectPrivate::refSceneManager(m_heightMap, *sceneManager);
1821 QQuick3DObjectPrivate::refSceneManager(m_clearcoatMap, *sceneManager);
1822 QQuick3DObjectPrivate::refSceneManager(m_clearcoatRoughnessMap, *sceneManager);
1823 QQuick3DObjectPrivate::refSceneManager(m_clearcoatNormalMap, *sceneManager);
1824 QQuick3DObjectPrivate::refSceneManager(m_transmissionMap, *sceneManager);
1825 QQuick3DObjectPrivate::refSceneManager(m_thicknessMap, *sceneManager);
1827 QQuick3DObjectPrivate::derefSceneManager(m_baseColorMap);
1828 QQuick3DObjectPrivate::derefSceneManager(m_emissiveMap);
1829 QQuick3DObjectPrivate::derefSceneManager(m_specularReflectionMap);
1830 QQuick3DObjectPrivate::derefSceneManager(m_specularMap);
1831 QQuick3DObjectPrivate::derefSceneManager(m_roughnessMap);
1832 QQuick3DObjectPrivate::derefSceneManager(m_opacityMap);
1833 QQuick3DObjectPrivate::derefSceneManager(m_normalMap);
1834 QQuick3DObjectPrivate::derefSceneManager(m_metalnessMap);
1835 QQuick3DObjectPrivate::derefSceneManager(m_occlusionMap);
1836 QQuick3DObjectPrivate::derefSceneManager(m_heightMap);
1837 QQuick3DObjectPrivate::derefSceneManager(m_clearcoatMap);
1838 QQuick3DObjectPrivate::derefSceneManager(m_clearcoatRoughnessMap);
1839 QQuick3DObjectPrivate::derefSceneManager(m_clearcoatNormalMap);
1840 QQuick3DObjectPrivate::derefSceneManager(m_transmissionMap);
1841 QQuick3DObjectPrivate::derefSceneManager(m_thicknessMap);
1845void QQuick3DPrincipledMaterial::markDirty(QQuick3DPrincipledMaterial::DirtyType type)
1847 if (!(m_dirtyAttributes & quint32(type))) {
1848 m_dirtyAttributes |= quint32(type);
1853float QQuick3DPrincipledMaterial::clearcoatAmount()
const
1855 return m_clearcoatAmount;
1858void QQuick3DPrincipledMaterial::setClearcoatAmount(
float newClearcoatAmount)
1860 if (qFuzzyCompare(m_clearcoatAmount, newClearcoatAmount))
1862 m_clearcoatAmount = newClearcoatAmount;
1863 emit clearcoatAmountChanged(m_clearcoatAmount);
1864 markDirty(ClearcoatDirty);
1867QQuick3DTexture *QQuick3DPrincipledMaterial::clearcoatMap()
const
1869 return m_clearcoatMap;
1872void QQuick3DPrincipledMaterial::setClearcoatMap(QQuick3DTexture *newClearcoatMap)
1874 if (m_clearcoatMap == newClearcoatMap)
1877 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setClearcoatMap, newClearcoatMap, m_clearcoatMap);
1879 m_clearcoatMap = newClearcoatMap;
1880 emit clearcoatMapChanged(m_clearcoatMap);
1881 markDirty(ClearcoatDirty);
1884QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::clearcoatChannel()
const
1886 return m_clearcoatChannel;
1889void QQuick3DPrincipledMaterial::setClearcoatChannel(QQuick3DMaterial::TextureChannelMapping newClearcoatChannel)
1891 if (m_clearcoatChannel == newClearcoatChannel)
1893 m_clearcoatChannel = newClearcoatChannel;
1894 emit clearcoatChannelChanged(m_clearcoatChannel);
1895 markDirty(ClearcoatDirty);
1898float QQuick3DPrincipledMaterial::clearcoatRoughnessAmount()
const
1900 return m_clearcoatRoughnessAmount;
1903void QQuick3DPrincipledMaterial::setClearcoatRoughnessAmount(
float newClearcoatRoughnessAmount)
1905 if (qFuzzyCompare(m_clearcoatRoughnessAmount, newClearcoatRoughnessAmount))
1907 m_clearcoatRoughnessAmount = newClearcoatRoughnessAmount;
1908 emit clearcoatRoughnessAmountChanged(m_clearcoatRoughnessAmount);
1909 markDirty(ClearcoatDirty);
1912QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::clearcoatRoughnessChannel()
const
1914 return m_clearcoatRoughnessChannel;
1917void QQuick3DPrincipledMaterial::setClearcoatRoughnessChannel(QQuick3DMaterial::TextureChannelMapping newClearcoatRoughnessChannel)
1919 if (m_clearcoatRoughnessChannel == newClearcoatRoughnessChannel)
1921 m_clearcoatRoughnessChannel = newClearcoatRoughnessChannel;
1922 emit clearcoatRoughnessChannelChanged(m_clearcoatRoughnessChannel);
1923 markDirty(ClearcoatDirty);
1926QQuick3DTexture *QQuick3DPrincipledMaterial::clearcoatRoughnessMap()
const
1928 return m_clearcoatRoughnessMap;
1931void QQuick3DPrincipledMaterial::setClearcoatRoughnessMap(QQuick3DTexture *newClearcoatRoughnessMap)
1933 if (m_clearcoatRoughnessMap == newClearcoatRoughnessMap)
1936 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setClearcoatRoughnessMap, newClearcoatRoughnessMap, m_clearcoatRoughnessMap);
1938 m_clearcoatRoughnessMap = newClearcoatRoughnessMap;
1939 emit clearcoatRoughnessMapChanged(m_clearcoatRoughnessMap);
1940 markDirty(ClearcoatDirty);
1943QQuick3DTexture *QQuick3DPrincipledMaterial::clearcoatNormalMap()
const
1945 return m_clearcoatNormalMap;
1948void QQuick3DPrincipledMaterial::setClearcoatNormalMap(QQuick3DTexture *newClearcoatNormalMap)
1950 if (m_clearcoatNormalMap == newClearcoatNormalMap)
1953 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setClearcoatNormalMap, newClearcoatNormalMap, m_clearcoatNormalMap);
1955 m_clearcoatNormalMap = newClearcoatNormalMap;
1956 emit clearcoatNormalMapChanged(m_clearcoatNormalMap);
1957 markDirty(ClearcoatDirty);
1961float QQuick3DPrincipledMaterial::clearcoatNormalStrength()
const
1963 return m_clearcoatNormalStrength;
1966void QQuick3DPrincipledMaterial::setClearcoatNormalStrength(
float newClearcoatNormalStrength)
1968 if (qFuzzyCompare(m_clearcoatNormalStrength, newClearcoatNormalStrength))
1971 m_clearcoatNormalStrength = newClearcoatNormalStrength;
1972 emit clearcoatNormalStrengthChanged(m_clearcoatNormalStrength);
1973 markDirty(ClearcoatDirty);
1976float QQuick3DPrincipledMaterial::transmissionFactor()
const
1978 return m_transmissionFactor;
1981void QQuick3DPrincipledMaterial::setTransmissionFactor(
float newTransmissionFactor)
1983 if (qFuzzyCompare(m_transmissionFactor, newTransmissionFactor))
1985 m_transmissionFactor = newTransmissionFactor;
1986 emit transmissionFactorChanged(m_transmissionFactor);
1987 markDirty(TransmissionDirty);
1990QQuick3DTexture *QQuick3DPrincipledMaterial::transmissionMap()
const
1992 return m_transmissionMap;
1995void QQuick3DPrincipledMaterial::setTransmissionMap(QQuick3DTexture *newTransmissionMap)
1997 if (m_transmissionMap == newTransmissionMap)
2000 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setTransmissionMap, newTransmissionMap, m_transmissionMap);
2002 m_transmissionMap = newTransmissionMap;
2003 emit transmissionMapChanged(m_transmissionMap);
2004 markDirty(TransmissionDirty);
2007QQuick3DMaterial::TextureChannelMapping QQuick3DPrincipledMaterial::transmissionChannel()
const
2009 return m_transmissionChannel;
2012float QQuick3DPrincipledMaterial::indexOfRefraction()
const
2014 return m_indexOfRefraction;
2017bool QQuick3DPrincipledMaterial::fresnelScaleBiasEnabled()
const
2019 return m_fresnelScaleBiasEnabled;
2022float QQuick3DPrincipledMaterial::fresnelScale()
const
2024 return m_fresnelScale;
2027float QQuick3DPrincipledMaterial::fresnelBias()
const
2029 return m_fresnelBias;
2032float QQuick3DPrincipledMaterial::fresnelPower()
const
2034 return m_fresnelPower;
2037bool QQuick3DPrincipledMaterial::clearcoatFresnelScaleBiasEnabled()
const
2039 return m_clearcoatFresnelScaleBiasEnabled;
2042float QQuick3DPrincipledMaterial::clearcoatFresnelScale()
const
2044 return m_clearcoatFresnelScale;
2047float QQuick3DPrincipledMaterial::clearcoatFresnelBias()
const
2049 return m_clearcoatFresnelBias;
2052float QQuick3DPrincipledMaterial::clearcoatFresnelPower()
const
2054 return m_clearcoatFresnelPower;
2057bool QQuick3DPrincipledMaterial::vertexColorsEnabled()
const
2059 return m_vertexColorsEnabled;
2062void QQuick3DPrincipledMaterial::setTransmissionChannel(QQuick3DMaterial::TextureChannelMapping newTransmissionChannel)
2064 if (m_transmissionChannel == newTransmissionChannel)
2066 m_transmissionChannel = newTransmissionChannel;
2067 emit transmissionChannelChanged(m_transmissionChannel);
2068 markDirty(TransmissionDirty);
2071float QQuick3DPrincipledMaterial::thicknessFactor()
const
2073 return m_thicknessFactor;
2076void QQuick3DPrincipledMaterial::setThicknessFactor(
float newThicknessFactor)
2078 if (qFuzzyCompare(m_thicknessFactor, newThicknessFactor))
2080 m_thicknessFactor = newThicknessFactor;
2081 emit thicknessFactorChanged(m_thicknessFactor);
2082 markDirty(VolumeDirty);
2085QQuick3DTexture *QQuick3DPrincipledMaterial::thicknessMap()
const
2087 return m_thicknessMap;
2090void QQuick3DPrincipledMaterial::setThicknessMap(QQuick3DTexture *newThicknessMap)
2092 if (m_thicknessMap == newThicknessMap)
2095 QQuick3DObjectPrivate::attachWatcher(
this, &QQuick3DPrincipledMaterial::setThicknessMap, newThicknessMap, m_thicknessMap);
2097 m_thicknessMap = newThicknessMap;
2098 emit thicknessMapChanged(m_thicknessMap);
2099 markDirty(VolumeDirty);
2102const QQuick3DMaterial::TextureChannelMapping &QQuick3DPrincipledMaterial::thicknessChannel()
const
2104 return m_thicknessChannel;
2107void QQuick3DPrincipledMaterial::setThicknessChannel(
const QQuick3DMaterial::TextureChannelMapping &newThicknessChannel)
2109 if (m_thicknessChannel == newThicknessChannel)
2111 m_thicknessChannel = newThicknessChannel;
2112 emit thicknessChannelChanged(m_thicknessChannel);
2113 markDirty(VolumeDirty);
2116float QQuick3DPrincipledMaterial::attenuationDistance()
const
2118 return m_attenuationDistance;
2121void QQuick3DPrincipledMaterial::setAttenuationDistance(
float newAttenuationDistance)
2123 if (qFuzzyCompare(m_attenuationDistance, newAttenuationDistance))
2125 m_attenuationDistance = newAttenuationDistance;
2126 emit attenuationDistanceChanged(m_attenuationDistance);
2127 markDirty(VolumeDirty);
2130const QColor &QQuick3DPrincipledMaterial::attenuationColor()
const
2132 return m_attenuationColor;
2135void QQuick3DPrincipledMaterial::setAttenuationColor(
const QColor &newAttenuationColor)
2137 if (m_attenuationColor == newAttenuationColor)
2139 m_attenuationColor = newAttenuationColor;
2140 emit attenuationColorChanged(m_attenuationColor);
2141 markDirty(VolumeDirty);
2144void QQuick3DPrincipledMaterial::setIndexOfRefraction(
float indexOfRefraction)
2146 if (qFuzzyCompare(m_indexOfRefraction, indexOfRefraction))
2149 m_indexOfRefraction = indexOfRefraction;
2150 emit indexOfRefractionChanged(m_indexOfRefraction);
2151 markDirty(SpecularDirty);
2154void QQuick3DPrincipledMaterial::setFresnelScaleBiasEnabled(
bool fresnelScaleBiasEnabled)
2156 if (m_fresnelScaleBiasEnabled == fresnelScaleBiasEnabled)
2159 m_fresnelScaleBiasEnabled = fresnelScaleBiasEnabled;
2160 emit fresnelScaleBiasEnabledChanged(m_fresnelScaleBiasEnabled);
2161 markDirty(SpecularDirty);
2164void QQuick3DPrincipledMaterial::setFresnelScale(
float fresnelScale)
2166 if (qFuzzyCompare(m_fresnelScale, fresnelScale))
2169 m_fresnelScale = fresnelScale;
2170 emit fresnelScaleChanged(m_fresnelScale);
2171 markDirty(SpecularDirty);
2174void QQuick3DPrincipledMaterial::setFresnelBias(
float fresnelBias)
2176 if (qFuzzyCompare(m_fresnelBias, fresnelBias))
2179 m_fresnelBias = fresnelBias;
2180 emit fresnelBiasChanged(m_fresnelBias);
2181 markDirty(SpecularDirty);
2184void QQuick3DPrincipledMaterial::setFresnelPower(
float fresnelPower)
2186 if (qFuzzyCompare(m_fresnelPower, fresnelPower))
2189 m_fresnelPower = fresnelPower;
2190 emit fresnelPowerChanged(m_fresnelPower);
2191 markDirty(SpecularDirty);
2194void QQuick3DPrincipledMaterial::setClearcoatFresnelScaleBiasEnabled(
bool clearcoatFresnelScaleBiasEnabled)
2196 if (m_clearcoatFresnelScaleBiasEnabled == clearcoatFresnelScaleBiasEnabled)
2199 m_clearcoatFresnelScaleBiasEnabled = clearcoatFresnelScaleBiasEnabled;
2200 emit clearcoatFresnelScaleBiasEnabledChanged(m_clearcoatFresnelScaleBiasEnabled);
2201 markDirty(ClearcoatDirty);
2204void QQuick3DPrincipledMaterial::setClearcoatFresnelScale(
float clearcoatFresnelScale)
2206 if (qFuzzyCompare(m_clearcoatFresnelScale, clearcoatFresnelScale))
2209 m_clearcoatFresnelScale = clearcoatFresnelScale;
2210 emit clearcoatFresnelScaleChanged(m_clearcoatFresnelScale);
2211 markDirty(ClearcoatDirty);
2214void QQuick3DPrincipledMaterial::setClearcoatFresnelBias(
float clearcoatFresnelBias)
2216 if (qFuzzyCompare(m_clearcoatFresnelBias, clearcoatFresnelBias))
2219 m_clearcoatFresnelBias = clearcoatFresnelBias;
2220 emit clearcoatFresnelBiasChanged(m_clearcoatFresnelBias);
2221 markDirty(ClearcoatDirty);
2224void QQuick3DPrincipledMaterial::setClearcoatFresnelPower(
float clearcoatFresnelPower)
2226 if (qFuzzyCompare(m_clearcoatFresnelPower, clearcoatFresnelPower))
2229 m_clearcoatFresnelPower = clearcoatFresnelPower;
2230 emit clearcoatFresnelPowerChanged(m_clearcoatFresnelPower);
2231 markDirty(ClearcoatDirty);
2234void QQuick3DPrincipledMaterial::setVertexColorsEnabled(
bool vertexColors)
2236 if (m_vertexColorsEnabled == vertexColors)
2239 m_vertexColorsEnabled = vertexColors;
2240 emit vertexColorsEnabledChanged(m_vertexColorsEnabled);
2241 markDirty(VertexColorsDirty);
2244bool QQuick3DPrincipledMaterial::vertexColorsMaskEnabled()
const
2246 return m_vertexColorsMaskEnabled;
2249void QQuick3DPrincipledMaterial::setVertexColorsMaskEnabled(
bool vertexColorsMaskEnabled)
2251 if (m_vertexColorsMaskEnabled == vertexColorsMaskEnabled)
2253 m_vertexColorsMaskEnabled = vertexColorsMaskEnabled;
2254 emit vertexColorsMaskEnabledChanged();
2255 markDirty(VertexColorsDirty);
2258QQuick3DPrincipledMaterial::VertexColorMaskFlags QQuick3DPrincipledMaterial::vertexColorRedMask()
const
2260 return m_vertexColorRedMask;
2263void QQuick3DPrincipledMaterial::setVertexColorRedMask(QQuick3DPrincipledMaterial::VertexColorMaskFlags vertexColorRedMask)
2265 if (m_vertexColorRedMask == vertexColorRedMask)
2267 m_vertexColorRedMask = vertexColorRedMask;
2268 emit vertexColorRedMaskChanged();
2269 markDirty(VertexColorsDirty);
2272QQuick3DPrincipledMaterial::VertexColorMaskFlags QQuick3DPrincipledMaterial::vertexColorGreenMask()
const
2274 return m_vertexColorGreenMask;
2277void QQuick3DPrincipledMaterial::setVertexColorGreenMask(QQuick3DPrincipledMaterial::VertexColorMaskFlags vertexColorGreenMask)
2279 if (m_vertexColorGreenMask == vertexColorGreenMask)
2281 m_vertexColorGreenMask = vertexColorGreenMask;
2282 emit vertexColorGreenMaskChanged();
2283 markDirty(VertexColorsDirty);
2286QQuick3DPrincipledMaterial::VertexColorMaskFlags QQuick3DPrincipledMaterial::vertexColorBlueMask()
const
2288 return m_vertexColorBlueMask;
2291void QQuick3DPrincipledMaterial::setVertexColorBlueMask(QQuick3DPrincipledMaterial::VertexColorMaskFlags vertexColorBlueMask)
2293 if (m_vertexColorBlueMask == vertexColorBlueMask)
2295 m_vertexColorBlueMask = vertexColorBlueMask;
2296 emit vertexColorBlueMaskChanged();
2297 markDirty(VertexColorsDirty);
2300QQuick3DPrincipledMaterial::VertexColorMaskFlags QQuick3DPrincipledMaterial::vertexColorAlphaMask()
const
2302 return m_vertexColorAlphaMask;
2305void QQuick3DPrincipledMaterial::setVertexColorAlphaMask(QQuick3DPrincipledMaterial::VertexColorMaskFlags vertexColorAlphaMask)
2307 if (m_vertexColorAlphaMask == vertexColorAlphaMask)
2309 m_vertexColorAlphaMask = vertexColorAlphaMask;
2310 emit vertexColorAlphaMaskChanged();
2311 markDirty(VertexColorsDirty);