From 497b198da11592ff0a9e592b0e5046468ea15fcc Mon Sep 17 00:00:00 2001 From: Max Litruv Boonzaayer Date: Mon, 22 Sep 2025 18:06:07 +1000 Subject: [PATCH] color mask --- materials.json | 13 +++ snippets/color_mask.txt | 197 ++++++++++++++++++++++++++++++++++++++ thumbnails/color_mask.png | Bin 0 -> 9299 bytes 3 files changed, 210 insertions(+) create mode 100644 snippets/color_mask.txt create mode 100644 thumbnails/color_mask.png diff --git a/materials.json b/materials.json index 8ba7779..343fc10 100644 --- a/materials.json +++ b/materials.json @@ -35,6 +35,19 @@ "preview": "./thumbnails/radial_distortion.png", "snippet": "snippets/radial_distortion.txt", "description": "Applies a radial distortion effect to the screen UVs, simulating lens distortion." + }, + { + "author": "Litruv", + "name": "Color Mask", + + "categories": [ + "color", + "mask", + "fx" + ], + "preview": "./thumbnails/color_mask.png", + "snippet": "snippets/color_mask.txt", + "description": "Creates a mask based on if there is color in the input texture." } ] } diff --git a/snippets/color_mask.txt b/snippets/color_mask.txt new file mode 100644 index 0000000..302cfa2 --- /dev/null +++ b/snippets/color_mask.txt @@ -0,0 +1,197 @@ +Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_559" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_559'" + Begin Object Class=/Script/Engine.MaterialExpressionSaturate Name="MaterialExpressionSaturate_0" ExportPath="/Script/Engine.MaterialExpressionSaturate'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_559.MaterialExpressionSaturate_0'" + End Object + Begin Object Name="MaterialExpressionSaturate_0" ExportPath="/Script/Engine.MaterialExpressionSaturate'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_559.MaterialExpressionSaturate_0'" + Input=(Expression="/Script/Engine.MaterialExpressionMultiply'MaterialGraphNode_567.MaterialExpressionMultiply_8'") + MaterialExpressionEditorX=-496 + MaterialExpressionEditorY=896 + MaterialExpressionGuid=FBB0A9AE4D1EE6325D465CB02A9D0086 + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.m_distortionexample'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionSaturate'MaterialExpressionSaturate_0'" + NodePosX=-496 + NodePosY=896 + NodeGuid=EB2216814418F955F751F98213540066 + CustomProperties Pin (PinId=226D6B274805ABC60584238AA722CE5D,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_567 00A20306446E91E7050376A5D83CCD18,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=9DDC18E546213FB33BFBE9816EBB9551,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_26 22810FC149B7B90ACEE6538D0B2E00AF,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) +End Object +Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_558" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_558'" + Begin Object Class=/Script/Engine.MaterialExpressionSubtract Name="MaterialExpressionSubtract_1" ExportPath="/Script/Engine.MaterialExpressionSubtract'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_558.MaterialExpressionSubtract_1'" + End Object + Begin Object Name="MaterialExpressionSubtract_1" ExportPath="/Script/Engine.MaterialExpressionSubtract'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_558.MaterialExpressionSubtract_1'" + A=(Expression="/Script/Engine.MaterialExpressionMax'MaterialGraphNode_561.MaterialExpressionMax_5'") + B=(Expression="/Script/Engine.MaterialExpressionMin'MaterialGraphNode_566.MaterialExpressionMin_1'") + MaterialExpressionEditorX=-816 + MaterialExpressionEditorY=880 + MaterialExpressionGuid=B99165EB4AF3AD6373D12894DD01541C + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.m_distortionexample'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionSubtract'MaterialExpressionSubtract_1'" + NodePosX=-816 + NodePosY=880 + NodeGuid=F69175B34262D175394959A9A71AD353 + CustomProperties Pin (PinId=70AD225547E8D9B01C002296E68D50A7,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",LinkedTo=(MaterialGraphNode_561 DD9E98E844C0723F3852D39901CDAA3E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=40FFB0F74A2B8EBAD0B7C48AD1D2C27F,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",LinkedTo=(MaterialGraphNode_566 2FC68EF74D67CEED45A600981F2344FB,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D2D745BE438487CC3B64AC93E4BE1EED,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_567 8268F76C4B6E0832EEC1AAA65BA6A268,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) +End Object +Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_560" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_560'" + Begin Object Class=/Script/Engine.MaterialExpressionMax Name="MaterialExpressionMax_4" ExportPath="/Script/Engine.MaterialExpressionMax'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_560.MaterialExpressionMax_4'" + End Object + Begin Object Name="MaterialExpressionMax_4" ExportPath="/Script/Engine.MaterialExpressionMax'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_560.MaterialExpressionMax_4'" + A=(Expression="/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialGraphNode_564.MaterialExpressionMaterialFunctionCall_6'") + B=(Expression="/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialGraphNode_564.MaterialExpressionMaterialFunctionCall_6'",OutputIndex=1) + MaterialExpressionEditorX=-1040 + MaterialExpressionEditorY=848 + MaterialExpressionGuid=6FDEF52D43F1AFE81F402DB24EBC95E7 + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.m_distortionexample'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionMax'MaterialExpressionMax_4'" + NodePosX=-1040 + NodePosY=848 + NodeGuid=9DFBE19845114231E65804BD7D58C4A8 + CustomProperties Pin (PinId=535E9ED14C091B074C93E9A02F836942,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_564 85A3A5674898CF99D08D74BB77A119B6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=DA18FBEC459642AACE018AB10A7B1BE8,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",LinkedTo=(MaterialGraphNode_564 BBF9E0BE4E74BF9B03EFDCB64F629816,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=588FECE64E23E6854B0E87A46C381B42,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_561 0B8DC8CB4E05A7A16F3980BC1FA6019F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) +End Object +Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_561" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_561'" + Begin Object Class=/Script/Engine.MaterialExpressionMax Name="MaterialExpressionMax_5" ExportPath="/Script/Engine.MaterialExpressionMax'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_561.MaterialExpressionMax_5'" + End Object + Begin Object Name="MaterialExpressionMax_5" ExportPath="/Script/Engine.MaterialExpressionMax'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_561.MaterialExpressionMax_5'" + A=(Expression="/Script/Engine.MaterialExpressionMax'MaterialGraphNode_560.MaterialExpressionMax_4'") + B=(Expression="/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialGraphNode_564.MaterialExpressionMaterialFunctionCall_6'",OutputIndex=2) + MaterialExpressionEditorX=-928 + MaterialExpressionEditorY=848 + MaterialExpressionGuid=C2A7C5534CB5C104766AF2AD9FE3AA1A + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.m_distortionexample'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionMax'MaterialExpressionMax_5'" + NodePosX=-928 + NodePosY=848 + NodeGuid=C4A7B767416BEEBF6E0CA49E154C2902 + CustomProperties Pin (PinId=0B8DC8CB4E05A7A16F3980BC1FA6019F,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_560 588FECE64E23E6854B0E87A46C381B42,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=D4C848494DFBCF802741B993A4C57674,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",LinkedTo=(MaterialGraphNode_564 21B580684A17D8E09A2364A0F63EAB04,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=DD9E98E844C0723F3852D39901CDAA3E,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_558 70AD225547E8D9B01C002296E68D50A7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) +End Object +Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_564" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_564'" + Begin Object Class=/Script/Engine.MaterialExpressionMaterialFunctionCall Name="MaterialExpressionMaterialFunctionCall_6" ExportPath="/Script/Engine.MaterialExpressionMaterialFunctionCall'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_564.MaterialExpressionMaterialFunctionCall_6'" + End Object + Begin Object Name="MaterialExpressionMaterialFunctionCall_6" ExportPath="/Script/Engine.MaterialExpressionMaterialFunctionCall'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_564.MaterialExpressionMaterialFunctionCall_6'" + MaterialFunction="/Script/Engine.MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/BreakOutFloat3Components.BreakOutFloat3Components'" + FunctionInputs(0)=(ExpressionInputId=0FC5C56B4335798F20CB928CF1C87421,Input=(Expression="/Script/Engine.MaterialExpressionTextureSample'MaterialExpressionTextureSample_2'",InputName="Float3",Mask=1,MaskR=1,MaskG=1,MaskB=1)) + FunctionOutputs(0)=(ExpressionOutputId=6BC893C247FCFC567178CE944E213385,Output=(OutputName="R")) + FunctionOutputs(1)=(ExpressionOutputId=9720C81E449DF8E5514FCB8A80FD5FA3,Output=(OutputName="G")) + FunctionOutputs(2)=(ExpressionOutputId=17CE6E2C4E70841B48F3D1B73828AA03,Output=(OutputName="B")) + MaterialExpressionEditorX=-1360 + MaterialExpressionEditorY=848 + MaterialExpressionGuid=3D9EE06E4BEA78A1929B5D969218D1CA + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.m_distortionexample'" + Outputs(0)=(OutputName="R") + Outputs(1)=(OutputName="G") + Outputs(2)=(OutputName="B") + End Object + MaterialExpression="/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_6'" + NodePosX=-1360 + NodePosY=848 + NodeGuid=A2F0E5704426125C44FA528D4B8F9043 + CustomProperties Pin (PinId=C54987EA4B739446FD8FB7BBCCC7729E,PinName="Float3",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_25 D45606754F760D1A58C61F9934FFE210,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=85A3A5674898CF99D08D74BB77A119B6,PinName="R",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_560 535E9ED14C091B074C93E9A02F836942,MaterialGraphNode_565 81A914E74E97388CED8DD0B14E66A708,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=BBF9E0BE4E74BF9B03EFDCB64F629816,PinName="G",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_560 DA18FBEC459642AACE018AB10A7B1BE8,MaterialGraphNode_565 4223042E43EF79E60C0AF1ADB1829E6A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=21B580684A17D8E09A2364A0F63EAB04,PinName="B",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_561 D4C848494DFBCF802741B993A4C57674,MaterialGraphNode_566 77BA7E9E4A47117E5FBA8BBC38B0FAC4,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) +End Object +Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_565" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_565'" + Begin Object Class=/Script/Engine.MaterialExpressionMin Name="MaterialExpressionMin_0" ExportPath="/Script/Engine.MaterialExpressionMin'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_565.MaterialExpressionMin_0'" + End Object + Begin Object Name="MaterialExpressionMin_0" ExportPath="/Script/Engine.MaterialExpressionMin'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_565.MaterialExpressionMin_0'" + A=(Expression="/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialGraphNode_564.MaterialExpressionMaterialFunctionCall_6'") + B=(Expression="/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialGraphNode_564.MaterialExpressionMaterialFunctionCall_6'",OutputIndex=1) + MaterialExpressionEditorX=-1040 + MaterialExpressionEditorY=944 + MaterialExpressionGuid=1E100B8F454CEE54FEAED3B59E887D72 + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.m_distortionexample'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionMin'MaterialExpressionMin_0'" + NodePosX=-1040 + NodePosY=944 + NodeGuid=F097E34D4E6C713BC6E6FD98AB858998 + CustomProperties Pin (PinId=81A914E74E97388CED8DD0B14E66A708,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_564 85A3A5674898CF99D08D74BB77A119B6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=4223042E43EF79E60C0AF1ADB1829E6A,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",LinkedTo=(MaterialGraphNode_564 BBF9E0BE4E74BF9B03EFDCB64F629816,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=939A43AF4BF201FFC3ECC0B96AEEF4EC,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_566 83B827B74418EB1B8C433A8629942F17,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) +End Object +Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_566" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_566'" + Begin Object Class=/Script/Engine.MaterialExpressionMin Name="MaterialExpressionMin_1" ExportPath="/Script/Engine.MaterialExpressionMin'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_566.MaterialExpressionMin_1'" + End Object + Begin Object Name="MaterialExpressionMin_1" ExportPath="/Script/Engine.MaterialExpressionMin'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_566.MaterialExpressionMin_1'" + A=(Expression="/Script/Engine.MaterialExpressionMin'MaterialGraphNode_565.MaterialExpressionMin_0'") + B=(Expression="/Script/Engine.MaterialExpressionMaterialFunctionCall'MaterialGraphNode_564.MaterialExpressionMaterialFunctionCall_6'",OutputIndex=2) + MaterialExpressionEditorX=-928 + MaterialExpressionEditorY=944 + MaterialExpressionGuid=0F8116F24B394D32C2A5A9B3D7080847 + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.m_distortionexample'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionMin'MaterialExpressionMin_1'" + NodePosX=-928 + NodePosY=944 + NodeGuid=82F34A6F491C82C2E7F23F8323AF300F + CustomProperties Pin (PinId=83B827B74418EB1B8C433A8629942F17,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_565 939A43AF4BF201FFC3ECC0B96AEEF4EC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=77BA7E9E4A47117E5FBA8BBC38B0FAC4,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",LinkedTo=(MaterialGraphNode_564 21B580684A17D8E09A2364A0F63EAB04,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=2FC68EF74D67CEED45A600981F2344FB,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_558 40FFB0F74A2B8EBAD0B7C48AD1D2C27F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) +End Object +Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_567" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_567'" + Begin Object Class=/Script/Engine.MaterialExpressionMultiply Name="MaterialExpressionMultiply_8" ExportPath="/Script/Engine.MaterialExpressionMultiply'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_567.MaterialExpressionMultiply_8'" + End Object + Begin Object Name="MaterialExpressionMultiply_8" ExportPath="/Script/Engine.MaterialExpressionMultiply'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_567.MaterialExpressionMultiply_8'" + A=(Expression="/Script/Engine.MaterialExpressionSubtract'MaterialGraphNode_558.MaterialExpressionSubtract_1'") + B=(Expression="/Script/Engine.MaterialExpressionScalarParameter'MaterialGraphNode_568.MaterialExpressionScalarParameter_5'") + MaterialExpressionEditorX=-640 + MaterialExpressionEditorY=896 + MaterialExpressionGuid=F876983F48B2103C311500A85B20F24E + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.m_distortionexample'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionMultiply'MaterialExpressionMultiply_8'" + NodePosX=-640 + NodePosY=896 + NodeGuid=F3F303464EC0BD5C35D5B7905A26362E + CustomProperties Pin (PinId=8268F76C4B6E0832EEC1AAA65BA6A268,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_558 D2D745BE438487CC3B64AC93E4BE1EED,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=CDA23C424B6C79657A1B8BB08225E6BE,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",LinkedTo=(MaterialGraphNode_568 2AB0B51C490647EDA51DF18859A5F5C6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=00A20306446E91E7050376A5D83CCD18,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_559 226D6B274805ABC60584238AA722CE5D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) +End Object +Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_568" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_568'" + Begin Object Class=/Script/Engine.MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_5" ExportPath="/Script/Engine.MaterialExpressionScalarParameter'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_568.MaterialExpressionScalarParameter_5'" + End Object + Begin Object Name="MaterialExpressionScalarParameter_5" ExportPath="/Script/Engine.MaterialExpressionScalarParameter'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_568.MaterialExpressionScalarParameter_5'" + DefaultValue=100.000000 + ParameterName="Tint Sharpness" + ExpressionGUID=7EAE7DAD4771DAB4AE9E07A799F4BB07 + Group="Tint" + MaterialExpressionEditorX=-1056 + MaterialExpressionEditorY=1072 + MaterialExpressionGuid=169A71AD4DE4C6B56DE3B38A9D16DDF0 + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.m_distortionexample'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_5'" + NodePosX=-1056 + NodePosY=1072 + bCanRenameNode=True + NodeGuid=0C7B8A6742B274B1583F988D20DB3BEC + CustomProperties Pin (PinId=976A5C914E4CF99E970CFA83A8C265FD,PinName="Default Value",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="100.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=2AB0B51C490647EDA51DF18859A5F5C6,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_567 CDA23C424B6C79657A1B8BB08225E6BE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) +End Object +Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_26" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_26'" + Begin Object Class=/Script/Engine.MaterialExpressionRound Name="MaterialExpressionRound_0" ExportPath="/Script/Engine.MaterialExpressionRound'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_26.MaterialExpressionRound_0'" + End Object + Begin Object Name="MaterialExpressionRound_0" ExportPath="/Script/Engine.MaterialExpressionRound'/Engine/Transient.m_distortionexample:MaterialGraph_0.MaterialGraphNode_26.MaterialExpressionRound_0'" + Input=(Expression="/Script/Engine.MaterialExpressionSaturate'MaterialGraphNode_559.MaterialExpressionSaturate_0'") + MaterialExpressionEditorX=-368 + MaterialExpressionEditorY=896 + MaterialExpressionGuid=7E22F617489E72E9985D0C839AB2D3EE + Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.m_distortionexample'" + End Object + MaterialExpression="/Script/Engine.MaterialExpressionRound'MaterialExpressionRound_0'" + NodePosX=-368 + NodePosY=896 + ErrorType=1 + ErrorMsg="Missing Round input" + NodeGuid=F5FFE2CB47335A856E5CC29954051F27 + CustomProperties Pin (PinId=22810FC149B7B90ACEE6538D0B2E00AF,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_559 9DDC18E546213FB33BFBE9816EBB9551,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) + CustomProperties Pin (PinId=9579FDD14EA51BB7B5E092B65373EB8C,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Root_2 764CE104488296AB175019BF26CD907C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) +End Object diff --git a/thumbnails/color_mask.png b/thumbnails/color_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..f3489bb3e47d88f6bbeb41594776e330a3b361dd GIT binary patch literal 9299 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