Announcement

Collapse
No announcement yet.

Sharper image without the edge artifacts

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Sharper image without the edge artifacts

    I decided to see if I could get somewhat the same effect as my post process TAA Sharpen code with a Post Process Material.
    I'm quite pleased with the result, so here is the code. Should work regardless of UE4 version.

    What it does (Zoom in to see the details)
    How to use
    • Create a new material
    • Set Material Domain to Post Process, and Blendable Location to Before Translucency.
    • Paste the code below and link the output to Emissive Color.
    • Add the material to your Post Process Materials under Rendering Features.
    • Adjust SharpenWeight in the material to desired strength. Default is 0.5
    • Adjust DistanceFadeOff in the material to desired fade off. Default is 5000 (50 meters).


    Code:
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Root Name="MaterialGraphNode_Root_0"
       Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       NodePosX=512
       NodePosY=-384
       NodeGuid=2C1D5A8142D963D33A3480942FB9C6A8
       CustomProperties Pin (PinId=AE27B9AC43466833BA812EB9D92A3F8E,PinName="Base Color",PinType.PinCategory="materialinput",PinType.PinSubCategory="5",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=E9B3F48A4DADAF957E1819BF00226854,PinName="Metallic",PinType.PinCategory="materialinput",PinType.PinSubCategory="6",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=6D883031425ACB5842CCA7BF563FA7DD,PinName="Specular",PinType.PinCategory="materialinput",PinType.PinSubCategory="7",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=1A0BBA3D4C8BBDF26A1365BA4AF7F918,PinName="Roughness",PinType.PinCategory="materialinput",PinType.PinSubCategory="8",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=06D8EA764F834D36938510B71A6AB152,PinName="Emissive Color",PinType.PinCategory="materialinput",PinType.PinSubCategory="0",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 8B6E8C834B57797AB8F68AB2B2211CC5,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=55A3579B410C63D0EEA92985A4B229CB,PinName="Opacity",PinType.PinCategory="materialinput",PinType.PinSubCategory="1",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=255056D64ECC496FCE796BB53AAC8F3F,PinName="Opacity Mask",PinType.PinCategory="materialinput",PinType.PinSubCategory="2",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=DE354C584A28C0FE0840A9A50CDFE46C,PinName="Normal",PinType.PinCategory="materialinput",PinType.PinSubCategory="9",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=76C3D94F434CC3E02A432CAB89A939DE,PinName="World Position Offset",PinType.PinCategory="materialinput",PinType.PinSubCategory="10",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=BBA7C5A5498BE2DAA57257B06F6AC279,PinName="World Displacement",PinType.PinCategory="materialinput",PinType.PinSubCategory="11",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=D7D655F04E5B1143F6435B8029336637,PinName="Tessellation Multiplier",PinType.PinCategory="materialinput",PinType.PinSubCategory="12",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=4936738548A692E142D983B3BEC9F89A,PinName="Subsurface Color",PinType.PinCategory="materialinput",PinType.PinSubCategory="13",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=2A630EA44C32A56CD9BE35993EC0B1E4,PinName="Custom Data 0",PinType.PinCategory="materialinput",PinType.PinSubCategory="14",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=973F9A4347D82AECAD9C38BC0B181A22,PinName="Custom Data 1",PinType.PinCategory="materialinput",PinType.PinSubCategory="15",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=E8F8B793451AF59125C00B8CDDA1CEFE,PinName="Ambient Occlusion",PinType.PinCategory="materialinput",PinType.PinSubCategory="16",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=C88F28C4412E0CA05CC0C98F67CA2983,PinName="Refraction",PinType.PinCategory="materialinput",PinType.PinSubCategory="17",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=6453A69447C3B82C9DA052AEEF0C55CE,PinName="Customized UV0",PinType.PinCategory="materialinput",PinType.PinSubCategory="18",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=1E4C24E64CB186187520AFB6EB76AA10,PinName="Customized UV1",PinType.PinCategory="materialinput",PinType.PinSubCategory="19",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=BC4F170941AB17A0E87D60B06C777566,PinName="Customized UV2",PinType.PinCategory="materialinput",PinType.PinSubCategory="20",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=9B68F0734FC17A9FC568EEA52F82D728,PinName="Customized UV3",PinType.PinCategory="materialinput",PinType.PinSubCategory="21",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=AE5211E040A42F358F200E89077C19CF,PinName="Customized UV4",PinType.PinCategory="materialinput",PinType.PinSubCategory="22",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=1B53F9F344AF61258A0398900A2843AD,PinName="Customized UV5",PinType.PinCategory="materialinput",PinType.PinSubCategory="23",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=936AEBDC4857E466F3CB31AE9EFD06FE,PinName="Customized UV6",PinType.PinCategory="materialinput",PinType.PinSubCategory="24",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=E6945447465184E48164F19549FB0D66,PinName="Customized UV7",PinType.PinCategory="materialinput",PinType.PinSubCategory="25",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=1A5BF8A245B0C3DA7D4B0B89C44A7F97,PinName="Pixel Depth Offset",PinType.PinCategory="materialinput",PinType.PinSubCategory="26",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=8ABD3859442795BED6C4CD986EEC2D28,PinName="Material Attributes",PinType.PinCategory="materialinput",PinType.PinSubCategory="27",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_0"
       Begin Object Class=/Script/Engine.MaterialExpressionCustom Name="MaterialExpressionCustom_0"
       End Object
       Begin Object Name="MaterialExpressionCustom_0"
          Code="float3 CenterColor =  Color;\r\n\r\nhalf3 C1 = SceneTextureLookup(UV + float2(-1, 0) * TexelScale, 0, false).rgb;\r\nhalf3 C2 = SceneTextureLookup(UV + float2(0, -1) * TexelScale, 0, false).rgb;\r\nhalf3 C3 = SceneTextureLookup(UV + float2(1, 0) * TexelScale, 0, false).rgb;\r\nhalf3 C4 = SceneTextureLookup(UV + float2(0, 1) * TexelScale, 0, false).rgb;\r\n\r\nhalf A0 = Luminance(CenterColor);\r\nhalf4 LuminanceNeightbors = half4(Luminance(C1), Luminance(C2), Luminance(C3), Luminance(C4));\r\nfloat4 A0LuminanceNeightbors = abs(A0 - LuminanceNeightbors);\r\nhalf HDREdge = max(max(A0LuminanceNeightbors.r, A0LuminanceNeightbors.g), max(A0LuminanceNeightbors.b, A0LuminanceNeightbors.a));\r\nhalf EdgeMask = saturate(1.0f - HDREdge);\r\nfloat LerpFactor = -EdgeMask * SharpenWeight;\r\nhalf3 DeltaColor = (C1 + C2 + C3 + C4) - CenterColor * 4;\r\nCenterColor.rgb += DeltaColor * LerpFactor;\r\n\r\nreturn CenterColor.rgb;"
          Description="Sharpen"
          Inputs(0)=(InputName="UV",Input=(Expression=MaterialExpressionCustom'"MaterialGraphNode_4.MaterialExpressionCustom_3"'))
          Inputs(1)=(InputName="Color",Input=(Expression=MaterialExpressionSceneTexture'"MaterialGraphNode_2.MaterialExpressionSceneTexture_0"',Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=1))
          Inputs(2)=(InputName="TexelScale",Input=(Expression=MaterialExpressionCustom'"MaterialGraphNode_10.MaterialExpressionCustom_17"'))
          Inputs(3)=(InputName="SharpenWeight",Input=(Expression=MaterialExpressionMultiply'"MaterialGraphNode_15.MaterialExpressionMultiply_2"'))
          MaterialExpressionEditorX=256
          MaterialExpressionEditorY=-384
          MaterialExpressionGuid=210EEB4F41C620C4310A67981D9E4E41
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionCustom'"MaterialExpressionCustom_0"'
       NodePosX=256
       NodePosY=-384
       ErrorType=1
       ErrorMsg="Custom material Sharpen missing input 4 (SharpenWeight)"
       NodeGuid=451FBBBE4BF078DD2FC07E8A47EE7E06
       CustomProperties Pin (PinId=0ED8D9EE4CFBF0FF9EC919AF8F53574A,PinName="UV",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_4 D5EA8BC84EF2FFC272A3A482723F6643,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=24F15B9A441D8BDFD2A7BFB0051DF98A,PinName="Color",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_2 123D3B3B40D8727C5EC37A88F087A5BF,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=88ACE3C54B852D16F9A1559353353142,PinName="TexelScale",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_10 D7A2D63E4EF471D213740DAD687515BC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=32DB99F441D3E046BB927FAE33242711,PinName="SharpenWeight",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_15 3ACF13D6487AB908CDA74B857C288266,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=8B6E8C834B57797AB8F68AB2B2211CC5,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_Root_0 06D8EA764F834D36938510B71A6AB152,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_1"
       Begin Object Class=/Script/Engine.MaterialExpressionMultiply Name="MaterialExpressionMultiply_1"
       End Object
       Begin Object Name="MaterialExpressionMultiply_1"
          A=(Expression=MaterialExpressionMultiply'"MaterialGraphNode_7.MaterialExpressionMultiply_0"')
          B=(Expression=MaterialExpressionScalarParameter'"MaterialGraphNode_8.MaterialExpressionScalarParameter_3"')
          MaterialExpressionEditorX=-224
          MaterialExpressionEditorY=-256
          MaterialExpressionGuid=496ED3774D80B9675B16C184580C9CE5
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionMultiply'"MaterialExpressionMultiply_1"'
       NodePosX=-224
       NodePosY=-256
       NodeGuid=5B58FCCB4B125B3C0A0341B8CAD9CE5A
       CustomProperties Pin (PinId=F3A37045489DB5AB4CA43983F6E99EC6,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_7 7C5B154C44AEB8A9599E2BA79F830E22,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=5ED8501E43F8E1DEB97D4E8D6A9140DD,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_8 8A9E5D274A8592255473BC878CBCEAD2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=3A87A9AC45281993C761B8ADD8D461AC,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_15 60398C164E2F92146661DF8E6CB24D0C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_2"
       Begin Object Class=/Script/Engine.MaterialExpressionSceneTexture Name="MaterialExpressionSceneTexture_0"
       End Object
       Begin Object Name="MaterialExpressionSceneTexture_0"
          SceneTextureId=PPI_PostProcessInput0
          MaterialExpressionEditorX=-1314
          MaterialExpressionEditorY=-38
          MaterialExpressionGuid=2683E4664DE80A68DDCABEBA11B373AD
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionSceneTexture'"MaterialExpressionSceneTexture_0"'
       NodePosX=-1314
       NodePosY=-38
       NodeGuid=4759F8554C21E3CD571FE5AA5ECF85AC
       CustomProperties Pin (PinId=4F9A2D054043514D1C57949DB86EDAB5,PinName="UVs",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=123D3B3B40D8727C5EC37A88F087A5BF,PinName="Color",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 24F15B9A441D8BDFD2A7BFB0051DF98A,MaterialGraphNode_6 16C8FD894D0AC54AF78D12A3A2B996A1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=139EA53A43DDC98C164C51B8F66E59E1,PinName="Size",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=A248B6FC4E6F7D310FB2D0AC8970CC5B,PinName="InvSize",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_3"
       Begin Object Class=/Script/Engine.MaterialExpressionSceneTexture Name="MaterialExpressionSceneTexture_1"
       End Object
       Begin Object Name="MaterialExpressionSceneTexture_1"
          SceneTextureId=PPI_SceneDepth
          MaterialExpressionEditorX=-1314
          MaterialExpressionEditorY=-198
          MaterialExpressionGuid=2683E4664DE80A68DDCABEBA11B373AD
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionSceneTexture'"MaterialExpressionSceneTexture_1"'
       NodePosX=-1314
       NodePosY=-198
       NodeGuid=35E86F0A48C1DB8E855647B4C4473B77
       CustomProperties Pin (PinId=3B74BAEC4EBCB21C2A8467BE688A9750,PinName="UVs",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=FF1B4A6C44A415545E09F1B1B099B4E3,PinName="Color",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_5 C2EA01D44D829A80AA1EBEB5F42ACA85,MaterialGraphNode_11 14B429C046A073AEE665EFB258A84CF7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=EF94301145B48DC2F2BF96AA111FB41D,PinName="Size",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=4A20C08E424C13F3DC1E8F861F735025,PinName="InvSize",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_4"
       Begin Object Class=/Script/Engine.MaterialExpressionCustom Name="MaterialExpressionCustom_3"
       End Object
       Begin Object Name="MaterialExpressionCustom_3"
          Code="return GetSceneTextureUV(Parameters);"
          OutputType=CMOT_Float2
          Description="SceneUV"
          Inputs=
          MaterialExpressionEditorX=-1314
          MaterialExpressionEditorY=-406
          MaterialExpressionGuid=1DBC64204F255784608569B4A9C11C32
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
          bCollapsed=True
       End Object
       MaterialExpression=MaterialExpressionCustom'"MaterialExpressionCustom_3"'
       NodePosX=-1314
       NodePosY=-406
       NodeGuid=9507F1CF4C50F2E66F794EB5C7D48DD1
       CustomProperties Pin (PinId=D5EA8BC84EF2FFC272A3A482723F6643,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 0ED8D9EE4CFBF0FF9EC919AF8F53574A,MaterialGraphNode_5 71911F504C7239709127939D156B40AA,MaterialGraphNode_6 562AFAAE4BBFF308A3A687B1FD03EE9C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_5"
       Begin Object Class=/Script/Engine.MaterialExpressionCustom Name="MaterialExpressionCustom_4"
       End Object
       Begin Object Name="MaterialExpressionCustom_4"
          Code="half CenterDepth = Depth;\r\n\r\nhalf D1 = abs(CenterDepth - SceneTextureLookup(UV + float2(-1, 0) * TexelScale, 1, false).r);\r\nhalf D2 = abs(CenterDepth - SceneTextureLookup(UV + float2(0, -1) * TexelScale, 1, false).r);\r\nhalf D3 = abs(CenterDepth - SceneTextureLookup(UV + float2(1, 0) * TexelScale, 1, false).r);\r\nhalf D4 = abs(CenterDepth - SceneTextureLookup(UV + float2(0, 1) * TexelScale, 1, false).r);\r\n\r\nhalf D5 = abs(CenterDepth - SceneTextureLookup(UV + float2(-2, 0) * TexelScale, 1, false).r);\r\nhalf D6 = abs(CenterDepth - SceneTextureLookup(UV + float2(0, -2) * TexelScale, 1, false).r);\r\nhalf D7 = abs(CenterDepth - SceneTextureLookup(UV + float2(2, 0) * TexelScale, 1, false).r);\r\nhalf D8 = abs(CenterDepth - SceneTextureLookup(UV + float2(0, 2) * TexelScale, 1, false).r);\r\n\r\nhalf D9 = abs(CenterDepth - SceneTextureLookup(UV + float2(-3, 0) * TexelScale, 1, false).r);\r\nhalf D10 = abs(CenterDepth - SceneTextureLookup(UV + float2(0, -3) * TexelScale, 1, false).r);\r\nhalf D11 = abs(CenterDepth - SceneTextureLookup(UV + float2(3, 0) * TexelScale, 1, false).r);\r\nhalf D12 = abs(CenterDepth - SceneTextureLookup(UV + float2(0, 3) * TexelScale, 1, false).r);\r\n\r\nhalf MaxDepthDifference = max(CenterDepth, 150) / 150;\r\nhalf SceneNeighborDepth0 = saturate(max(max(D1, D2), max(D3, D4)) / MaxDepthDifference);\r\nhalf SceneNeighborDepth1 = saturate(max(max(D5, D6), max(D7, D8)) / (MaxDepthDifference * 2));\r\nhalf SceneNeighborDepth2 = saturate(max(max(D9, D10), max(D11, D12)) / (MaxDepthDifference * 3)) / 2;\r\nhalf SceneNeighborDepth = max(max(SceneNeighborDepth0, SceneNeighborDepth1), SceneNeighborDepth2);\r\nreturn saturate(1 - saturate(SceneNeighborDepth));"
          OutputType=CMOT_Float1
          Description="Depth"
          Inputs(0)=(InputName="UV",Input=(Expression=MaterialExpressionCustom'"MaterialGraphNode_4.MaterialExpressionCustom_3"'))
          Inputs(1)=(InputName="TexelScale",Input=(Expression=MaterialExpressionCustom'"MaterialGraphNode_10.MaterialExpressionCustom_17"'))
          Inputs(2)=(InputName="Depth",Input=(Expression=MaterialExpressionSceneTexture'"MaterialGraphNode_3.MaterialExpressionSceneTexture_1"',Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=1))
          MaterialExpressionEditorX=-816
          MaterialExpressionEditorY=-384
          MaterialExpressionGuid=EE6165774BB2AA315508A28D434EE6B4
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionCustom'"MaterialExpressionCustom_4"'
       NodePosX=-816
       NodePosY=-384
       NodeGuid=059C0150403EC778F4195DAC325BC772
       CustomProperties Pin (PinId=71911F504C7239709127939D156B40AA,PinName="UV",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_4 D5EA8BC84EF2FFC272A3A482723F6643,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=0A8347104CABDFA9F60223A1F4E8AF5F,PinName="TexelScale",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_10 D7A2D63E4EF471D213740DAD687515BC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=C2EA01D44D829A80AA1EBEB5F42ACA85,PinName="Depth",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_3 FF1B4A6C44A415545E09F1B1B099B4E3,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=308ECEA943236EBA0AAC01B6EEC58C46,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_7 8519AD004011275858022681756DECD4,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_6"
       Begin Object Class=/Script/Engine.MaterialExpressionCustom Name="MaterialExpressionCustom_5"
       End Object
       Begin Object Name="MaterialExpressionCustom_5"
          Code="float3 CenterColor =  Color;\r\n\r\nhalf3 C1 = SceneTextureLookup(UV + float2(-1, 0) * TexelScale, 0, false).rgb;\r\nhalf3 C2 = SceneTextureLookup(UV + float2(0, -1) * TexelScale, 0, false).rgb;\r\nhalf3 C3 = SceneTextureLookup(UV + float2(1, 0) * TexelScale, 0, false).rgb;\r\nhalf3 C4 = SceneTextureLookup(UV + float2(0, 1) * TexelScale, 0, false).rgb;\r\n\r\nfloat c1 = Luminance(C1);\r\nfloat c2 = Luminance(CenterColor);\r\nfloat l1 = max(c1, c2);\r\nfloat l2 = min(c1, c2);\r\nhalf L1 = ((l1 + 0.05) / (l2 + 0.05) - 1) / 20;\r\n\r\nc1 = Luminance(C2);\r\nl1 = max(c1, c2);\r\nl2 = min(c1, c2);\r\nhalf L2 = ((l1 + 0.05) / (l2 + 0.05) - 1) / 20;\r\n\r\nc1 = Luminance(C3);\r\nl1 = max(c1, c2);\r\nl2 = min(c1, c2);\r\nhalf L3 = ((l1 + 0.05) / (l2 + 0.05) - 1) / 20;\r\n\r\nc1 = Luminance(C4);\r\nl1 = max(c1, c2);\r\nl2 = min(c1, c2);\r\nhalf L4 = ((l1 + 0.05) / (l2 + 0.05) - 1) / 20;\r\n\r\nhalf NeighborDifference = max(max(L1, L2), max(L3, L4));\r\nreturn saturate(1 - NeighborDifference);"
          OutputType=CMOT_Float1
          Description="Luminance"
          Inputs(0)=(InputName="UV",Input=(Expression=MaterialExpressionCustom'"MaterialGraphNode_4.MaterialExpressionCustom_3"'))
          Inputs(1)=(InputName="TexelScale",Input=(Expression=MaterialExpressionCustom'"MaterialGraphNode_10.MaterialExpressionCustom_17"'))
          Inputs(2)=(InputName="Color",Input=(Expression=MaterialExpressionSceneTexture'"MaterialGraphNode_2.MaterialExpressionSceneTexture_0"',Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=1))
          MaterialExpressionEditorX=-818
          MaterialExpressionEditorY=-182
          MaterialExpressionGuid=EE6165774BB2AA315508A28D434EE6B4
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionCustom'"MaterialExpressionCustom_5"'
       NodePosX=-818
       NodePosY=-182
       NodeGuid=9B48C498462591F243976EAD7A616C38
       CustomProperties Pin (PinId=562AFAAE4BBFF308A3A687B1FD03EE9C,PinName="UV",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_4 D5EA8BC84EF2FFC272A3A482723F6643,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=7F331D9B4EB86E93CF133184554B13D5,PinName="TexelScale",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_10 D7A2D63E4EF471D213740DAD687515BC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=16C8FD894D0AC54AF78D12A3A2B996A1,PinName="Color",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_2 123D3B3B40D8727C5EC37A88F087A5BF,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=C0EF3DFF476D3EB1F23273B3AE624B69,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_7 987389FD4E4F79FAE891C7ADEBBCB435,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_7"
       Begin Object Class=/Script/Engine.MaterialExpressionMultiply Name="MaterialExpressionMultiply_0"
       End Object
       Begin Object Name="MaterialExpressionMultiply_0"
          A=(Expression=MaterialExpressionCustom'"MaterialGraphNode_5.MaterialExpressionCustom_4"')
          B=(Expression=MaterialExpressionCustom'"MaterialGraphNode_6.MaterialExpressionCustom_5"')
          MaterialExpressionEditorX=-480
          MaterialExpressionEditorY=-256
          MaterialExpressionGuid=11F9E406498F65354096FE8D4F3A0217
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionMultiply'"MaterialExpressionMultiply_0"'
       NodePosX=-480
       NodePosY=-256
       NodeGuid=7C02E19043C29E1015156684F2517E57
       CustomProperties Pin (PinId=8519AD004011275858022681756DECD4,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_5 308ECEA943236EBA0AAC01B6EEC58C46,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=987389FD4E4F79FAE891C7ADEBBCB435,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_6 C0EF3DFF476D3EB1F23273B3AE624B69,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=7C5B154C44AEB8A9599E2BA79F830E22,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_1 F3A37045489DB5AB4CA43983F6E99EC6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_8"
       Begin Object Class=/Script/Engine.MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_3"
       End Object
       Begin Object Name="MaterialExpressionScalarParameter_3"
          DefaultValue=0.500000
          ParameterName="SharpenWeight"
          ExpressionGUID=0FB7810242017410F04D8893B5E926B9
          MaterialExpressionEditorX=-432
          MaterialExpressionEditorY=-128
          MaterialExpressionGuid=19D9205140F703E91D51EAADB938BD72
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionScalarParameter'"MaterialExpressionScalarParameter_3"'
       NodePosX=-432
       NodePosY=-128
       bCanRenameNode=True
       NodeGuid=CF7A0B06425C167E080D4CB60A73F0D7
       CustomProperties Pin (PinId=8A9E5D274A8592255473BC878CBCEAD2,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_1 5ED8501E43F8E1DEB97D4E8D6A9140DD,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_10"
       Begin Object Class=/Script/Engine.MaterialExpressionCustom Name="MaterialExpressionCustom_17"
       End Object
       Begin Object Name="MaterialExpressionCustom_17"
          Code="return View.BufferSizeAndInvSize.zw;"
          OutputType=CMOT_Float2
          Description="BufferTexelSize"
          Inputs=
          MaterialExpressionEditorX=-1312
          MaterialExpressionEditorY=-304
          MaterialExpressionGuid=99D774D54CC0E5C8D02B37991F61BC9E
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
          bCollapsed=True
       End Object
       MaterialExpression=MaterialExpressionCustom'"MaterialExpressionCustom_17"'
       NodePosX=-1312
       NodePosY=-304
       NodeGuid=78A22D324AAE06AD66D682967597008C
       CustomProperties Pin (PinId=D7A2D63E4EF471D213740DAD687515BC,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 88ACE3C54B852D16F9A1559353353142,MaterialGraphNode_5 0A8347104CABDFA9F60223A1F4E8AF5F,MaterialGraphNode_6 7F331D9B4EB86E93CF133184554B13D5,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_11"
       Begin Object Class=/Script/Engine.MaterialExpressionDivide Name="MaterialExpressionDivide_0"
       End Object
       Begin Object Name="MaterialExpressionDivide_0"
          A=(Expression=MaterialExpressionSceneTexture'"MaterialGraphNode_3.MaterialExpressionSceneTexture_1"',Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=1)
          B=(Expression=MaterialExpressionScalarParameter'"MaterialGraphNode_18.MaterialExpressionScalarParameter_0"')
          ConstB=5000.000000
          MaterialExpressionEditorX=-432
          MaterialExpressionGuid=C37E3BF445B02C5974D57EA3772DA61B
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionDivide'"MaterialExpressionDivide_0"'
       NodePosX=-432
       NodeGuid=64B233E94C7BEB2AACEA32A15EF5BD0E
       CustomProperties Pin (PinId=14B429C046A073AEE665EFB258A84CF7,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_3 FF1B4A6C44A415545E09F1B1B099B4E3,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=67D1399E4223694B8E4813AE2CC1F3A0,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_18 3C907B2F4E17772B623FA0928DFB9977,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=9B41172C4F2EC9F215370C90F8A155E1,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_16 6264B4294C89F0C16140B4B80BFB32A5,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_13"
       Begin Object Class=/Script/Engine.MaterialExpressionClamp Name="MaterialExpressionClamp_0"
       End Object
       Begin Object Name="MaterialExpressionClamp_0"
          Input=(Expression=MaterialExpressionOneMinus'"MaterialGraphNode_16.MaterialExpressionOneMinus_0"')
          MaterialExpressionEditorX=-208
          MaterialExpressionGuid=6FF90D0644A7E453A75FDA8D68C9ACBA
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionClamp'"MaterialExpressionClamp_0"'
       NodePosX=-208
       NodeGuid=BC22923140EA88941DE3F8B00CFA53B4
       CustomProperties Pin (PinId=7D5F35454C28AFAB4A707187C71C6B32,PinName="Input",PinFriendlyName=" ",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_16 0BA28B0F4A96AB422CB108907EB87889,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=A34096B5469D8C6C1FB1B4BC8E891A98,PinName="Min",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=B11692D0424A3EC14515DDB1620EA67B,PinName="Max",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=CB27BFF240766DC481704FAF05E1A51B,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_15 7C02DCC842B921D4E0FFD9BB5AAA1641,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_15"
       Begin Object Class=/Script/Engine.MaterialExpressionMultiply Name="MaterialExpressionMultiply_2"
       End Object
       Begin Object Name="MaterialExpressionMultiply_2"
          A=(Expression=MaterialExpressionMultiply'"MaterialGraphNode_1.MaterialExpressionMultiply_1"')
          B=(Expression=MaterialExpressionClamp'"MaterialGraphNode_13.MaterialExpressionClamp_0"')
          MaterialExpressionEditorX=32
          MaterialExpressionEditorY=-256
          MaterialExpressionGuid=AE5CEDE5458D219B3A323DAB31146F37
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionMultiply'"MaterialExpressionMultiply_2"'
       NodePosX=32
       NodePosY=-256
       NodeGuid=40FF16254CB69421DA4117B5D2C72966
       CustomProperties Pin (PinId=60398C164E2F92146661DF8E6CB24D0C,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_1 3A87A9AC45281993C761B8ADD8D461AC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=7C02DCC842B921D4E0FFD9BB5AAA1641,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_13 CB27BFF240766DC481704FAF05E1A51B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=3ACF13D6487AB908CDA74B857C288266,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 32DB99F441D3E046BB927FAE33242711,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_16"
       Begin Object Class=/Script/Engine.MaterialExpressionOneMinus Name="MaterialExpressionOneMinus_0"
       End Object
       Begin Object Name="MaterialExpressionOneMinus_0"
          Input=(Expression=MaterialExpressionDivide'"MaterialGraphNode_11.MaterialExpressionDivide_0"')
          MaterialExpressionEditorX=-288
          MaterialExpressionGuid=0230478341A7584BDE577E90465C4F4E
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionOneMinus'"MaterialExpressionOneMinus_0"'
       NodePosX=-288
       NodeGuid=F0F30B474629FA5F65DF9DADEE3A4FE1
       CustomProperties Pin (PinId=6264B4294C89F0C16140B4B80BFB32A5,PinName="Input",PinFriendlyName=" ",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_11 9B41172C4F2EC9F215370C90F8A155E1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
       CustomProperties Pin (PinId=0BA28B0F4A96AB422CB108907EB87889,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_13 7D5F35454C28AFAB4A707187C71C6B32,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_18"
       Begin Object Class=/Script/Engine.MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_0"
       End Object
       Begin Object Name="MaterialExpressionScalarParameter_0"
          DefaultValue=5000.000000
          ParameterName="DistanceFadeOff"
          ExpressionGUID=F2CFCD094C91096D51A5E69FE11ADFC9
          MaterialExpressionEditorX=-640
          MaterialExpressionEditorY=128
          MaterialExpressionGuid=9F095F064FD556E5621FDE99EF46CA46
          Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
       End Object
       MaterialExpression=MaterialExpressionScalarParameter'"MaterialExpressionScalarParameter_0"'
       NodePosX=-640
       NodePosY=128
       bCanRenameNode=True
       NodeGuid=1C8A37A84F58379A2E330DABDAA6F419
       CustomProperties Pin (PinId=3C907B2F4E17772B623FA0928DFB9977,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_11 67D1399E4223694B8E4813AE2CC1F3A0,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
    End Object
    Last edited by hallatore; 07-19-2018, 01:06 PM.

    #2
    nice work Hallatore! ive been using your camera code to sharpen my scenes ever since i saw it (the one that adjusts the tonemapper based on the camera velocity). one thing with this, im using a dynamic circle depth of field camera mod(line trace to set focal distance), when i apply this sharpener to either my player camera or pp volume, it clears out my depth of field completely. any ideas?
    CEO of Prydetech

    https://www.artstation.com/ixicalibur

    Originally posted by ixicalibur
    Here you go, this is a link to every tutorial you could ever need plus instructions to access all the collective knowledge of mankind: [Super massive awesome link that every amazing game developer uses to instantly learn to be super awesome at making stuff]

    Comment


      #3
      nice!
      are there any fundamental differences between this and your previous attempt? I never quite had time to look at the previous one under the hood but this one seems to do a depth+luminance aware sharpen to skip edges
      I don't suppose there's any way to make the TemporalAA history or the velocity buffer affect this for a combined temporal-aware TemporalAA sharpen (to counter the blurryness on moving objects/camera) ?

      btw fixed your bug so it works on all editor viewports simultaneously

      Code:
      Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_4"
         Begin Object Class=/Script/Engine.MaterialExpressionCustom Name="MaterialExpressionCustom_0"
         End Object
         Begin Object Name="MaterialExpressionCustom_0"
            Code="half CenterDepth = SceneTextureLookup(UV, 1, false).r;\r\n\r\nhalf D1 = abs(CenterDepth - SceneTextureLookup(UV + float2(-1, 0) * TexelScale, 1, false).r);\r\nhalf D2 = abs(CenterDepth - SceneTextureLookup(UV + float2(0, -1) * TexelScale, 1, false).r);\r\nhalf D3 = abs(CenterDepth - SceneTextureLookup(UV + float2(1, 0) * TexelScale, 1, false).r);\r\nhalf D4 = abs(CenterDepth - SceneTextureLookup(UV + float2(0, 1) * TexelScale, 1, false).r);\r\n\r\nhalf D5 = abs(CenterDepth - SceneTextureLookup(UV + float2(-2, 0) * TexelScale, 1, false).r);\r\nhalf D6 = abs(CenterDepth - SceneTextureLookup(UV + float2(0, -2) * TexelScale, 1, false).r);\r\nhalf D7 = abs(CenterDepth - SceneTextureLookup(UV + float2(2, 0) * TexelScale, 1, false).r);\r\nhalf D8 = abs(CenterDepth - SceneTextureLookup(UV + float2(0, 2) * TexelScale, 1, false).r);\r\n\r\nhalf D9 = abs(CenterDepth - SceneTextureLookup(UV + float2(-3, 0) * TexelScale, 1, false).r);\r\nhalf D10 = abs(CenterDepth - SceneTextureLookup(UV + float2(0, -3) * TexelScale, 1, false).r);\r\nhalf D11 = abs(CenterDepth - SceneTextureLookup(UV + float2(3, 0) * TexelScale, 1, false).r);\r\nhalf D12 = abs(CenterDepth - SceneTextureLookup(UV + float2(0, 3) * TexelScale, 1, false).r);\r\n\r\nhalf MaxDepthDifference = CenterDepth / 50;\r\nhalf SceneNeighborDepth0 = saturate(max(max(D1, D2), max(D3, D4)) / MaxDepthDifference);\r\nhalf SceneNeighborDepth1 = saturate(max(max(D5, D6), max(D7, D8)) / (MaxDepthDifference * 2));\r\nhalf SceneNeighborDepth2 = saturate(max(max(D9, D10), max(D11, D12)) / (MaxDepthDifference * 3)) / 2;\r\nhalf SceneNeighborDepth = max(max(SceneNeighborDepth0, SceneNeighborDepth1), SceneNeighborDepth2);\r\nfloat4 CenterColor =  SceneTextureLookup(UV, 0, false);\r\n\r\nhalf3 C1 = SceneTextureLookup(UV + float2(-1, 0) * TexelScale, 0, false).rgb;\r\nhalf3 C2 = SceneTextureLookup(UV + float2(0, -1) * TexelScale, 0, false).rgb;\r\nhalf3 C3 = SceneTextureLookup(UV + float2(1, 0) * TexelScale, 0, false).rgb;\r\nhalf3 C4 = SceneTextureLookup(UV + float2(0, 1) * TexelScale, 0, false).rgb;\r\n\r\nfloat c1 = Luminance(C1.rgb);\r\nfloat c2 = Luminance(CenterColor.rgb);\r\nfloat l1 = max(c1, c2);\r\nfloat l2 = min(c1, c2);\r\nhalf L1 = ((l1 + 0.05) / (l2 + 0.05) - 1) / 20;\r\n\r\nc1 = Luminance(C2.rgb);\r\nl1 = max(c1, c2);\r\nl2 = min(c1, c2);\r\nhalf L2 = ((l1 + 0.05) / (l2 + 0.05) - 1) / 20;\r\n\r\nc1 = Luminance(C3.rgb);\r\nl1 = max(c1, c2);\r\nl2 = min(c1, c2);\r\nhalf L3 = ((l1 + 0.05) / (l2 + 0.05) - 1) / 20;\r\n\r\nc1 = Luminance(C4.rgb);\r\nl1 = max(c1, c2);\r\nl2 = min(c1, c2);\r\nhalf L4 = ((l1 + 0.05) / (l2 + 0.05) - 1) / 20;\r\n\r\nhalf NeighborDifference = max(max(L1, L2), max(L3, L4));\r\nhalf LuminanceContrastFactor = saturate(1 - NeighborDifference * SharpenWeight * 10);\r\nhalf DepthFactor = saturate(1 - SceneNeighborDepth);\r\n\r\nhalf A0 = Luminance(CenterColor);\r\nhalf4 LuminanceNeightbors = half4(Luminance(C1), Luminance(C2), Luminance(C3), Luminance(C4));\r\nfloat4 A0LuminanceNeightbors = abs(A0 - LuminanceNeightbors);\r\nhalf HDREdge = max(max(A0LuminanceNeightbors.r, A0LuminanceNeightbors.g), max(A0LuminanceNeightbors.b, A0LuminanceNeightbors.a));\r\nhalf EdgeMask = saturate(1.0f - HDREdge);\r\nfloat LerpFactor = -EdgeMask * SharpenWeight * DepthFactor * LuminanceContrastFactor;\r\nhalf3 DeltaColor = (C1 + C2 + C3 + C4) - CenterColor * 4;\r\nCenterColor.rgb += DeltaColor * LerpFactor;\r\n\r\nreturn CenterColor.rgb;"
            Inputs(0)=(InputName="UV",Input=(Expression=MaterialExpressionCustom'"MaterialGraphNode_11.MaterialExpressionCustom_2"'))
            Inputs(1)=(InputName="Tex",Input=(Expression=MaterialExpressionSceneTexture'"MaterialGraphNode_6.MaterialExpressionSceneTexture_0"',Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=1))
            Inputs(2)=(InputName="Depth",Input=(Expression=MaterialExpressionSceneTexture'"MaterialGraphNode_8.MaterialExpressionSceneTexture_1"',Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=1))
            Inputs(3)=(InputName="TexelScale",Input=(Expression=MaterialExpressionSceneTexelSize'"MaterialGraphNode_9.MaterialExpressionSceneTexelSize_0"'))
            Inputs(4)=(InputName="SharpenWeight",Input=(Expression=MaterialExpressionScalarParameter'"MaterialGraphNode_10.MaterialExpressionScalarParameter_0"'))
            MaterialExpressionEditorX=-784
            MaterialExpressionEditorY=96
            MaterialExpressionGuid=210EEB4F41C620C4310A67981D9E4E41
            Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
         End Object
         MaterialExpression=MaterialExpressionCustom'"MaterialExpressionCustom_0"'
         NodePosX=-784
         NodePosY=96
         NodeGuid=32CC9B3B41A9D178A6621BB28DEA1A90
         CustomProperties Pin (PinId=EE0C8CD44E02C113D870F3AB893308A6,PinName="UV",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_11 FB40BD3B46CBEF0549E0AC929D47A164,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=87AC9EE04CEBE5B2BC67EE8E90948261,PinName="Tex",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_6 8F5B6861482A15A34CF4E28B62AA3D3F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=32DF1D14427BD2A791EB43B5D6C79691,PinName="Depth",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_8 A1E385CE40E2E22588B4888243E99740,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=DEAC56414A03EA171137D189717067DF,PinName="TexelScale",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9 96716D3E4AF446098C5E2F8DFCAC09D3,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=8DAFD581455C6C9433B6E58A76DD7099,PinName="SharpenWeight",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_10 BE51D15740CE2A274FE3839DBB8285B3,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=DCE9A73147DAE56B8F355D8E97966363,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_Root_1 733EC3B0428AA034B4000E8B6659F0EC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_5"
         Begin Object Class=/Script/Engine.MaterialExpressionScreenPosition Name="MaterialExpressionScreenPosition_0"
         End Object
         Begin Object Name="MaterialExpressionScreenPosition_0"
            MaterialExpressionEditorX=-1296
            MaterialExpressionEditorY=-160
            MaterialExpressionGuid=A04331B94FA160F96CC081B07C3BA01F
            Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
         End Object
         MaterialExpression=MaterialExpressionScreenPosition'"MaterialExpressionScreenPosition_0"'
         NodePosX=-1296
         NodePosY=-160
         NodeGuid=64E5787A4C957E860075E5BF502DEF16
         CustomProperties Pin (PinId=3A137F084B8BD86707AB5CBE936F9B8C,PinName="ViewportUV",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=068BCD164E45B9F1397D32BF2A111EC4,PinName="PixelPosition",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_6"
         Begin Object Class=/Script/Engine.MaterialExpressionSceneTexture Name="MaterialExpressionSceneTexture_0"
         End Object
         Begin Object Name="MaterialExpressionSceneTexture_0"
            SceneTextureId=PPI_PostProcessInput0
            MaterialExpressionEditorX=-1296
            MaterialExpressionEditorY=64
            MaterialExpressionGuid=2683E4664DE80A68DDCABEBA11B373AD
            Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
         End Object
         MaterialExpression=MaterialExpressionSceneTexture'"MaterialExpressionSceneTexture_0"'
         NodePosX=-1296
         NodePosY=64
         NodeGuid=0E71B27E455CE6BD847B4090144CF10A
         CustomProperties Pin (PinId=3DE14FD14CBC8388A2D4EC8B60367D0E,PinName="UVs",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=8F5B6861482A15A34CF4E28B62AA3D3F,PinName="Color",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_4 87AC9EE04CEBE5B2BC67EE8E90948261,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=8CEA30104DF60BB359ABD4AA93DFDEC3,PinName="Size",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=D3C35D1F495A47576668F181343C7DEF,PinName="InvSize",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_8"
         Begin Object Class=/Script/Engine.MaterialExpressionSceneTexture Name="MaterialExpressionSceneTexture_1"
         End Object
         Begin Object Name="MaterialExpressionSceneTexture_1"
            SceneTextureId=PPI_SceneDepth
            MaterialExpressionEditorX=-1232
            MaterialExpressionEditorY=208
            MaterialExpressionGuid=2683E4664DE80A68DDCABEBA11B373AD
            Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
         End Object
         MaterialExpression=MaterialExpressionSceneTexture'"MaterialExpressionSceneTexture_1"'
         NodePosX=-1232
         NodePosY=208
         NodeGuid=F7B92AC04ACB28DE32DA1F9316797172
         CustomProperties Pin (PinId=75736072417603EE2DF756BBDD32D64C,PinName="UVs",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=A1E385CE40E2E22588B4888243E99740,PinName="Color",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_4 32DF1D14427BD2A791EB43B5D6C79691,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=83A4C82C499224B29E6228A672F1F717,PinName="Size",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
         CustomProperties Pin (PinId=F40AD9F245053388FA16D1A4587BEB98,PinName="InvSize",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_9"
         Begin Object Class=/Script/Engine.MaterialExpressionSceneTexelSize Name="MaterialExpressionSceneTexelSize_0"
         End Object
         Begin Object Name="MaterialExpressionSceneTexelSize_0"
            MaterialExpressionEditorX=-1168
            MaterialExpressionEditorY=336
            MaterialExpressionGuid=7148DC654F2C66A716797988BD59859A
            Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
         End Object
         MaterialExpression=MaterialExpressionSceneTexelSize'"MaterialExpressionSceneTexelSize_0"'
         NodePosX=-1168
         NodePosY=336
         NodeGuid=2601B9324E2B0D9744E78B80F680053D
         CustomProperties Pin (PinId=96716D3E4AF446098C5E2F8DFCAC09D3,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_4 DEAC56414A03EA171137D189717067DF,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_10"
         Begin Object Class=/Script/Engine.MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_0"
         End Object
         Begin Object Name="MaterialExpressionScalarParameter_0"
            DefaultValue=0.700000
            ParameterName="SharpenWeight"
            ExpressionGUID=AB8FA00347C854A0D86F8B932ADCB50B
            MaterialExpressionEditorX=-1168
            MaterialExpressionEditorY=432
            MaterialExpressionGuid=6C4AC22742271C16C0F960977D4CFE19
            Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
         End Object
         MaterialExpression=MaterialExpressionScalarParameter'"MaterialExpressionScalarParameter_0"'
         NodePosX=-1168
         NodePosY=432
         bCanRenameNode=True
         NodeGuid=CB9713C146A7646BA13D9593C61FC4AF
         CustomProperties Pin (PinId=BE51D15740CE2A274FE3839DBB8285B3,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_4 8DAFD581455C6C9433B6E58A76DD7099,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_1"
         Begin Object Class=/Script/Engine.MaterialExpressionComment Name="MaterialExpressionComment_0"
         End Object
         Begin Object Name="MaterialExpressionComment_0"
            SizeX=560
            SizeY=240
            Text="UV is buggy in editor because of multiple viewports. Works fine in-game."
            MaterialExpressionEditorX=-1328
            MaterialExpressionEditorY=-272
            MaterialExpressionGuid=3548C7504A602F4E9E1CF9A3BEA49D66
            Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
         End Object
         MaterialExpressionComment=MaterialExpressionComment'"MaterialExpressionComment_0"'
         NodePosX=-1328
         NodePosY=-272
         NodeWidth=560
         NodeHeight=240
         NodeComment="UV is buggy in editor because of multiple viewports. Works fine in-game."
         NodeGuid=1F077D3E4463DF85DEDB8FA9AAC11E90
      End Object
      Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_11"
         Begin Object Class=/Script/Engine.MaterialExpressionCustom Name="MaterialExpressionCustom_2"
         End Object
         Begin Object Name="MaterialExpressionCustom_2"
            Code="return GetDefaultSceneTextureUV(Parameters, 14);"
            OutputType=CMOT_Float2
            Description="SceneUV"
            Inputs=
            MaterialExpressionEditorX=-1168
            MaterialExpressionEditorY=-16
            MaterialExpressionGuid=1DBC64204F255784608569B4A9C11C32
            Material=PreviewMaterial'"/Engine/Transient.M_Sharpen"'
            bCollapsed=True
         End Object
         MaterialExpression=MaterialExpressionCustom'"MaterialExpressionCustom_2"'
         NodePosX=-1168
         NodePosY=-16
         NodeGuid=162604D24EF7837C0868609A7540751B
         CustomProperties Pin (PinId=FB40BD3B46CBEF0549E0AC929D47A164,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_4 EE0C8CD44E02C113D870F3AB893308A6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
      End Object
      Last edited by Chosker; 03-24-2018, 04:24 AM.
      Follow me on Twitter!
      Developer of Elium - Prison Escape
      Local Image-Based Lighting for UE4

      Comment


        #4
        Originally posted by Chosker View Post
        Are there any fundamental differences between this and your previous attempt? I never quite had time to look at the previous one under the hood but this one seems to do a depth+luminance aware sharpen to skip edges

        btw fixed your bug so it works on all editor viewports simultaneously
        This one just uses depth and some luminance as you said. It's not as good as the other one, but it might be a good trade off given you can use it this easily.
        I decided to see if I could get something to work with just a post process material.

        Thanks for the SceneUV! That bug was really annoying!
        Last edited by hallatore; 03-24-2018, 04:46 AM.

        Comment


          #5
          Here are some examples of the mask it uses to sharpen.
          Last edited by hallatore; 03-24-2018, 09:11 AM.

          Comment


            #6
            Split the code into different parts.

            Also found a strange bug with TexelScale. It becomes wrong if you turn r.screenPercentage up and then back down again. Restarting the editor resets it to normal.

            Comment


              #7
              Thanks for this hallatore! Awesome that you figured out a way to "dumb" things down and squeeze it into a PP material.

              Comment


                #8
                anyone else have the problem of this killing any DoF?
                CEO of Prydetech

                https://www.artstation.com/ixicalibur

                Originally posted by ixicalibur
                Here you go, this is a link to every tutorial you could ever need plus instructions to access all the collective knowledge of mankind: [Super massive awesome link that every amazing game developer uses to instantly learn to be super awesome at making stuff]

                Comment


                  #9
                  Originally posted by ixicalibur View Post
                  anyone else have the problem of this killing any DoF?
                  You set Blendable Location to Before Translucency?

                  I haven't tried it. But I have found a couple of weird bugs with Post Porcess Materials, so it might be a bit buggy.
                  TexelSize is wrong if you change r.screenPercentage around.

                  Comment


                    #10
                    ahh, that might be it, not at my main pc atm, but i think maybe i read your first post as "before tonemapper" not before translucency, will confirm asap. thanks man
                    CEO of Prydetech

                    https://www.artstation.com/ixicalibur

                    Originally posted by ixicalibur
                    Here you go, this is a link to every tutorial you could ever need plus instructions to access all the collective knowledge of mankind: [Super massive awesome link that every amazing game developer uses to instantly learn to be super awesome at making stuff]

                    Comment


                      #11
                      Originally posted by hallatore View Post
                      Also found a strange bug with TexelScale. It becomes wrong if you turn r.screenPercentage up and then back down again. Restarting the editor resets it to normal.
                      try using this instead of the TexelSize node. not sure if it will solve the issue but it solved another postprocess-related texelsize bug I had

                      Code:
                      Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_1097"
                         Begin Object Class=/Script/Engine.MaterialExpressionCustom Name="MaterialExpressionCustom_17"
                         End Object
                         Begin Object Name="MaterialExpressionCustom_17"
                            Code="return View.BufferSizeAndInvSize.zw;"
                            OutputType=CMOT_Float2
                            Description="BufferTexelSize"
                            Inputs=
                            MaterialExpressionEditorX=-3824
                            MaterialExpressionEditorY=64
                            MaterialExpressionGuid=99D774D54CC0E5C8D02B37991F61BC9E
                            Material=PreviewMaterial'"/Engine/Transient.M_WMap"'
                            bCollapsed=True
                         End Object
                         MaterialExpression=MaterialExpressionCustom'"MaterialExpressionCustom_17"'
                         NodePosX=-3824
                         NodePosY=64
                         NodeGuid=B575D51542248D52CD65028CF1B4E2B2
                         CustomProperties Pin (PinId=21E0714D48DD3FCBC237889FCABEF01F,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_1080 E2B5393141864C18E9D1F88731BD17C6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                      End Object
                      Follow me on Twitter!
                      Developer of Elium - Prison Escape
                      Local Image-Based Lighting for UE4

                      Comment


                        #12
                        Originally posted by Chosker View Post
                        try using this instead of the TexelSize node. not sure if it will solve the issue but it solved another postprocess-related texelsize bug I had.
                        Thanks! This one works perfectly


                        PS: Updated the code in the initial post.

                        Comment


                          #13
                          Originally posted by ixicalibur View Post
                          ahh, that might be it, not at my main pc atm, but i think maybe i read your first post as "before tonemapper" not before translucency, will confirm asap. thanks man
                          I had it at before tonemapper initially. But that really screws up translucency also

                          Comment


                            #14
                            Originally posted by hallatore View Post

                            I had it at before tonemapper initially. But that really screws up translucency also
                            turns out it was my inability to read when i get excited about stuff. i absolutely had it set to before tonemapper and not before translucency! everything works perfectly
                            CEO of Prydetech

                            https://www.artstation.com/ixicalibur

                            Originally posted by ixicalibur
                            Here you go, this is a link to every tutorial you could ever need plus instructions to access all the collective knowledge of mankind: [Super massive awesome link that every amazing game developer uses to instantly learn to be super awesome at making stuff]

                            Comment


                              #15
                              This is very timely as I was just trying to do something similar. I tried your solution however I hit a snag with a Material compile error:
                              Code:
                              "GetDefaultSceneTextureUV" undeclared identifier
                              . GetDefaultSceneTextureUV is referenced in the ScreenUV node and I couldn't find any references to it in the ush/usf files. Version issue? I'm on 4.18. Thanks!

                              Comment

                              Working...
                              X