Distance Field Edge Blending

Hi!

I’ve created a material function that blends the edge of the material. This is great for smoothing out the transition between rocks and the ground.
It only uses dithering so it has great performance.

Screenshots before/after (Remember to view in fullscreen)

How to use

  1. Create a new Material Function.
  2. Copy the code below and past it in the editor. Connect the If-output to the Output Result.
  3. Open the material of the mesh you want to blend.
  4. Add a MaterialFunctionCall and select the function you just created.
  5. Connect the output to PixelDepthOffset of that material.
  6. Make sure your mesh has Affect Distance Field Lighting turned off.

PS: Remember to set Generate Distance Fields in project settings to true.


Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9348"
   Begin Object Class=MaterialExpressionDistanceToNearestSurface Name="MaterialExpressionDistanceToNearestSurface_22"
   End Object
   Begin Object Name="MaterialExpressionDistanceToNearestSurface_22"
      Position=(Expression=MaterialExpressionWorldPosition'MaterialGraphNode_9349.MaterialExpressionWorldPosition_28')
      MaterialExpressionEditorX=-160
      MaterialExpressionGuid=1B83AE90480637C0BEEC899987A15952
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionDistanceToNearestSurface'MaterialExpressionDistanceToNearestSurface_22'
   NodePosX=-160
   NodeGuid=D8A03B4743D5BA7327909DAC6B95012B
   CustomProperties Pin (PinId=A4A9DBA34DD8C933E3551BACAABC617F,PinName="Position",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9349 F346F8E84B151FCDC5A4E38349A658A7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=F08B9892417AFD30BFE9E29634300405,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9350 3DCDFE284AD64B9FDDA093B20FA060DA,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9349"
   Begin Object Class=MaterialExpressionWorldPosition Name="MaterialExpressionWorldPosition_28"
   End Object
   Begin Object Name="MaterialExpressionWorldPosition_28"
      MaterialExpressionEditorX=-368
      MaterialExpressionGuid=19EA9C574EA60B9112CDCBB01BBAD657
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionWorldPosition'MaterialExpressionWorldPosition_28'
   NodePosX=-368
   NodeGuid=7E4A660E44EF5F5694D932AFED823F19
   CustomProperties Pin (PinId=F346F8E84B151FCDC5A4E38349A658A7,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9348 A4A9DBA34DD8C933E3551BACAABC617F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9350"
   Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_33"
   End Object
   Begin Object Name="MaterialExpressionDivide_33"
      A=(Expression=MaterialExpressionDistanceToNearestSurface'MaterialGraphNode_9348.MaterialExpressionDistanceToNearestSurface_22')
      B=(Expression=MaterialExpressionMultiply'MaterialGraphNode_9355.MaterialExpressionMultiply_137')
      ConstB=10.000000
      MaterialExpressionEditorX=80
      MaterialExpressionGuid=D3CE095845E44795DB709B9281CDBC32
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionDivide'MaterialExpressionDivide_33'
   NodePosX=80
   NodeGuid=BDC184F843E08CB8809445A173B90ACB
   CustomProperties Pin (PinId=3DCDFE284AD64B9FDDA093B20FA060DA,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9348 F08B9892417AFD30BFE9E29634300405,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=FD6646D946C9AE488B09119CA7168416,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9355 709FC78A40618CD0F927058038AA1F1B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=9256C34744AB0075F38088BE6D96BF42,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9363 293CCB8C47C41CBED6E01BBF2B96A311,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9352"
   Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_136"
   End Object
   Begin Object Name="MaterialExpressionMultiply_136"
      B=(Expression=MaterialExpressionTextureCoordinate'MaterialGraphNode_9354.MaterialExpressionTextureCoordinate_69')
      ConstA=5.000000
      MaterialExpressionEditorX=-400
      MaterialExpressionEditorY=128
      MaterialExpressionGuid=2D86E35D48E6FC66D5931E9A8E18427F
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionMultiply'MaterialExpressionMultiply_136'
   NodePosX=-400
   NodePosY=128
   NodeGuid=E246352C49091E180248CEBAB81D5701
   CustomProperties Pin (PinId=C623E5DF4AB1762D6D5196B862E74676,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=28525B4D435823CF2FB0A4A3E728E741,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9354 62667144434D90F401BDF08D7FD76127,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=363091E24D9BC9F0E21831A7CD1FA9F7,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9353 938D680B4D233F0737F3D8A8D30ED05E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9353"
   Begin Object Class=MaterialExpressionTextureSample Name="MaterialExpressionTextureSample_91"
   End Object
   Begin Object Name="MaterialExpressionTextureSample_91"
      Coordinates=(Expression=MaterialExpressionMultiply'MaterialGraphNode_9352.MaterialExpressionMultiply_136')
      Texture=Texture2D'/Game/Textures/T_Perlin_Noise_M.T_Perlin_Noise_M'
      SamplerType=SAMPLERTYPE_Masks
      MaterialExpressionEditorX=-256
      MaterialExpressionEditorY=128
      MaterialExpressionGuid=195E39064E0ACD675295FA9EF78B88EB
      Material=Material'/Engine/Transient.Material_281'
      bCollapsed=True
   End Object
   MaterialExpression=MaterialExpressionTextureSample'MaterialExpressionTextureSample_91'
   NodePosX=-256
   NodePosY=128
   NodeGuid=1487BA5B45F79C28DF637F8D7B512AA7
   CustomProperties Pin (PinId=938D680B4D233F0737F3D8A8D30ED05E,PinName="UVs",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9352 363091E24D9BC9F0E21831A7CD1FA9F7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=73957E974E093F37830D5F8FC3C14566,PinName="Tex",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=5B4B73934FBC3D14D5E561BE52A6C463,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=54805AD94EBD7944C7CEE3938940F7B6,PinName="Output2",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9355 B5E60F644FED1BCE780DB7A056EBBC4B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=119F5545445C86AB8483CEBA0E6E52E5,PinName="Output3",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=FD020E8F4925F39C85C800B67C5E4903,PinName="Output4",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=454A89B14BDC08F4BA898AAD69001197,PinName="Output5",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="alpha",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9354"
   Begin Object Class=MaterialExpressionTextureCoordinate Name="MaterialExpressionTextureCoordinate_69"
   End Object
   Begin Object Name="MaterialExpressionTextureCoordinate_69"
      MaterialExpressionEditorX=-544
      MaterialExpressionEditorY=128
      MaterialExpressionGuid=5F69A9C74DC888AF17ADE38FE44B6450
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionTextureCoordinate'MaterialExpressionTextureCoordinate_69'
   NodePosX=-544
   NodePosY=128
   NodeGuid=32C04E3B49D8C23AB1E9268B86E6F021
   CustomProperties Pin (PinId=62667144434D90F401BDF08D7FD76127,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9352 28525B4D435823CF2FB0A4A3E728E741,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9355"
   Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_137"
   End Object
   Begin Object Name="MaterialExpressionMultiply_137"
      A=(Expression=MaterialExpressionTextureSample'MaterialGraphNode_9353.MaterialExpressionTextureSample_91',OutputIndex=1,Mask=1,MaskR=1)
      B=(Expression=MaterialExpressionAdd'MaterialGraphNode_9383.MaterialExpressionAdd_22')
      ConstB=20.000000
      MaterialExpressionEditorX=-80
      MaterialExpressionEditorY=128
      MaterialExpressionGuid=FFD45559453CF04EBE4E44984314B5C2
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionMultiply'MaterialExpressionMultiply_137'
   NodePosX=-80
   NodePosY=128
   NodeGuid=18A7925641FF01B730709282A17EE6F7
   CustomProperties Pin (PinId=B5E60F644FED1BCE780DB7A056EBBC4B,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9353 54805AD94EBD7944C7CEE3938940F7B6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=A92A497040A695F54C67E5B5E735E39A,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9383 6BEBB35841CDF90B16B6D3A5E60320CA,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=709FC78A40618CD0F927058038AA1F1B,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9350 FD6646D946C9AE488B09119CA7168416,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9356"
   Begin Object Class=MaterialExpressionMaterialFunctionCall Name="MaterialExpressionMaterialFunctionCall_78"
   End Object
   Begin Object Name="MaterialExpressionMaterialFunctionCall_78"
      MaterialFunction=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/DitherTemporalAA.DitherTemporalAA'
      FunctionInputs(0)=(ExpressionInputId=982BCAE7401F814CDC0AE2955DEE46F3,Input=(Expression=MaterialExpressionOneMinus'MaterialGraphNode_9363.MaterialExpressionOneMinus_23',InputName="Alpha Threshold"))
      FunctionInputs(1)=(ExpressionInputId=E8A932AF4299B0D6C16EDB8B1E912796,Input=(OutputIndex=-1,InputName="Random"))
      FunctionOutputs(0)=(ExpressionOutputId=9BC32B084665F3D2D59A90AA45CA8A9F,Output=(OutputName="Result"))
      MaterialExpressionEditorX=320
      MaterialExpressionEditorY=128
      MaterialExpressionGuid=73AF51A543328D04DDEB9D89126F7BEF
      Material=Material'/Engine/Transient.Material_281'
      Outputs(0)=(OutputName="Result")
   End Object
   MaterialExpression=MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_78'
   NodePosX=320
   NodePosY=128
   NodeGuid=1F7C9971494A8F6716ABEE9281A470D0
   CustomProperties Pin (PinId=3F575D3F4EFCF923382A5FA8257F4CC1,PinName="Alpha Threshold (S)",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9363 57A9E6164BA218F8F87F4794579B990D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=177CC4D04BB7A2F25EADF4BC81A5A385,PinName="Random (S)",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=70A98AFD4326E15EEDCFF8A5F7C723B0,PinName="Result",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9358 ED44176343AC2D6589748AAC097A2E28,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9358"
   Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_138"
   End Object
   Begin Object Name="MaterialExpressionMultiply_138"
      A=(Expression=MaterialExpressionMaterialFunctionCall'MaterialGraphNode_9356.MaterialExpressionMaterialFunctionCall_78')
      B=(Expression=MaterialExpressionAdd'MaterialGraphNode_9383.MaterialExpressionAdd_22')
      MaterialExpressionEditorX=576
      MaterialExpressionEditorY=128
      MaterialExpressionGuid=CF63827E4784301F560F1B974CDE353F
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionMultiply'MaterialExpressionMultiply_138'
   NodePosX=576
   NodePosY=128
   NodeGuid=1F8C8EA34F48B9F48571BBAA2D28B051
   CustomProperties Pin (PinId=ED44176343AC2D6589748AAC097A2E28,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9356 70A98AFD4326E15EEDCFF8A5F7C723B0,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=26CD05914DA3B2EF0DE78C9583E76619,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9383 6BEBB35841CDF90B16B6D3A5E60320CA,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=37BF2D87431087B540B7639454119EA6,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9347 7A764DB549AC7F358F29859123E1E519,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9363"
   Begin Object Class=MaterialExpressionOneMinus Name="MaterialExpressionOneMinus_23"
   End Object
   Begin Object Name="MaterialExpressionOneMinus_23"
      Input=(Expression=MaterialExpressionDivide'MaterialGraphNode_9350.MaterialExpressionDivide_33')
      MaterialExpressionEditorX=208
      MaterialExpressionEditorY=128
      MaterialExpressionGuid=873CDD5B4A294953A3DB26A853DD8E2F
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionOneMinus'MaterialExpressionOneMinus_23'
   NodePosX=208
   NodePosY=128
   NodeGuid=366E64514F608CB40EDC1DA850246C93
   CustomProperties Pin (PinId=293CCB8C47C41CBED6E01BBF2B96A311,PinName="Input",PinFriendlyName=" ",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9350 9256C34744AB0075F38088BE6D96BF42,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=57A9E6164BA218F8F87F4794579B990D,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9356 3F575D3F4EFCF923382A5FA8257F4CC1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9364"
   Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_26"
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_26"
      DefaultValue=5.000000
      ParameterName="Distance"
      ExpressionGUID=879404BF4543349ABD8C4F8DF1D38E2E
      Group="Edge Blending"
      MaterialExpressionEditorX=-384
      MaterialExpressionEditorY=384
      MaterialExpressionGuid=498EBB1D49996A7F0F2B03A1A8308A8A
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_26'
   NodePosX=-384
   NodePosY=384
   bCanRenameNode=True
   NodeGuid=AD9C2B2441783D58F6602C99012CE0DA
   CustomProperties Pin (PinId=C15F8872483D938C81DA27AEADB9072D,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9381 7480ADE84F1F5319F31F6A836F833DD4,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9368"
   Begin Object Class=MaterialExpressionSphereMask Name="MaterialExpressionSphereMask_1"
   End Object
   Begin Object Name="MaterialExpressionSphereMask_1"
      A=(Expression=MaterialExpressionPixelDepth'MaterialGraphNode_9370.MaterialExpressionPixelDepth_13',Mask=1,MaskR=1)
      B=(Expression=MaterialExpressionConstant'MaterialGraphNode_9371.MaterialExpressionConstant_128')
      Radius=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_9380.MaterialExpressionScalarParameter_28')
      AttenuationRadius=250.000000
      HardnessPercent=0.000000
      MaterialExpressionEditorX=16
      MaterialExpressionEditorY=608
      MaterialExpressionGuid=7030266A4F26FAF42E17FAA0C055A32B
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionSphereMask'MaterialExpressionSphereMask_1'
   NodePosX=16
   NodePosY=608
   NodeGuid=0055774641C94910CE973F91E273C60A
   CustomProperties Pin (PinId=F8CC2F1D49107AD88B0A1E920BAE3993,PinName="A",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9370 E166A61A4A890CD1CF1A908D6CB72393,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=FBFB2FDB4F602AC0D20358A5C4CB6DE7,PinName="B",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9371 1C96C9DB42D391F36BB489AD9E30B9D8,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=2D3D1D934D8EA595850449BE25FB5F3E,PinName="Radius",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9380 437766CC4C6A3169D8B647A37401892D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=376483DB4B109F53F5C5379120CC9CC2,PinName="Hardness",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=2E03147C4E16116DDF56F8AB2405698F,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9372 B3E080F246345F3CD7848AAA5B4AA935,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9370"
   Begin Object Class=MaterialExpressionPixelDepth Name="MaterialExpressionPixelDepth_13"
   End Object
   Begin Object Name="MaterialExpressionPixelDepth_13"
      MaterialExpressionEditorX=-128
      MaterialExpressionEditorY=608
      MaterialExpressionGuid=D42D8C6E48C273A7646AC4834704971C
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionPixelDepth'MaterialExpressionPixelDepth_13'
   NodePosX=-128
   NodePosY=608
   NodeGuid=BBC582684DDE64E381C21FABFBAFA51A
   CustomProperties Pin (PinId=E166A61A4A890CD1CF1A908D6CB72393,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9368 F8CC2F1D49107AD88B0A1E920BAE3993,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9371"
   Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_128"
   End Object
   Begin Object Name="MaterialExpressionConstant_128"
      MaterialExpressionEditorX=-128
      MaterialExpressionEditorY=720
      MaterialExpressionGuid=569625EE4E706E013DA0A7A389AE4D88
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_128'
   NodePosX=-128
   NodePosY=720
   NodeGuid=E36ECFD943C9DC28A3393995029159F6
   CustomProperties Pin (PinId=1C96C9DB42D391F36BB489AD9E30B9D8,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9368 FBFB2FDB4F602AC0D20358A5C4CB6DE7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9372"
   Begin Object Class=MaterialExpressionOneMinus Name="MaterialExpressionOneMinus_24"
   End Object
   Begin Object Name="MaterialExpressionOneMinus_24"
      Input=(Expression=MaterialExpressionSphereMask'MaterialGraphNode_9368.MaterialExpressionSphereMask_1')
      MaterialExpressionEditorX=176
      MaterialExpressionEditorY=608
      MaterialExpressionGuid=D02009C2404B9ADFBD3FBE8F1AAA24CB
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionOneMinus'MaterialExpressionOneMinus_24'
   NodePosX=176
   NodePosY=608
   NodeGuid=D6835756465FBFDA9A0E868DA61452EB
   CustomProperties Pin (PinId=B3E080F246345F3CD7848AAA5B4AA935,PinName="Input",PinFriendlyName=" ",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9368 2E03147C4E16116DDF56F8AB2405698F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=C371A7ED41600BCE5007028ED05D69B7,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9382 3A65AE1843FBC5E811B21D8462962029,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9379"
   Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_27"
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_27"
      DefaultValue=2.000000
      ParameterName="Min Distance"
      ExpressionGUID=792D01A14CADCF9F68C1A78D23ADA0D4
      Group="Edge Blending"
      MaterialExpressionEditorX=-384
      MaterialExpressionEditorY=480
      MaterialExpressionGuid=61D5F18B415DAEE487FDBF8CDB2583A4
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_27'
   NodePosX=-384
   NodePosY=480
   bCanRenameNode=True
   NodeGuid=21FE964A498BD11218247EB29B97D6D2
   CustomProperties Pin (PinId=171EA1C546A67118B28AD7A213C1F75E,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9381 78BD6CC84E1E2B33E6B75A845B28D8F2,MaterialGraphNode_9383 CCB995E643EA7EC1B5F5718C7BBA00DB,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9380"
   Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_28"
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_28"
      DefaultValue=500.000000
      ParameterName="Fade Start Distance"
      ExpressionGUID=C3D6001B42AF564EEF9542BF3553C686
      Group="Edge Blending"
      MaterialExpressionEditorX=-384
      MaterialExpressionEditorY=608
      MaterialExpressionGuid=29C6884B4A0491594EB376BD87CE0BC2
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_28'
   NodePosX=-384
   NodePosY=608
   bCanRenameNode=True
   NodeGuid=B09CE3E04DD6334C5D826C96C4BDE8C5
   CustomProperties Pin (PinId=437766CC4C6A3169D8B647A37401892D,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9368 2D3D1D934D8EA595850449BE25FB5F3E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9381"
   Begin Object Class=MaterialExpressionSubtract Name="MaterialExpressionSubtract_15"
   End Object
   Begin Object Name="MaterialExpressionSubtract_15"
      A=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_9364.MaterialExpressionScalarParameter_26')
      B=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_9379.MaterialExpressionScalarParameter_27')
      MaterialExpressionEditorX=-128
      MaterialExpressionEditorY=384
      MaterialExpressionGuid=D36839EF4EB195A29860BC88187925D1
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionSubtract'MaterialExpressionSubtract_15'
   NodePosX=-128
   NodePosY=384
   NodeGuid=1614F9704E6EEFEB6B0EF09976D185E7
   CustomProperties Pin (PinId=7480ADE84F1F5319F31F6A836F833DD4,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9364 C15F8872483D938C81DA27AEADB9072D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=78BD6CC84E1E2B33E6B75A845B28D8F2,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9379 171EA1C546A67118B28AD7A213C1F75E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=787904E242054E4EB7C29BB8100EE8CD,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9382 32FE635849F1102725EE2F8AA055F954,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9382"
   Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_139"
   End Object
   Begin Object Name="MaterialExpressionMultiply_139"
      A=(Expression=MaterialExpressionSubtract'MaterialGraphNode_9381.MaterialExpressionSubtract_15')
      B=(Expression=MaterialExpressionOneMinus'MaterialGraphNode_9372.MaterialExpressionOneMinus_24')
      MaterialExpressionEditorY=384
      MaterialExpressionGuid=14836F244127CAD11E8C56804E4DA460
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionMultiply'MaterialExpressionMultiply_139'
   NodePosY=384
   NodeGuid=FB5525204A53B6B42E3997917735004B
   CustomProperties Pin (PinId=32FE635849F1102725EE2F8AA055F954,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9381 787904E242054E4EB7C29BB8100EE8CD,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=3A65AE1843FBC5E811B21D8462962029,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9372 C371A7ED41600BCE5007028ED05D69B7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=E6D82C4A46A7565A395EFD80B480D44F,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9383 A632704F483022BEF1487E921A291EB2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9383"
   Begin Object Class=MaterialExpressionAdd Name="MaterialExpressionAdd_22"
   End Object
   Begin Object Name="MaterialExpressionAdd_22"
      A=(Expression=MaterialExpressionMultiply'MaterialGraphNode_9382.MaterialExpressionMultiply_139')
      B=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_9379.MaterialExpressionScalarParameter_27')
      MaterialExpressionEditorX=128
      MaterialExpressionEditorY=384
      MaterialExpressionGuid=B67B2BAD487E173C2E1F719E58D60615
      Material=Material'/Engine/Transient.Material_281'
   End Object
   MaterialExpression=MaterialExpressionAdd'MaterialExpressionAdd_22'
   NodePosX=128
   NodePosY=384
   NodeGuid=A8867E9A427CEF5CDA072E8BA5E099A6
   CustomProperties Pin (PinId=A632704F483022BEF1487E921A291EB2,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9382 E6D82C4A46A7565A395EFD80B480D44F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=CCB995E643EA7EC1B5F5718C7BBA00DB,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9379 171EA1C546A67118B28AD7A213C1F75E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
   CustomProperties Pin (PinId=6BEBB35841CDF90B16B6D3A5E60320CA,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9355 A92A497040A695F54C67E5B5E735E39A,MaterialGraphNode_9358 26CD05914DA3B2EF0DE78C9583E76619,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
End Object


Thank you! What did you use for the texture input?

Locks very nice, thx!
Do you think it’s possible to remove the black artifacts or reduce their size?
I’ll play arround with it and post my results.

There is no texture input, just a dithering mask.

What black artifacts? Do you have any screenshots?

Thank you a lot for sharing this.

Is there a way to make a workaround without deactivating the Distance Field Lighting?

Here is another good example of the effect. Distance Field Edge Blending - Unreal Engine - Imgsli

ON/OFF

And here is the difference between the two.

DistanceToNearestSurface doesn’t differentiate between itself and other objects. So if you don’t turn it off for that object you get artifacts/blending where the object occludes itself.
So I don’t think that is possible.

Makes sense.

This is a bit expensive for a dynamic setup anyway… So i guess it’s even normal that you deactivate the DFL.

Thanks a lot for sharing it, Hallatore.

Very nice share! Thank you!

Updated the material to adjust based on camera distance, and tweaked some of the logic. I really like the result! :smiley:


Just wondering -

Whats the loss? FPS/MS with/without?

Can this be done in version 4.11? I can’t seem to get this to work. I’ve followed every step exactly as put. Could you post a screenshot of your material editor?

I get 90/93 FPS with/without the function.

I’m not sure. I’m on 4.15, haven’t tested earlier versions.
The MF screenshot is further up. And in the rock material I just call this MF and link it with PixelDepthOffset.

Do you see anything if you click View / Visualize / Mesh DistanceFields? I think there has to be at least one object there. I had some weird behavior if the scene had no objects in the distance fields.

I don’t see anything when I visualize Mesh DistanceFields. Could that be the problem? I already have the box checked next to generate distance fields in my project settings.

Figured out my problem! :slight_smile: I needed to increase the distance in my MF and change the texture output to a noisy image I’ve made it PS.

http://i1104.photobucket.com/albums/h329/SWolf89/ScreenShot00005_zpssoad9i2j.png

Hi! Forget about my post, works very well!
Thx for sharing!

Concerning the performance, it should be possible to add a material without PDO and/or reduced distance field resolutions for lower LODs.
Unfortunately I don’t have much time this week to test it, maybe by end of the week. Just an idea.

I’m wondering if it’s theoretically possible for DistanceToNearestSurface to exclude the distance field of itself. Or if the whole distance field is one big volume so you can’t differentiate between.
Would be nice to get this feature to work regardless of the object itself has distance fields turned on or off.

Maybe @RyanB or @DanielW knows?

There’s only one global distance field which you access with DistanceToNearestSurface and it costs a lot to build and maintain. That said we could implement something like distance field channels as a project setting (so you only pay the cost when enabled).

Putting the landscape in a channel would open a lot of nice little possibilities.
Right now the biggest problem is that DistanceToNearestSurface also checks against itself, so you get artifacts with the edge blending method above.

can this be used with flat meshes, (roads, airport runways, …etc ) ?