UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MaterialUniformExpressions.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2/*=============================================================================
3 UniformExpressions.h: Uniform expression definitions.
4=============================================================================*/
5
6#pragma once
7
8#include "CoreMinimal.h"
10#include "MaterialShared.h"
11#include "TextureResource.h"
12#include "Engine/Texture.h"
15
20{
21public:
27
33
38
39 const TCHAR* GetName() const { return Name; }
40
41private:
42 const TCHAR* Name;
43};
44
45#define DECLARE_MATERIALUNIFORMEXPRESSION_TYPE(Name) \
46 public: \
47 static FMaterialUniformExpressionType StaticType; \
48 virtual FMaterialUniformExpressionType* GetType() const { return &StaticType; }
49
50#define IMPLEMENT_MATERIALUNIFORMEXPRESSION_TYPE(Name) \
51 FMaterialUniformExpressionType Name::StaticType(TEXT(#Name));
52
80
85{
87
88public:
93
94 //~ Begin FMaterialUniformExpression Interface.
98 //~ End FMaterialUniformExpression Interface.
99
108
109#if WITH_EDITORONLY_DATA
111 EMaterialSamplerType GetSamplerType() const { return SamplerType; }
112#endif
113
116
118
119protected:
128#if WITH_EDITORONLY_DATA
130 EMaterialSamplerType SamplerType;
131#endif
136};
137
178
180{
183
184public:
186
187 //~ Begin FMaterialUniformExpression Interface.
188 virtual bool IsIdentical(const FMaterialUniformExpression* OtherExpression) const override;
189 virtual bool IsConstant() const override;
190 //~ End FMaterialUniformExpression Interface.
191
192 //~ Begin FMaterialUniformExpressionTextureCollection Interface.
195 //~ End FMaterialUniformExpressionTextureCollection Interface.
196
198 {
199 return ParameterInfo.GetName();
200 }
201
203 {
204 return ParameterInfo;
205 }
206
207private:
208 FHashedMaterialParameterInfo ParameterInfo;
209};
210
234
252
256{
258public:
264
265 // FMaterialUniformExpression interface.
266 virtual bool IsConstant() const
267 {
268 return true;
269 }
271 {
272 if (GetType() != OtherExpression->GetType())
273 {
274 return false;
275 }
277 return OtherConstant->ValueType == ValueType && OtherConstant->Value == Value;
278 }
279
280 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
281 {
282 UE::Shader::FValue ConstantValue(Value);
283 switch (ValueType)
284 {
285 case MCT_Float:
286 case MCT_Float1: ConstantValue.Type = UE::Shader::EValueType::Float1; break;
287 case MCT_Float2: ConstantValue.Type = UE::Shader::EValueType::Float2; break;
288 case MCT_Float3: ConstantValue.Type = UE::Shader::EValueType::Float3; break;
289 case MCT_Float4: ConstantValue.Type = UE::Shader::EValueType::Float4; break;
290 default: checkNoEntry(); break;
291 }
293 OutData.Write(ConstantValue);
294 }
295
297 {
298 OutValue = Value;
299 }
300
301private:
302 FLinearColor Value;
303 uint8 ValueType;
304};
305
309{
311public:
316
317 // FMaterialUniformExpression interface.
318 virtual bool IsConstant() const
319 {
320 return true;
321 }
323 {
324 if (GetType() != OtherExpression->GetType())
325 {
326 return false;
327 }
329 return OtherConstant->Value == Value;
330 }
331
332 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
333 {
335 OutData.Write(Value);
336 }
337
339 {
340 OutValue = Value.AsLinearColor();
341 }
342
343private:
344 UE::Shader::FValue Value;
345};
346
350{
352public:
353
361
362 // FMaterialUniformExpression interface.
363 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
364 {
366 OutData.Write((uint16)ParameterIndex);
367 }
368
369 virtual bool IsConstant() const
370 {
371 return false;
372 }
373
375 {
376 return ParameterInfo;
377 }
378
380 {
381 return ParameterInfo.GetName();
382 }
383
385 {
386 if (GetType() != OtherExpression->GetType())
387 {
388 return false;
389 }
391 return ParameterInfo == OtherParameter->ParameterInfo && ParameterIndex == OtherParameter->ParameterIndex;
392 }
393private:
394 FHashedMaterialParameterInfo ParameterInfo;
395 int32 ParameterIndex;
396};
397
401{
403public:
404
412
413 // FMaterialUniformExpression interface.
414 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
415 {
417 OutData.Write((uint16)ParameterIndex);
418 }
419
420 virtual bool IsConstant() const
421 {
422 return false;
423 }
424
426 {
427 return ParameterInfo;
428 }
429
431 {
432 return ParameterInfo.GetName();
433 }
434
436 {
437 if (GetType() != OtherExpression->GetType())
438 {
439 return false;
440 }
442 return ParameterInfo == OtherParameter->ParameterInfo && ParameterIndex == OtherParameter->ParameterIndex;
443 }
444private:
445 uint32 ParameterIndex;
446 FHashedMaterialParameterInfo ParameterInfo;
447};
448
450template<typename TextureType>
451static TextureType* GetIndexedTexture(const FMaterial& Material, int32 TextureIndex)
452{
453 UObject* IndexedTexture = nullptr;
454 const TArrayView<const TObjectPtr<UObject>> ReferencedTextures = Material.GetReferencedTextures();
455 if (ReferencedTextures.IsValidIndex(TextureIndex))
456 {
457 IndexedTexture = ReferencedTextures[TextureIndex];
458 }
459
460 if (IndexedTexture == nullptr)
461 {
462 static bool bWarnedOnce = false;
463 if (!bWarnedOnce)
464 {
465 UE_LOG(LogMaterial, Warning, TEXT("%s: Requesting an invalid TextureIndex! (%u / %u)"), *Material.GetFriendlyName(), TextureIndex, ReferencedTextures.Num());
466 bWarnedOnce = true;
467 }
468 }
469
470 // Can return nullptr if TextureType doesn't match type of indexed texture
472}
473
475{
477 const TArrayView<const TObjectPtr<UTextureCollection>> ReferencedTextureCollections = Material.GetReferencedTextureCollections();
478 if (ReferencedTextureCollections.IsValidIndex(TextureCollectionIndex))
479 {
480 IndexedTextureCollection = ReferencedTextureCollections[TextureCollectionIndex];
481 }
482
483 if (IndexedTextureCollection == nullptr)
484 {
485 static bool bWarnedOnce = false;
486 if (!bWarnedOnce)
487 {
488 UE_LOG(LogMaterial, Warning, TEXT("%s: Requesting an invalid TextureIndex! (%u / %u)"), *Material.GetFriendlyName(), TextureCollectionIndex, ReferencedTextureCollections.Num());
489 bWarnedOnce = true;
490 }
491 }
492
494}
495
500{
503public:
504
506
511
516
521
522 // FMaterialUniformExpression interface.
524
526 {
528 OutParameter.ParameterInfo = ParameterInfo;
529 }
530
531 virtual bool IsConstant() const
532 {
533 return false;
534 }
535
537 {
538 return ParameterInfo.GetName();
539 }
540
542 {
543 return ParameterInfo;
544 }
545
547 {
548 if (GetType() != OtherExpression->GetType())
549 {
550 return false;
551 }
553 return ParameterInfo == OtherParameter->ParameterInfo && Super::IsIdentical(OtherParameter);
554 }
555
556private:
557 FHashedMaterialParameterInfo ParameterInfo;
558 int32 ParameterIndex;
559};
560
577
578
603
607{
609public:
610
616
617 // FMaterialUniformExpression interface.
618 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
619 {
620 X->WriteNumberOpcodes(OutData);
622 }
623 virtual bool IsConstant() const
624 {
625 return X->IsConstant();
626 }
628 {
629 if (GetType() != OtherExpression->GetType())
630 {
631 return false;
632 }
634 return X->IsIdentical(OtherSine->X) && bIsCosine == OtherSine->bIsCosine;
635 }
636
641
642private:
644 bool bIsCosine;
645};
646
659
663{
665public:
666
673
679
680 // FMaterialUniformExpression interface.
681 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
682 {
683 X->WriteNumberOpcodes(OutData);
684 if (Op == TMO_Atan2)
685 {
686 Y->WriteNumberOpcodes(OutData);
687 }
688 switch (Op)
689 {
697 default: checkNoEntry(); break;
698 }
699 }
700
701 virtual bool IsConstant() const
702 {
703 return X->IsConstant() && Y->IsConstant();
704 }
706 {
707 if (GetType() != OtherExpression->GetType())
708 {
709 return false;
710 }
712 return X->IsIdentical(OtherTrig->X) && Y->IsIdentical(OtherTrig->Y) && Op == OtherTrig->Op;
713 }
714
719
720private:
723 uint8 Op;
724};
725
766
770{
772public:
773
778
779 // FMaterialUniformExpression interface.
780 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
781 {
782 X->WriteNumberOpcodes(OutData);
784 }
785 virtual bool IsConstant() const
786 {
787 return X->IsConstant();
788 }
790 {
791 if (GetType() != OtherExpression->GetType())
792 {
793 return false;
794 }
796 return X->IsIdentical(OtherRcp->X);
797 }
798
803
804private:
806};
807
811{
813public:
814
820
821 // FMaterialUniformExpression interface.
822 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
823 {
824 X->WriteNumberOpcodes(OutData);
826 }
827 virtual bool IsConstant() const
828 {
829 return X->IsConstant();
830 }
832 {
833 if (GetType() != OtherExpression->GetType())
834 {
835 return false;
836 }
838 return X->IsIdentical(OtherSqrt->X) && ValueType == OtherSqrt->ValueType;
839 }
840
845
846private:
848 uint32 ValueType;
849};
850
890
894{
896public:
897
903
904 // FMaterialUniformExpression interface.
905 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
906 {
907 X->WriteNumberOpcodes(OutData);
909 }
910 bool IsConstant() const override
911 {
912 return X->IsConstant();
913 }
915 {
916 if(GetType() != OtherExpression->GetType())
917 {
918 return false;
919 }
920
922 return X->IsIdentical(OtherExp->X);
923 }
924
929
930private:
932};
933
937{
939public:
940
946
947 // FMaterialUniformExpression interface.
948 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
949 {
950 X->WriteNumberOpcodes(OutData);
952 }
953 bool IsConstant() const override
954 {
955 return X->IsConstant();
956 }
958 {
959 if(GetType() != OtherExpression->GetType())
960 {
961 return false;
962 }
963
965 return X->IsIdentical(OtherExp2->X);
966 }
967
972
973private:
975};
976
980{
982public:
983
989
990 // FMaterialUniformExpression interface.
991 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
992 {
993 X->WriteNumberOpcodes(OutData);
995 }
996 bool IsConstant() const override
997 {
998 return X->IsConstant();
999 }
1001 {
1002 if(GetType() != OtherExpression->GetType())
1003 {
1004 return false;
1005 }
1006
1008 return X->IsIdentical(OtherLog->X);
1009 }
1010
1015
1016private:
1018};
1019
1023{
1025public:
1026
1031
1032 // FMaterialUniformExpression interface.
1033 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1034 {
1035 X->WriteNumberOpcodes(OutData);
1037 }
1038 bool IsConstant() const override
1039 {
1040 return X->IsConstant();
1041 }
1043 {
1044 if (GetType() != OtherExpression->GetType())
1045 {
1046 return false;
1047 }
1048
1050 return X->IsIdentical(OtherLog->X);
1051 }
1052
1057
1058private:
1060};
1061
1065{
1067public:
1068
1073
1074 // FMaterialUniformExpression interface.
1075 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1076 {
1077 X->WriteNumberOpcodes(OutData);
1079 }
1080 bool IsConstant() const override
1081 {
1082 return X->IsConstant();
1083 }
1085 {
1086 if (GetType() != OtherExpression->GetType())
1087 {
1088 return false;
1089 }
1090
1092 return X->IsIdentical(OtherLog->X);
1093 }
1094
1099
1100private:
1102};
1103
1115
1117{
1119public:
1120
1128
1129 // FMaterialUniformExpression interface.
1130 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1131 {
1132 A->WriteNumberOpcodes(OutData);
1133 B->WriteNumberOpcodes(OutData);
1134
1135 switch (Op)
1136 {
1143 default: checkNoEntry(); break;
1144 }
1145 }
1146
1147 virtual bool IsConstant() const
1148 {
1149 return A->IsConstant() && B->IsConstant();
1150 }
1152 {
1153 if (GetType() != OtherExpression->GetType())
1154 {
1155 return false;
1156 }
1158 return A->IsIdentical(OtherMath->A) && B->IsIdentical(OtherMath->B) && Op == OtherMath->Op && ValueType == OtherMath->ValueType;
1159 }
1160
1165
1166private:
1169 uint32 ValueType;
1170 uint8 Op;
1171};
1172
1177{
1179public:
1180
1185
1186 // FMaterialUniformExpression interface.
1187 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1188 {
1189 X->WriteNumberOpcodes(OutData);
1191 }
1192 virtual bool IsConstant() const
1193 {
1194 return X->IsConstant();
1195 }
1197 {
1198 if (GetType() != OtherExpression->GetType())
1199 {
1200 return false;
1201 }
1203 return X->IsIdentical(OtherPeriodic->X);
1204 }
1205
1210
1211private:
1213};
1214
1218{
1220public:
1221
1228
1229 // FMaterialUniformExpression interface.
1230 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1231 {
1232 A->WriteNumberOpcodes(OutData);
1233 B->WriteNumberOpcodes(OutData);
1234 OutData.WriteOpcode(UE::Shader::EPreshaderOpcode::AppendVector);// .Write((uint8)NumComponentsA);
1235 }
1236 virtual bool IsConstant() const
1237 {
1238 return A->IsConstant() && B->IsConstant();
1239 }
1241 {
1242 if (GetType() != OtherExpression->GetType())
1243 {
1244 return false;
1245 }
1247 return A->IsIdentical(OtherAppend->A) && B->IsIdentical(OtherAppend->B) && NumComponentsA == OtherAppend->NumComponentsA;
1248 }
1249
1254
1255private:
1258 uint32 NumComponentsA;
1259};
1260
1264{
1266public:
1267
1273
1274 // FMaterialUniformExpression interface.
1275 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1276 {
1277 A->WriteNumberOpcodes(OutData);
1278 B->WriteNumberOpcodes(OutData);
1280 }
1281 virtual bool IsConstant() const
1282 {
1283 return A->IsConstant() && B->IsConstant();
1284 }
1286 {
1287 if (GetType() != OtherExpression->GetType())
1288 {
1289 return false;
1290 }
1292 return A->IsIdentical(OtherMin->A) && B->IsIdentical(OtherMin->B);
1293 }
1294
1299
1300private:
1303};
1304
1308{
1310public:
1311
1317
1318 // FMaterialUniformExpression interface.
1319 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1320 {
1321 A->WriteNumberOpcodes(OutData);
1322 B->WriteNumberOpcodes(OutData);
1324 }
1325 virtual bool IsConstant() const
1326 {
1327 return A->IsConstant() && B->IsConstant();
1328 }
1330 {
1331 if (GetType() != OtherExpression->GetType())
1332 {
1333 return false;
1334 }
1336 return A->IsIdentical(OtherMax->A) && B->IsIdentical(OtherMax->B);
1337 }
1338
1343
1344private:
1347};
1348
1352{
1354public:
1355
1362
1363 // FMaterialUniformExpression interface.
1364 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1365 {
1366 Input->WriteNumberOpcodes(OutData);
1367 Min->WriteNumberOpcodes(OutData);
1368 Max->WriteNumberOpcodes(OutData);
1370 }
1371 virtual bool IsConstant() const
1372 {
1373 return Input->IsConstant() && Min->IsConstant() && Max->IsConstant();
1374 }
1376 {
1377 if (GetType() != OtherExpression->GetType())
1378 {
1379 return false;
1380 }
1382 return Input->IsIdentical(OtherClamp->Input) && Min->IsIdentical(OtherClamp->Min) && Max->IsIdentical(OtherClamp->Max);
1383 }
1384
1389
1390private:
1394};
1395
1399{
1401public:
1402
1407
1408 // FMaterialUniformExpression interface.
1409 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1410 {
1411 Input->WriteNumberOpcodes(OutData);
1413 }
1414 virtual bool IsConstant() const
1415 {
1416 return Input->IsConstant();
1417 }
1419 {
1420 if (GetType() != OtherExpression->GetType())
1421 {
1422 return false;
1423 }
1425 return Input->IsIdentical(OtherClamp->Input);
1426 }
1427
1432
1433private:
1435};
1436
1438{
1440public:
1441
1444 X(InX),
1445 IndexR(InR),
1446 IndexG(InG),
1447 IndexB(InB),
1448 IndexA(InA)
1449 {
1450 NumElements = 0;
1451 if (InA >= 0)
1452 {
1453 check(InA <= 3);
1454 ++NumElements;
1455 check(InB >= 0);
1456 }
1457
1458 if (InB >= 0)
1459 {
1460 check(InB <= 3);
1461 ++NumElements;
1462 check(InG >= 0);
1463 }
1464
1465 if (InG >= 0)
1466 {
1467 check(InG <= 3);
1468 ++NumElements;
1469 }
1470
1471 // At least one proper index
1472 check(InR >= 0 && InR <= 3);
1473 ++NumElements;
1474 }
1475
1476 // FMaterialUniformExpression interface.
1477 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1478 {
1479 X->WriteNumberOpcodes(OutData);
1480 OutData.WriteOpcode(UE::Shader::EPreshaderOpcode::ComponentSwizzle).Write((uint8)NumElements).Write((uint8)IndexR).Write((uint8)IndexG).Write((uint8)IndexB).Write((uint8)IndexA);
1481 }
1482 virtual bool IsConstant() const
1483 {
1484 return X->IsConstant();
1485 }
1487 {
1488 if (GetType() != OtherExpression->GetType())
1489 {
1490 return false;
1491 }
1493 return X->IsIdentical(OtherSwizzle->X) &&
1494 NumElements == OtherSwizzle->NumElements &&
1495 IndexR == OtherSwizzle->IndexR &&
1496 IndexG == OtherSwizzle->IndexG &&
1497 IndexB == OtherSwizzle->IndexB &&
1498 IndexA == OtherSwizzle->IndexA;
1499 }
1500
1505
1506private:
1508 int8 IndexR;
1509 int8 IndexG;
1510 int8 IndexB;
1511 int8 IndexA;
1512 int8 NumElements;
1513};
1514
1518{
1520public:
1521
1526
1527 // FMaterialUniformExpression interface.
1528 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1529 {
1530 X->WriteNumberOpcodes(OutData);
1532 }
1533 virtual bool IsConstant() const
1534 {
1535 return X->IsConstant();
1536 }
1538 {
1539 if (GetType() != OtherExpression->GetType())
1540 {
1541 return false;
1542 }
1544 return X->IsIdentical(OtherFloor->X);
1545 }
1546
1551
1552private:
1554};
1555
1559{
1561public:
1562
1567
1568 // FMaterialUniformExpression interface.
1569 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1570 {
1571 X->WriteNumberOpcodes(OutData);
1573 }
1574 virtual bool IsConstant() const
1575 {
1576 return X->IsConstant();
1577 }
1579 {
1580 if (GetType() != OtherExpression->GetType())
1581 {
1582 return false;
1583 }
1585 return X->IsIdentical(OtherCeil->X);
1586 }
1587
1592
1593private:
1595};
1596
1600{
1602public:
1603
1608
1609 // FMaterialUniformExpression interface.
1610 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1611 {
1612 X->WriteNumberOpcodes(OutData);
1614 }
1615 virtual bool IsConstant() const
1616 {
1617 return X->IsConstant();
1618 }
1620 {
1621 if (GetType() != OtherExpression->GetType())
1622 {
1623 return false;
1624 }
1626 return X->IsIdentical(OtherRound->X);
1627 }
1628
1633
1634private:
1636};
1637
1641{
1643public:
1644
1649
1650 // FMaterialUniformExpression interface.
1651 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1652 {
1653 X->WriteNumberOpcodes(OutData);
1655 }
1656 virtual bool IsConstant() const
1657 {
1658 return X->IsConstant();
1659 }
1661 {
1662 if (GetType() != OtherExpression->GetType())
1663 {
1664 return false;
1665 }
1667 return X->IsIdentical(OtherTrunc->X);
1668 }
1669
1674
1675private:
1677};
1678
1682{
1684public:
1685
1690
1691 // FMaterialUniformExpression interface.
1692 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1693 {
1694 X->WriteNumberOpcodes(OutData);
1696 }
1697 virtual bool IsConstant() const
1698 {
1699 return X->IsConstant();
1700 }
1702 {
1703 if (GetType() != OtherExpression->GetType())
1704 {
1705 return false;
1706 }
1708 return X->IsIdentical(OtherSign->X);
1709 }
1710
1715
1716private:
1718};
1719
1723{
1725public:
1726
1731
1732 // FMaterialUniformExpression interface.
1733 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1734 {
1735 X->WriteNumberOpcodes(OutData);
1737 }
1738 virtual bool IsConstant() const
1739 {
1740 return X->IsConstant();
1741 }
1743 {
1744 if (GetType() != OtherExpression->GetType())
1745 {
1746 return false;
1747 }
1749 return X->IsIdentical(OtherFrac->X);
1750 }
1751
1756
1757private:
1759};
1760
1764{
1766public:
1767
1773
1774 // FMaterialUniformExpression interface.
1775 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1776 {
1777 A->WriteNumberOpcodes(OutData);
1778 B->WriteNumberOpcodes(OutData);
1780 }
1781 virtual bool IsConstant() const
1782 {
1783 return A->IsConstant() && B->IsConstant();
1784 }
1786 {
1787 if (GetType() != OtherExpression->GetType())
1788 {
1789 return false;
1790 }
1792 return A->IsIdentical(OtherMax->A) && B->IsIdentical(OtherMax->B);
1793 }
1794
1799
1800private:
1803};
1804
1808{
1810public:
1811
1817
1818 // FMaterialUniformExpression interface.
1819 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1820 {
1821 A->WriteNumberOpcodes(OutData);
1822 B->WriteNumberOpcodes(OutData);
1824 }
1825 virtual bool IsConstant() const
1826 {
1827 return A->IsConstant() && B->IsConstant();
1828 }
1830 {
1831 if (GetType() != OtherExpression->GetType())
1832 {
1833 return false;
1834 }
1836 return A->IsIdentical(OtherMax->A) && B->IsIdentical(OtherMax->B);
1837 }
1838
1843
1844private:
1847};
1848
1853{
1855public:
1856
1861
1862 // FMaterialUniformExpression interface.
1863 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1864 {
1865 X->WriteNumberOpcodes(OutData);
1867 }
1868 virtual bool IsConstant() const
1869 {
1870 return X->IsConstant();
1871 }
1873 {
1874 if (GetType() != OtherExpression->GetType())
1875 {
1876 return false;
1877 }
1879 return X->IsIdentical(OtherAbs->X);
1880 }
1881
1886
1887private:
1889};
1890
1894{
1896public:
1897
1903
1904 // FMaterialUniformExpression interface.
1905 virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData& OutData) const override
1906 {
1907 FMaterialTextureParameterInfo TextureParameter;
1908 TextureExpression->GetTextureParameterInfo(TextureParameter);
1909
1911 switch (TextureProperty)
1912 {
1915 default: checkNoEntry(); break;
1916 }
1917 OutData.WriteOpcode(Op).Write(TextureParameter.ParameterInfo).Write((int32)TextureParameter.TextureIndex);
1918 }
1919 virtual bool IsIdentical(const FMaterialUniformExpression* OtherExpression) const override
1920 {
1921 if (GetType() != OtherExpression->GetType())
1922 {
1923 return false;
1924 }
1925
1927
1928 if (TextureProperty != OtherTexturePropertyExpression->TextureProperty)
1929 {
1930 return false;
1931 }
1932
1933 return TextureExpression->IsIdentical(OtherTexturePropertyExpression->TextureExpression);
1934 }
1935
1936private:
1938 int8 TextureProperty;
1939};
1940
1941
1963
1985
2016
#define check(expr)
Definition AssertionMacros.h:314
#define checkNoEntry()
Definition AssertionMacros.h:316
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ESamplerSourceMode
Definition EngineTypes.h:281
EMaterialSamplerType
Definition EngineTypes.h:936
#define UE_LOG(CategoryName, Verbosity, Format,...)
Definition LogMacros.h:270
EMaterialExposedTextureProperty
Definition MaterialExpressionTextureProperty.h:17
EFoldedMathOperation
Definition MaterialUniformExpressions.h:1107
@ FMO_Add
Definition MaterialUniformExpressions.h:1108
@ FMO_Sub
Definition MaterialUniformExpressions.h:1109
@ FMO_Dot
Definition MaterialUniformExpressions.h:1112
@ FMO_Mul
Definition MaterialUniformExpressions.h:1110
@ FMO_Div
Definition MaterialUniformExpressions.h:1111
@ FMO_Cross
Definition MaterialUniformExpressions.h:1113
#define DECLARE_MATERIALUNIFORMEXPRESSION_TYPE(Name)
Definition MaterialUniformExpressions.h:45
UTextureCollection * GetIndexedTextureCollection(const FMaterial &Material, int32 TextureCollectionIndex)
Definition MaterialUniformExpressions.h:474
ETrigMathOperation
Definition MaterialUniformExpressions.h:650
@ TMO_Asin
Definition MaterialUniformExpressions.h:654
@ TMO_Acos
Definition MaterialUniformExpressions.h:655
@ TMO_Atan2
Definition MaterialUniformExpressions.h:657
@ TMO_Atan
Definition MaterialUniformExpressions.h:656
@ TMO_Sin
Definition MaterialUniformExpressions.h:651
@ TMO_Cos
Definition MaterialUniformExpressions.h:652
@ TMO_Tan
Definition MaterialUniformExpressions.h:653
@ MCT_Float2
Definition MaterialValueType.h:22
@ MCT_Float4
Definition MaterialValueType.h:24
@ MCT_Float1
Definition MaterialValueType.h:21
@ MCT_Float
Definition MaterialValueType.h:89
@ MCT_Float3
Definition MaterialValueType.h:23
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MaterialShared.h:589
Definition MaterialShared.h:568
Definition MaterialShared.h:544
Definition MaterialUniformExpressions.h:1853
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1868
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1882
FMaterialUniformExpressionAbs(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:1858
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1863
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1872
FMaterialUniformExpressionAbs()
Definition MaterialUniformExpressions.h:1857
Definition MaterialUniformExpressions.h:1218
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1230
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1236
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1250
FMaterialUniformExpressionAppendVector(FMaterialUniformExpression *InA, FMaterialUniformExpression *InB, uint32 InNumComponentsA)
Definition MaterialUniformExpressions.h:1223
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1240
FMaterialUniformExpressionAppendVector()
Definition MaterialUniformExpressions.h:1222
Definition MaterialUniformExpressions.h:1559
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1578
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1588
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1574
FMaterialUniformExpressionCeil(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:1564
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1569
FMaterialUniformExpressionCeil()
Definition MaterialUniformExpressions.h:1563
Definition MaterialUniformExpressions.h:1352
FMaterialUniformExpressionClamp(FMaterialUniformExpression *InInput, FMaterialUniformExpression *InMin, FMaterialUniformExpression *InMax)
Definition MaterialUniformExpressions.h:1357
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1385
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1371
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1364
FMaterialUniformExpressionClamp()
Definition MaterialUniformExpressions.h:1356
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1375
Definition MaterialUniformExpressions.h:1438
FMaterialUniformExpressionComponentSwizzle()
Definition MaterialUniformExpressions.h:1442
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1486
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1477
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1482
FMaterialUniformExpressionComponentSwizzle(FMaterialUniformExpression *InX, int8 InR, int8 InG, int8 InB, int8 InA)
Definition MaterialUniformExpressions.h:1443
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1501
Definition MaterialUniformExpressions.h:256
FMaterialUniformExpressionConstant()
Definition MaterialUniformExpressions.h:259
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:280
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:270
virtual void GetNumberValue(const FMaterialRenderContext &Context, FLinearColor &OutValue) const override
Definition MaterialUniformExpressions.h:296
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:266
FMaterialUniformExpressionConstant(const FLinearColor &InValue, uint8 InValueType)
Definition MaterialUniformExpressions.h:260
Definition MaterialUniformExpressions.h:937
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:948
FMaterialUniformExpressionExponential2()
Definition MaterialUniformExpressions.h:941
bool IsConstant() const override
Definition MaterialUniformExpressions.h:953
FMaterialUniformExpressionExponential2(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:943
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:968
bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.h:957
Definition MaterialUniformExpressions.h:894
FMaterialUniformExpressionExponential()
Definition MaterialUniformExpressions.h:898
bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.h:914
FMaterialUniformExpressionExponential(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:900
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:925
bool IsConstant() const override
Definition MaterialUniformExpressions.h:910
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:905
Definition MaterialUniformExpressions.h:212
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.cpp:2031
FGuid ResolveExternalTextureGUID(const FMaterialRenderContext &Context, TOptional< FName > ParameterName=TOptional< FName >()) const
Definition MaterialUniformExpressions.cpp:2042
int32 GetSourceTextureIndex() const
Definition MaterialUniformExpressions.h:222
FGuid ExternalTextureGuid
Definition MaterialUniformExpressions.h:232
int32 SourceTextureIndex
Definition MaterialUniformExpressions.h:230
virtual bool IsConstant() const override
Definition MaterialUniformExpressions.h:219
Definition MaterialUniformExpressions.h:1968
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.cpp:2142
TOptional< FName > ParameterName
Definition MaterialUniformExpressions.h:1983
FMaterialUniformExpressionExternalTextureCoordinateOffset(const FGuid &InGuid)
Definition MaterialUniformExpressions.h:1973
FMaterialUniformExpressionExternalTextureCoordinateOffset()
Definition MaterialUniformExpressions.h:1972
FMaterialUniformExpressionExternalTextureBase Super
Definition MaterialUniformExpressions.h:1980
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.cpp:2131
FMaterialUniformExpressionExternalTextureCoordinateOffset(int32 InSourceTextureIndex, TOptional< FName > InParameterName)
Definition MaterialUniformExpressions.h:1974
Definition MaterialUniformExpressions.h:1946
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.cpp:2114
FMaterialUniformExpressionExternalTextureBase Super
Definition MaterialUniformExpressions.h:1958
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.cpp:2125
FMaterialUniformExpressionExternalTextureCoordinateScaleRotation()
Definition MaterialUniformExpressions.h:1950
FMaterialUniformExpressionExternalTextureCoordinateScaleRotation(const FGuid &InGuid)
Definition MaterialUniformExpressions.h:1951
FMaterialUniformExpressionExternalTextureCoordinateScaleRotation(int32 InSourceTextureIndex, TOptional< FName > InParameterName)
Definition MaterialUniformExpressions.h:1952
TOptional< FName > ParameterName
Definition MaterialUniformExpressions.h:1961
Definition MaterialUniformExpressions.h:583
FMaterialUniformExpressionExternalTextureParameter()
Definition MaterialUniformExpressions.cpp:2053
virtual void GetExternalTextureParameterInfo(FMaterialExternalTextureParameterInfo &OutParameter) const override
Definition MaterialUniformExpressions.cpp:2061
FName GetParameterName() const
Definition MaterialUniformExpressions.h:595
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.cpp:2067
virtual FMaterialUniformExpressionExternalTextureParameter * GetExternalTextureParameterUniformExpression() override
Definition MaterialUniformExpressions.h:593
Definition MaterialUniformExpressions.h:239
virtual class FMaterialUniformExpressionExternalTextureParameter * GetExternalTextureParameterUniformExpression()
Definition MaterialUniformExpressions.h:248
FMaterialUniformExpressionExternalTexture(int32 InSourceTextureIndex=INDEX_NONE)
Definition MaterialUniformExpressions.h:243
FMaterialUniformExpressionExternalTexture(const FGuid &InGuid)
Definition MaterialUniformExpressions.h:244
virtual FMaterialUniformExpressionExternalTexture * GetExternalTextureUniformExpression() override
Definition MaterialUniformExpressions.h:247
virtual void GetExternalTextureParameterInfo(FMaterialExternalTextureParameterInfo &OutParameter) const
Definition MaterialUniformExpressions.cpp:2047
Definition MaterialUniformExpressions.h:565
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:572
FMaterialUniformExpressionFlipBookTextureParameter()
Definition MaterialUniformExpressions.h:570
Definition MaterialUniformExpressions.h:1518
FMaterialUniformExpressionFloor(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:1523
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1528
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1547
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1537
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1533
FMaterialUniformExpressionFloor()
Definition MaterialUniformExpressions.h:1522
Definition MaterialUniformExpressions.h:1764
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1785
FMaterialUniformExpressionFmod(FMaterialUniformExpression *InA, FMaterialUniformExpression *InB)
Definition MaterialUniformExpressions.h:1769
FMaterialUniformExpressionFmod()
Definition MaterialUniformExpressions.h:1768
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1781
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1795
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1775
Definition MaterialUniformExpressions.h:1117
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1147
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1130
FMaterialUniformExpressionFoldedMath(FMaterialUniformExpression *InA, FMaterialUniformExpression *InB, uint8 InOp, uint32 InValueType=MCT_Float)
Definition MaterialUniformExpressions.h:1122
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1161
FMaterialUniformExpressionFoldedMath()
Definition MaterialUniformExpressions.h:1121
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1151
Definition MaterialUniformExpressions.h:1723
FMaterialUniformExpressionFrac(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:1728
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1752
FMaterialUniformExpressionFrac()
Definition MaterialUniformExpressions.h:1727
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1742
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1733
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1738
Definition MaterialUniformExpressions.h:309
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:332
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:318
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:322
virtual void GetNumberValue(const FMaterialRenderContext &Context, FLinearColor &OutValue) const override
Definition MaterialUniformExpressions.h:338
FMaterialUniformExpressionGenericConstant(const UE::Shader::FValue &InValue)
Definition MaterialUniformExpressions.h:313
FMaterialUniformExpressionGenericConstant()
Definition MaterialUniformExpressions.h:312
Definition MaterialUniformExpressions.h:811
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:822
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:827
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:831
FMaterialUniformExpressionLength()
Definition MaterialUniformExpressions.h:815
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:841
FMaterialUniformExpressionLength(FMaterialUniformExpression *InX, uint32 InValueType=MCT_Float)
Definition MaterialUniformExpressions.h:816
Definition MaterialUniformExpressions.h:1065
FMaterialUniformExpressionLogarithm10()
Definition MaterialUniformExpressions.h:1069
bool IsConstant() const override
Definition MaterialUniformExpressions.h:1080
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1075
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1095
FMaterialUniformExpressionLogarithm10(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:1070
bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.h:1084
Definition MaterialUniformExpressions.h:1023
FMaterialUniformExpressionLogarithm2(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:1028
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1033
bool IsConstant() const override
Definition MaterialUniformExpressions.h:1038
FMaterialUniformExpressionLogarithm2()
Definition MaterialUniformExpressions.h:1027
bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.h:1042
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1053
Definition MaterialUniformExpressions.h:980
FMaterialUniformExpressionLogarithm()
Definition MaterialUniformExpressions.h:984
FMaterialUniformExpressionLogarithm(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:986
bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.h:1000
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:991
bool IsConstant() const override
Definition MaterialUniformExpressions.h:996
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1011
Definition MaterialUniformExpressions.h:1308
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1329
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1339
FMaterialUniformExpressionMax()
Definition MaterialUniformExpressions.h:1312
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1325
FMaterialUniformExpressionMax(FMaterialUniformExpression *InA, FMaterialUniformExpression *InB)
Definition MaterialUniformExpressions.h:1313
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1319
Definition MaterialUniformExpressions.h:1264
FMaterialUniformExpressionMin(FMaterialUniformExpression *InA, FMaterialUniformExpression *InB)
Definition MaterialUniformExpressions.h:1269
FMaterialUniformExpressionMin()
Definition MaterialUniformExpressions.h:1268
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1285
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1295
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1275
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1281
Definition MaterialUniformExpressions.h:1808
FMaterialUniformExpressionModulo()
Definition MaterialUniformExpressions.h:1812
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1839
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1819
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1829
FMaterialUniformExpressionModulo(FMaterialUniformExpression *InA, FMaterialUniformExpression *InB)
Definition MaterialUniformExpressions.h:1813
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1825
Definition MaterialUniformExpressions.h:854
FMaterialUniformExpressionNormalize(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:859
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:882
FMaterialUniformExpressionNormalize()
Definition MaterialUniformExpressions.h:858
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:872
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:868
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:863
Definition MaterialUniformExpressions.h:350
FMaterialUniformExpressionNumericParameter(const FMaterialParameterInfo &InParameterInfo, int32 InParameterIndex)
Definition MaterialUniformExpressions.h:355
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:369
FMaterialUniformExpressionNumericParameter()
Definition MaterialUniformExpressions.h:354
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:363
const FHashedMaterialParameterInfo & GetParameterInfo() const
Definition MaterialUniformExpressions.h:374
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:384
FName GetParameterName() const
Definition MaterialUniformExpressions.h:379
Definition MaterialUniformExpressions.h:1177
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1192
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1206
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1196
FMaterialUniformExpressionPeriodic(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:1182
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1187
FMaterialUniformExpressionPeriodic()
Definition MaterialUniformExpressions.h:1181
Definition MaterialUniformExpressions.h:770
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:789
FMaterialUniformExpressionRcp(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:775
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:780
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:785
FMaterialUniformExpressionRcp()
Definition MaterialUniformExpressions.h:774
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:799
Definition MaterialUniformExpressions.h:1600
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1619
FMaterialUniformExpressionRound()
Definition MaterialUniformExpressions.h:1604
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1629
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1610
FMaterialUniformExpressionRound(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:1605
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1615
Definition MaterialUniformExpressions.h:1990
int32 TextureIndex
Definition MaterialUniformExpressions.h:2012
virtual bool IsConstant() const override
Definition MaterialUniformExpressions.h:2001
FHashedMaterialParameterInfo ParameterInfo
Definition MaterialUniformExpressions.h:2010
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.cpp:2170
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.cpp:2181
bool bParameter
Definition MaterialUniformExpressions.h:2008
FMaterialUniformExpressionRuntimeVirtualTextureUniform()
Definition MaterialUniformExpressions.cpp:2148
int32 VectorIndex
Definition MaterialUniformExpressions.h:2014
Definition MaterialUniformExpressions.h:1399
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1418
FMaterialUniformExpressionSaturate(FMaterialUniformExpression *InInput)
Definition MaterialUniformExpressions.h:1404
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1409
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1414
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1428
FMaterialUniformExpressionSaturate()
Definition MaterialUniformExpressions.h:1403
Definition MaterialUniformExpressions.h:1682
FMaterialUniformExpressionSign()
Definition MaterialUniformExpressions.h:1686
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1692
FMaterialUniformExpressionSign(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:1687
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1711
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1701
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1697
Definition MaterialUniformExpressions.h:607
FMaterialUniformExpressionSine()
Definition MaterialUniformExpressions.h:611
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:627
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:623
FMaterialUniformExpressionSine(FMaterialUniformExpression *InX, bool bInIsCosine)
Definition MaterialUniformExpressions.h:612
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:618
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:637
Definition MaterialUniformExpressions.h:2021
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.cpp:2209
virtual bool IsConstant() const override
Definition MaterialUniformExpressions.h:2032
FHashedMaterialParameterInfo ParameterInfo
Definition MaterialUniformExpressions.h:2041
bool bParameter
Definition MaterialUniformExpressions.h:2039
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.cpp:2220
int32 VectorIndex
Definition MaterialUniformExpressions.h:2045
FMaterialUniformExpressionSparseVolumeTextureUniform()
Definition MaterialUniformExpressions.cpp:2187
int32 TextureIndex
Definition MaterialUniformExpressions.h:2043
Definition MaterialUniformExpressions.h:729
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:739
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:744
FMaterialUniformExpressionSquareRoot()
Definition MaterialUniformExpressions.h:733
FMaterialUniformExpressionSquareRoot(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:734
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:758
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:748
Definition MaterialUniformExpressions.h:401
FMaterialUniformExpressionStaticBoolParameter(const FMaterialParameterInfo &InParameterInfo, uint32 InParameterIndex)
Definition MaterialUniformExpressions.h:406
FName GetParameterName() const
Definition MaterialUniformExpressions.h:430
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:420
const FHashedMaterialParameterInfo & GetParameterInfo() const
Definition MaterialUniformExpressions.h:425
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:414
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:435
FMaterialUniformExpressionStaticBoolParameter()
Definition MaterialUniformExpressions.h:405
Definition MaterialUniformExpressions.h:180
FName GetParameterName() const
Definition MaterialUniformExpressions.h:197
virtual bool IsConstant() const override
Definition MaterialUniformExpressions.cpp:2003
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.cpp:1992
virtual void GetTextureCollectionParameterInfo(FMaterialTextureCollectionParameterInfo &OutParameter) const override
Definition MaterialUniformExpressions.cpp:2013
virtual FMaterialUniformExpressionTextureCollectionParameter * GetTextureCollectionParameterUniformExpression() final
Definition MaterialUniformExpressions.cpp:2008
const FHashedMaterialParameterInfo & GetParameterInfo() const
Definition MaterialUniformExpressions.h:202
Definition MaterialUniformExpressions.h:139
bool IsVirtualCollection() const
Definition MaterialUniformExpressions.h:168
int32 GetTextureCollectionTypePrefixIndex() const
Definition MaterialUniformExpressions.h:163
void SetTextureCollectionTypePrefixIndex(uint32 InPrefix)
Definition MaterialUniformExpressions.h:158
int32 GetTextureCollectionIndex() const
Definition MaterialUniformExpressions.h:153
int32 TextureCollectionTypePrefixIndex
Definition MaterialUniformExpressions.h:175
virtual void GetTextureCollectionParameterInfo(FMaterialTextureCollectionParameterInfo &OutParameter) const
Definition MaterialUniformExpressions.cpp:1978
int32 TextureCollectionIndex
Definition MaterialUniformExpressions.h:174
virtual class FMaterialUniformExpressionTextureCollection * GetTextureCollectionUniformExpression() final
Definition MaterialUniformExpressions.h:146
virtual class FMaterialUniformExpressionTextureCollectionParameter * GetTextureCollectionParameterUniformExpression()
Definition MaterialUniformExpressions.cpp:1973
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.cpp:1962
bool bIsVirtualCollection
Definition MaterialUniformExpressions.h:176
Definition MaterialUniformExpressions.h:500
FMaterialUniformExpressionTextureParameter(const FMaterialParameterInfo &InParameterInfo, int32 InTextureIndex, EMaterialSamplerType InSamplerType)
Definition MaterialUniformExpressions.h:517
FMaterialUniformExpressionTextureParameter(const FMaterialParameterInfo &InParameterInfo, int32 InTextureIndex, int32 InTextureLayerIndex, int32 InPageTableLayerIndex, EMaterialSamplerType InSamplerType)
Definition MaterialUniformExpressions.h:512
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:546
FName GetParameterName() const
Definition MaterialUniformExpressions.h:536
FMaterialUniformExpressionTextureParameter()
Definition MaterialUniformExpressions.h:505
FMaterialUniformExpressionTextureParameter(const FMaterialParameterInfo &InParameterInfo, int32 InTextureIndex, EMaterialSamplerType InSamplerType, ESamplerSourceMode InSourceMode, bool InVirtualTexture)
Definition MaterialUniformExpressions.h:507
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:531
virtual void GetTextureParameterInfo(FMaterialTextureParameterInfo &OutParameter) const override
Definition MaterialUniformExpressions.h:525
virtual class FMaterialUniformExpressionTextureParameter * GetTextureParameterUniformExpression() override
Definition MaterialUniformExpressions.h:523
const FHashedMaterialParameterInfo & GetParameterInfo() const
Definition MaterialUniformExpressions.h:541
Definition MaterialUniformExpressions.h:1894
FMaterialUniformExpressionTextureProperty()
Definition MaterialUniformExpressions.h:1898
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1905
FMaterialUniformExpressionTextureProperty(FMaterialUniformExpressionTexture *InTextureExpression, EMaterialExposedTextureProperty InTextureProperty)
Definition MaterialUniformExpressions.h:1899
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const override
Definition MaterialUniformExpressions.h:1919
Definition MaterialUniformExpressions.h:85
int32 GetMaterialCacheTagIndex() const
Definition MaterialUniformExpressions.h:104
virtual class FMaterialUniformExpressionTextureParameter * GetTextureParameterUniformExpression()
Definition MaterialUniformExpressions.h:96
virtual void GetTextureParameterInfo(FMaterialTextureParameterInfo &OutParameter) const
Definition MaterialUniformExpressions.cpp:1931
int32 GetTextureLayerIndex() const
Definition MaterialUniformExpressions.h:103
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.cpp:1938
int16 TextureLayerIndex
Definition MaterialUniformExpressions.h:123
int32 GetPageTableLayerIndex() const
Definition MaterialUniformExpressions.h:106
FMaterialUniformExpressionTexture()
Definition MaterialUniformExpressions.cpp:1878
bool bVirtualTexture
Definition MaterialUniformExpressions.h:135
int16 PageTableLayerIndex
Definition MaterialUniformExpressions.h:127
int16 MaterialCacheTagIndex
Definition MaterialUniformExpressions.h:125
void SetMaterialCacheTagIndex(uint32 InMaterialCacheTagIndex)
Definition MaterialUniformExpressions.h:107
int32 TextureIndex
Definition MaterialUniformExpressions.h:121
int32 GetTextureIndex() const
Definition MaterialUniformExpressions.h:101
ESamplerSourceMode GetSamplerSource() const
Definition MaterialUniformExpressions.h:115
ESamplerSourceMode SamplerSource
Definition MaterialUniformExpressions.h:133
virtual class FMaterialUniformExpressionTexture * GetTextureUniformExpression()
Definition MaterialUniformExpressions.h:95
Definition MaterialUniformExpressions.h:663
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:705
FMaterialUniformExpressionTrigMath(FMaterialUniformExpression *InX, ETrigMathOperation InOp)
Definition MaterialUniformExpressions.h:668
FMaterialUniformExpressionTrigMath()
Definition MaterialUniformExpressions.h:667
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:715
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:681
FMaterialUniformExpressionTrigMath(FMaterialUniformExpression *InX, FMaterialUniformExpression *InY, ETrigMathOperation InOp)
Definition MaterialUniformExpressions.h:674
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:701
Definition MaterialUniformExpressions.h:1641
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:1656
FMaterialUniformExpressionTruncate(FMaterialUniformExpression *InX)
Definition MaterialUniformExpressions.h:1646
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const override
Definition MaterialUniformExpressions.h:1670
FMaterialUniformExpressionTruncate()
Definition MaterialUniformExpressions.h:1645
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const override
Definition MaterialUniformExpressions.h:1651
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:1660
Definition MaterialUniformExpressions.h:20
const TCHAR * GetName() const
Definition MaterialUniformExpressions.h:39
static TLinkedList< FMaterialUniformExpressionType * > *& GetTypeList()
Definition MaterialUniformExpressions.cpp:74
static TMap< FName, FMaterialUniformExpressionType * > & GetTypeMap()
Definition MaterialUniformExpressions.cpp:80
Definition MaterialUniformExpressions.h:57
virtual class FMaterialUniformExpressionExternalTexture * GetExternalTextureUniformExpression()
Definition MaterialUniformExpressions.h:63
virtual void WriteNumberOpcodes(UE::Shader::FPreshaderData &OutData) const
Definition MaterialUniformExpressions.cpp:168
virtual class FMaterialUniformExpressionTextureCollection * GetTextureCollectionUniformExpression()
Definition MaterialUniformExpressions.h:64
int32 UniformOffset
Definition MaterialUniformExpressions.h:75
virtual bool IsConstant() const
Definition MaterialUniformExpressions.h:65
virtual FMaterialUniformExpressionType * GetType() const =0
virtual void GetNumberValue(const struct FMaterialRenderContext &Context, FLinearColor &OutValue) const
Definition MaterialUniformExpressions.cpp:723
int32 UniformIndex
Definition MaterialUniformExpressions.h:78
virtual ~FMaterialUniformExpression()
Definition MaterialUniformExpressions.h:59
virtual class FMaterialUniformExpressionTexture * GetTextureUniformExpression()
Definition MaterialUniformExpressions.h:62
virtual bool IsIdentical(const FMaterialUniformExpression *OtherExpression) const
Definition MaterialUniformExpressions.h:66
virtual TArrayView< const FMaterialUniformExpression * > GetChildren() const
Definition MaterialUniformExpressions.h:72
Definition MaterialShared.h:2058
Definition NameTypes.h:617
Definition RefCounting.h:252
Definition ArrayView.h:139
UE_FORCEINLINE_HINT constexpr SizeType Num() const
Definition ArrayView.h:380
UE_FORCEINLINE_HINT constexpr bool IsValidIndex(SizeType Index) const
Definition ArrayView.h:359
Definition List.h:285
Definition UnrealString.h.inl:34
Definition RefCounting.h:454
Definition Preshader.h:98
FPreshaderData & WriteOpcode(EPreshaderOpcode Op)
Definition Preshader.h:148
FPreshaderData & Write(const T &Value)
Definition Preshader.h:130
Definition Object.h:95
Definition TextureCollection.h:47
EPreshaderOpcode
Definition Preshader.h:20
Definition Guid.h:109
Definition Color.h:48
Definition MaterialParameters.h:33
Definition MaterialShared.h:349
Definition MaterialParameters.h:96
FName GetName() const
Definition MaterialParameters.h:123
Definition Optional.h:131
Definition ShaderTypes.h:368
FLinearColor AsLinearColor() const
Definition ShaderValue.cpp:453
FType Type
Definition ShaderTypes.h:526