UE4 has changed how you access texture samples in the post process materials.
I made a new version that is relying solely on luminance. Here are some comparisons: Imgsli
PS: Remember to set the Blendable location to After tonemapping.
PS2: 0.25 seems to give a good natural sharpen result.
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="float2 SceneUV = GetSceneTextureUV(Parameters);
float2 TexelScale = View.BufferSizeAndInvSize.zw;
half3 C1 = SceneTextureLookup(SceneUV + float2(-1, 0) * TexelScale, 14, false).rgb;
half3 C2 = SceneTextureLookup(SceneUV + float2(0, -1) * TexelScale, 14, false).rgb;
half3 C3 = SceneTextureLookup(SceneUV + float2(1, 0) * TexelScale, 14, false).rgb;
half3 C4 = SceneTextureLookup(SceneUV + float2(0, 1) * TexelScale, 14, false).rgb;
half3 C5 = SceneTextureLookup(SceneUV + float2(-1, -1) * TexelScale, 14, false).rgb;
half3 C6 = SceneTextureLookup(SceneUV + float2(1, -1) * TexelScale, 14, false).rgb;
half3 C7 = SceneTextureLookup(SceneUV + float2(1, 1) * TexelScale, 14, false).rgb;
half3 C8 = SceneTextureLookup(SceneUV + float2(-1, 1) * TexelScale, 14, false).rgb;
// Luminance edge detection
half A0 = Luminance(SceneColor);
half CL1 = Luminance(C1);
half L1 = ((max(CL1, A0)) / (min(CL1, A0)) - 1);
half CL2 = Luminance(C2);
half L2 = ((max(CL2, A0)) / (min(CL2, A0)) - 1);
half CL3 = Luminance(C3);
half L3 = ((max(CL3, A0)) / (min(CL3, A0)) - 1);
half CL4 = Luminance(C4);
half L4 = ((max(CL4, A0)) / (min(CL4, A0)) - 1);
half CL5 = Luminance(C5);
half L5 = ((max(CL5, A0)) / (min(CL5, A0)) - 1);
half CL6 = Luminance(C6);
half L6 = ((max(CL6, A0)) / (min(CL6, A0)) - 1);
half CL7 = Luminance(C7);
half L7 = ((max(CL7, A0)) / (min(CL7, A0)) - 1);
half CL8 = Luminance(C8);
half L8 = ((max(CL8, A0)) / (min(CL8, A0)) - 1);
half NeighborDifference = max(max(max(L1, L2), max(L3, L4)), max(max(L5, L6), max(L7, L8)));
half SharpenMask = 1.0f - clamp(NeighborDifference, 0.0f, LuminanceWeight);
SharpenMask *= SharpenMask * SharpenMask;
//return SharpenMask;
// Sharpen
half SharpenWeight = Strength * SharpenMask;
half4 LuminanceNeightbors = half4(CL1, CL2, CL3, CL4);
half4 LuminanceNeightbors2 = half4(CL5, CL6, CL7, CL8);
half4 A0LuminanceNeightbors = abs(A0 - LuminanceNeightbors);
half4 A0LuminanceNeightbors2 = abs(A0 - LuminanceNeightbors2);
half A0Max = max(max(A0LuminanceNeightbors.r, A0LuminanceNeightbors.g), max(A0LuminanceNeightbors.b, A0LuminanceNeightbors.a));
half A0Max2 = max(max(A0LuminanceNeightbors2.r, A0LuminanceNeightbors2.g), max(A0LuminanceNeightbors2.b, A0LuminanceNeightbors2.a));
half HDREdge = max(A0Max, A0Max2);
half EdgeMask = saturate(1.0f - HDREdge);
half LerpFactor = -EdgeMask * SharpenWeight;
half3 DeltaColor = (C1 + C2 + C3 + C4 + C5 + C6 + C7 + C8) - SceneColor * 8;
SceneColor.rgb += DeltaColor * LerpFactor;
return SceneColor;"
Description="Code"
Inputs(0)=(InputName="SceneColor",Input=(Expression=MaterialExpressionSceneTexture'"MaterialGraphNode_2.MaterialExpressionSceneTexture_0"',Mask=1,MaskR=1,MaskG=1,MaskB=1,MaskA=1))
Inputs(1)=(InputName="Strength",Input=(Expression=MaterialExpressionScalarParameter'"MaterialGraphNode_1.MaterialExpressionScalarParameter_0"'))
Inputs(2)=(InputName="LuminanceWeight",Input=(Expression=MaterialExpressionScalarParameter'"MaterialGraphNode_3.MaterialExpressionScalarParameter_1"'))
MaterialExpressionEditorX=-384
MaterialExpressionGuid=32CA673F4C384537430A35BD6D79D525
Material=PreviewMaterial'"/Engine/Transient.M_Lumi_Sharpen_2"'
End Object
MaterialExpression=MaterialExpressionCustom'"MaterialExpressionCustom_0"'
NodePosX=-384
NodeGuid=2609CF904C9265E0149CA7ABB90DF3D4
CustomProperties Pin (PinId=54A4AAD042DB1D7B80850EB023451DF6,PinName="SceneColor",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_2 50D4F0744B8FCBCC139B34AE65FA7D9A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=03563E3748438B24C9F696B70DBFB089,PinName="Strength",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_1 0AE6AB104D713A5EDAB05DAE86BE8280,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=E2596B3D4CDC3B87E54AAD824A68F50F,PinName="LuminanceWeight",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_3 C0A718BB4861BA1D12472BA3BF0612F9,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=0EF8A43149F3C43F07FB57A437A14DED,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_Root_0 53C1388A4E5F2407C8658FA9C27654BC,),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.MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_0"
End Object
Begin Object Name="MaterialExpressionScalarParameter_0"
DefaultValue=0.250000
SliderMax=2.000000
ParameterName="Strength"
ExpressionGUID=F5F85BB14AF92F827CC8668E31FB3938
MaterialExpressionEditorX=-768
MaterialExpressionEditorY=176
MaterialExpressionGuid=4E2152CE4CBC588D96DE5CABA56973C6
Material=PreviewMaterial'"/Engine/Transient.M_Lumi_Sharpen_2"'
End Object
MaterialExpression=MaterialExpressionScalarParameter'"MaterialExpressionScalarParameter_0"'
NodePosX=-768
NodePosY=176
bCanRenameNode=True
NodeGuid=9355C11944C54286ED09019D2B5A95C9
CustomProperties Pin (PinId=0AE6AB104D713A5EDAB05DAE86BE8280,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 03563E3748438B24C9F696B70DBFB089,),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=-768
MaterialExpressionGuid=2683E4664DE80A68DDCABEBA11B373AD
Material=PreviewMaterial'"/Engine/Transient.M_Lumi_Sharpen_2"'
End Object
MaterialExpression=MaterialExpressionSceneTexture'"MaterialExpressionSceneTexture_0"'
NodePosX=-768
NodeGuid=BF8A68B147F36CEA1E38CA91807D871B
CustomProperties Pin (PinId=AA55FF7C4237F466FFDAD6BC27575300,PinName="UVs",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,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=50D4F0744B8FCBCC139B34AE65FA7D9A,PinName="Color",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="rgba",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 54A4AAD042DB1D7B80850EB023451DF6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=67478990479AD78A1596D3B6296390DC,PinName="Size",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
CustomProperties Pin (PinId=FA965C2045E0551F26168A9485FC27BA,PinName="InvSize",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,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.MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_1"
End Object
Begin Object Name="MaterialExpressionScalarParameter_1"
DefaultValue=0.500000
SliderMax=1.000000
ParameterName="LuminanceWeight"
ExpressionGUID=5B9E5D0B4BCC048A9544D8A3E28AC234
MaterialExpressionEditorX=-768
MaterialExpressionEditorY=304
MaterialExpressionGuid=4E2152CE4CBC588D96DE5CABA56973C6
Material=PreviewMaterial'"/Engine/Transient.M_Lumi_Sharpen_2"'
End Object
MaterialExpression=MaterialExpressionScalarParameter'"MaterialExpressionScalarParameter_1"'
NodePosX=-768
NodePosY=304
bCanRenameNode=True
NodeGuid=C4432D73408F78161E5215AF8E84973F
CustomProperties Pin (PinId=C0A718BB4861BA1D12472BA3BF0612F9,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 E2596B3D4CDC3B87E54AAD824A68F50F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object