Announcement

Collapse
No announcement yet.

Custom Stencil: Radial Silhouette Post Process Materiel (HLSL) (PC) (Full code) (4.13)

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

    Custom Stencil: Radial Silhouette Post Process Materiel (HLSL) (PC) (Full code) (4.13)

    (update) check out post #3 for a four color variant

    Hello,

    I was looking for a simple way to do edge highlighting and I could not find any solid configurable options. I was able to piece together several other sources and create a simple custom post process material to do Radial Silhouettes. I hope you find it useful.

    Sample: Object on the right is highlighted using Stencil Silhouette
    Click image for larger version

Name:	StencilPostProccessMatOnOff.png
Views:	1
Size:	32.0 KB
ID:	1199546

    This is not a complete walk through, you need to be familiar with setting up post processing and rendering to the Stencil Buffer.
    For more information check out these links
    https://docs.unrealengine.com/latest...iew/index.html
    https://forums.unrealengine.com/show...ocess-Material
    http://www.michalorzelek.com/blog/tu...round-objects/
    http://www.tomlooman.com/the-many-us...h-in-unreal-4/

    The shader Material
    Click image for larger version

Name:	StencilPostProccessMat.png
Views:	1
Size:	152.6 KB
ID:	1199547

    The Custom Stencil Radial Silhouette HSLS shader node code
    Code:
    static const int ppi0TexIndex = 14;
    static const int stencilTexIndex = 24;
    
    const float blendSizeX = invSize.x * blendRadius;
    const float blendSizeY = invSize.y * blendRadius;
    
    const float4 stencilOrigin = SceneTextureLookup(UVs, stencilTexIndex, false);
    const float4 ppi0 = SceneTextureLookup(UVs, ppi0TexIndex, false);
    if(stencilOrigin.r == stencilIndex)
    {
        return lerp(ppi0, silhouetteV4, stencilAlpha);
    }
    
    const float degreeStep = 360.0 / samples;
    float total = 0.0;
    float radian;
    float2 pos, offset;
    for(int i = 0; i < samples; i++)
    {
    	radian = radians(degreeStep*i);
    	offset.x = cos(radian) * blendSizeX;
    	offset.y = sin(radian) * blendSizeY;
    	pos = UVs + offset;
        total += SceneTextureLookup(pos, stencilTexIndex, false).r == stencilIndex;
    }
    
    return lerp(ppi0, silhouetteV4, total/samples);

    Direct to Material Editor: Copy and paste directly into your materal editor
    Code:
    Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_1"
       Begin Object Class=MaterialExpressionScreenPosition Name="MaterialExpressionScreenPosition_2"
       End Object
       Begin Object Name="MaterialExpressionScreenPosition_2"
          MaterialExpressionEditorX=-128
          MaterialExpressionEditorY=-256
          MaterialExpressionGuid=5C76B52C4E8DF7BECC4272A7F495C5A9
          Material=PreviewMaterial'/Engine/Transient.TestPpm'
       End Object
       MaterialExpression=MaterialExpressionScreenPosition'MaterialExpressionScreenPosition_2'
       NodePosX=-128
       NodePosY=-256
       NodeGuid=93706FAA4FA9BFF056CBD093C9DB7DBD
       CustomProperties Pin (PinId=E34FF5E64DE7072671F193B8AD53E981,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_8 8D70DF964314140F2651EDAF141BF6F9,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
    End Object
    Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_3"
       Begin Object Class=MaterialExpressionSceneTexture Name="MaterialExpressionSceneTexture_6"
       End Object
       Begin Object Name="MaterialExpressionSceneTexture_6"
          SceneTextureId=PPI_CustomStencil
          MaterialExpressionEditorX=-128
          MaterialExpressionEditorY=-160
          MaterialExpressionGuid=10C897A4491077B5EE9886BAB2E7DDE1
          Material=PreviewMaterial'/Engine/Transient.TestPpm'
          bCollapsed=False
       End Object
       MaterialExpression=MaterialExpressionSceneTexture'MaterialExpressionSceneTexture_6'
       NodePosX=-128
       NodePosY=-160
       NodeGuid=8D9A7BBE4EE89B93532CB1980FA86093
       CustomProperties Pin (PinId=65134ABF442C5131CBDBFF9D1C6F8391,PinName="UVs",PinType.PinCategory="optional",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
       CustomProperties Pin (PinId=D54DD2E141D213AF9F4DF186F6BF824D,PinName="Color",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
       CustomProperties Pin (PinId=8CDEA4C643DBBB11117E16BEA9B02315,PinName="Size",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
       CustomProperties Pin (PinId=D9B1EDB144D3B0D21CD0F49126883DC6,PinName="InvSize",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_8 DFB9A95944BD6F12EC46FFA96D4D9087,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
    End Object
    Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_5"
       Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_8"
       End Object
       Begin Object Name="MaterialExpressionScalarParameter_8"
          DefaultValue=100.000000
          ParameterName="StencilIndex"
          ExpressionGUID=62F53E1B45274E9BA7AAA4A73E20B97A
          MaterialExpressionEditorX=-128
          MaterialExpressionEditorY=176
          MaterialExpressionGuid=A363709E48CFCBA3D2B7178DA834A47E
          Material=PreviewMaterial'/Engine/Transient.TestPpm'
       End Object
       MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_8'
       NodePosX=-128
       NodePosY=176
       bCanRenameNode=True
       NodeGuid=60108090441B89A8349930B601B1961F
       CustomProperties Pin (PinId=8596C9634B11BBE4DB2CDB80521CE194,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_8 2033BC224B8B7BE51DC23EBAE6EE37C5,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
    End Object
    Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_6"
       Begin Object Class=MaterialExpressionConstant4Vector Name="MaterialExpressionConstant4Vector_2"
       End Object
       Begin Object Name="MaterialExpressionConstant4Vector_2"
          Constant=(R=1.000000,G=0.000000,B=0.000000,A=1.000000)
          MaterialExpressionEditorX=-128
          MaterialExpressionEditorY=336
          MaterialExpressionGuid=BA0A78CB4052148B6F9A6E9F093B1F58
          Material=PreviewMaterial'/Engine/Transient.TestPpm'
       End Object
       MaterialExpression=MaterialExpressionConstant4Vector'MaterialExpressionConstant4Vector_2'
       NodePosX=-128
       NodePosY=336
       NodeGuid=7607FBBC4A1896B5215CB3AEA0C84B80
       CustomProperties Pin (PinId=B048BF7B498885C0486E71BCA47920B0,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_8 C01543A64B356E9F808CC6A05F06CA81,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
    End Object
    Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_7"
       Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_9"
       End Object
       Begin Object Name="MaterialExpressionScalarParameter_9"
          DefaultValue=3.000000
          ParameterName="BlendRadius"
          ExpressionGUID=0772029A416FD2DE16B76584F6BBAA6F
          MaterialExpressionEditorX=-128
          MaterialExpressionEditorY=96
          MaterialExpressionGuid=98CDC6814146989597B0F5B1DC70C7A4
          Material=PreviewMaterial'/Engine/Transient.TestPpm'
       End Object
       MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_9'
       NodePosX=-128
       NodePosY=96
       bCanRenameNode=True
       NodeGuid=C774EB6546198B677C21B5BA487EBBCE
       CustomProperties Pin (PinId=56D8A2C1494A00BB13B9B485BAD1C78D,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_8 B4B8BEFB420D54734B26159A33C4B4B8,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
    End Object
    Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_8"
       Begin Object Class=MaterialExpressionCustom Name="MaterialExpressionCustom_2"
       End Object
       Begin Object Name="MaterialExpressionCustom_2"
          Code="static const int ppi0TexIndex = 14;\r\nstatic const int stencilTexIndex = 24;\r\n\r\nconst float blendSizeX = invSize.x * blendRadius;\r\nconst float blendSizeY = invSize.y * blendRadius;\r\n\r\nconst float4 stencilOrigin = SceneTextureLookup(UVs, stencilTexIndex, false);\r\nconst float4 ppi0 = SceneTextureLookup(UVs, ppi0TexIndex, false);\r\nif(stencilOrigin.r == stencilIndex)\r\n{\r\n    return lerp(ppi0, silhouetteV4, stencilAlpha);\r\n}\r\n\r\nconst float degreeStep = 360.0 / samples;\r\nfloat total = 0.0;\r\nfloat radian;\r\nfloat2 pos, offset;\r\nfor(int i = 0; i < samples; i++)\r\n{\r\n\tradian = radians(degreeStep*i);\r\n\toffset.x = cos(radian) * blendSizeX;\r\n\toffset.y = sin(radian) * blendSizeY;\r\n\tpos = UVs + offset;\r\n    total += SceneTextureLookup(pos, stencilTexIndex, false).r == stencilIndex;\r\n}\r\n\r\nreturn lerp(ppi0, silhouetteV4, total/samples);"
          OutputType=CMOT_Float4
          Description="CustomStencilRadialSilhouette"
          Inputs(0)=(InputName="UVs",Input=(Expression=MaterialExpressionScreenPosition'MaterialGraphNode_1.MaterialExpressionScreenPosition_2'))
          Inputs(1)=(InputName="invSize",Input=(Expression=MaterialExpressionSceneTexture'MaterialGraphNode_3.MaterialExpressionSceneTexture_6',OutputIndex=2))
          Inputs(2)=(InputName="samples",Input=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_9.MaterialExpressionScalarParameter_10'))
          Inputs(3)=(InputName="blendRadius",Input=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_7.MaterialExpressionScalarParameter_9'))
          Inputs(4)=(InputName="stencilIndex",Input=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_5.MaterialExpressionScalarParameter_8'))
          Inputs(5)=(InputName="stencilAlpha",Input=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_10.MaterialExpressionScalarParameter_11'))
          Inputs(6)=(InputName="silhouetteV4",Input=(Expression=MaterialExpressionConstant4Vector'MaterialGraphNode_6.MaterialExpressionConstant4Vector_2'))
          MaterialExpressionEditorX=288
          MaterialExpressionEditorY=-128
          MaterialExpressionGuid=D486C08F4A1317698346B2BE7917E4C9
          Material=PreviewMaterial'/Engine/Transient.TestPpm'
       End Object
       MaterialExpression=MaterialExpressionCustom'MaterialExpressionCustom_2'
       NodePosX=288
       NodePosY=-128
       NodeGuid=B6182B7B443225B105E3599603146307
       CustomProperties Pin (PinId=8D70DF964314140F2651EDAF141BF6F9,PinName="UVs",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_1 E34FF5E64DE7072671F193B8AD53E981,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
       CustomProperties Pin (PinId=DFB9A95944BD6F12EC46FFA96D4D9087,PinName="invSize",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_3 D9B1EDB144D3B0D21CD0F49126883DC6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
       CustomProperties Pin (PinId=3425B77D4CD594EF81B9A1B3AEEAEC69,PinName="samples",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9 DDE448354B9839D51AEBBB95C3AF5AF9,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
       CustomProperties Pin (PinId=B4B8BEFB420D54734B26159A33C4B4B8,PinName="blendRadius",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_7 56D8A2C1494A00BB13B9B485BAD1C78D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
       CustomProperties Pin (PinId=2033BC224B8B7BE51DC23EBAE6EE37C5,PinName="stencilIndex",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_5 8596C9634B11BBE4DB2CDB80521CE194,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
       CustomProperties Pin (PinId=613F201241378341050197BF419EF430,PinName="stencilAlpha",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_10 0087AF094BEF7F670E6D949EF0FDCE50,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
       CustomProperties Pin (PinId=C01543A64B356E9F808CC6A05F06CA81,PinName="silhouetteV4",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_6 B048BF7B498885C0486E71BCA47920B0,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
       CustomProperties Pin (PinId=175D7D22431BF99F6A2C47A7FBC1CCE8,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_Root_0 C99220FB4ECC4061072C158A21829577,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
    End Object
    Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9"
       Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_10"
       End Object
       Begin Object Name="MaterialExpressionScalarParameter_10"
          DefaultValue=8.000000
          ParameterName="Samples"
          ExpressionGUID=95E26485453052353F9196A693F97E6A
          MaterialExpressionEditorX=-128
          MaterialExpressionEditorY=16
          MaterialExpressionGuid=6F5D3521459E05CB430DA5ABCE11F01D
          Material=PreviewMaterial'/Engine/Transient.TestPpm'
       End Object
       MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_10'
       NodePosX=-128
       NodePosY=16
       bCanRenameNode=True
       NodeGuid=13BC974D44E34D09D14754A79BB69041
       CustomProperties Pin (PinId=DDE448354B9839D51AEBBB95C3AF5AF9,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_8 3425B77D4CD594EF81B9A1B3AEEAEC69,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
    End Object
    Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_10"
       Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_11"
       End Object
       Begin Object Name="MaterialExpressionScalarParameter_11"
          DefaultValue=0.050000
          ParameterName="StencilAlpha"
          ExpressionGUID=DFC05E624A85EEC2F1A2AEAD6F2EC82E
          MaterialExpressionEditorX=-128
          MaterialExpressionEditorY=256
          MaterialExpressionGuid=5D62CC3F4D348BEA099000A67CA27D40
          Material=PreviewMaterial'/Engine/Transient.TestPpm'
       End Object
       MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_11'
       NodePosX=-128
       NodePosY=256
       bCanRenameNode=True
       NodeGuid=2036479F4FDE80074B0A909A6769DDBF
       CustomProperties Pin (PinId=0087AF094BEF7F670E6D949EF0FDCE50,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_8 613F201241378341050197BF419EF430,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
    End Object
    Last edited by SilverB1rd; 10-31-2016, 03:42 PM.

    #2
    Very useful and simple! Thank you
    If you like painting in VR, check out Lienzo - knexator.itch.io/lienzo-vr

    Comment


      #3
      I've extended the material to allow for up to four silhouette colors and a sample ramp which is the minimum number of positive matches for the silhouette to reach full alpha.

      Click image for larger version

Name:	StencilPPM4.png
Views:	1
Size:	71.1 KB
ID:	1117723

      Click image for larger version

Name:	StencilPPM4Mat.png
Views:	1
Size:	103.4 KB
ID:	1117724

      Updated Shader code
      Code:
      static const int ppi0TexIndex = 14;
      static const int stencilTexIndex = 24;
      
      const float blendSizeX = invSize.x * blendRadius;
      const float blendSizeY = invSize.y * blendRadius;
      
      const float4 stencilOrigin = SceneTextureLookup(UVs, stencilTexIndex, false);
      const float4 ppi0Origin = SceneTextureLookup(UVs, ppi0TexIndex, false);
      
      const float degreeStep = 360.0 / samples;
      float s1Count = 0.0, s2Count = 0.0, s3Count = 0.0, s4Count = 0.0;
      float radian, sampleIndex;
      float2 pos, offset;
      [unroll] for(int i = 0; i < samples; i++)
      { 
      radian = radians(degreeStep*i);
      offset.x = cos(radian) * blendSizeX;
      offset.y = sin(radian) * blendSizeY;
      pos = UVs + offset;
      sampleIndex = SceneTextureLookup(pos, stencilTexIndex, false).r;
      s1Count += sampleIndex == stencilIndex1;
      s2Count += sampleIndex == stencilIndex2;
      s3Count += sampleIndex == stencilIndex3;
      s4Count += sampleIndex == stencilIndex4;
      }
      
      float4 final = ppi0Origin;
      final = lerp(final, silhouette1, clamp(stencilOrigin.r != stencilIndex1 ? s1Count/samplesRamp : stencilAlpha1, 0,1) );
      final = lerp(final, silhouette2, clamp(stencilOrigin.r != stencilIndex2 ? s2Count/samplesRamp : stencilAlpha2, 0,1) );
      final = lerp(final, silhouette3, clamp(stencilOrigin.r != stencilIndex3 ? s3Count/samplesRamp : stencilAlpha3, 0,1) );
      final = lerp(final, silhouette4, clamp(stencilOrigin.r != stencilIndex4 ? s4Count/samplesRamp : stencilAlpha4, 0,1) );
      
      return final;
      Copy and paste directly into material editors
      Code:
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_0"
         Begin Object Class=MaterialExpressionCustom Name="MaterialExpressionCustom_0"
         End Object
         Begin Object Name="MaterialExpressionCustom_0"
            Code="static const int ppi0TexIndex = 14;\r\nstatic const int stencilTexIndex = 24;\r\n\r\nconst float blendSizeX = invSize.x * blendRadius;\r\nconst float blendSizeY = invSize.y * blendRadius;\r\n\r\nconst float4 stencilOrigin = SceneTextureLookup(UVs, stencilTexIndex, false);\r\nconst float4 ppi0Origin = SceneTextureLookup(UVs, ppi0TexIndex, false);\r\n\r\nconst float degreeStep = 360.0 / samples;\r\nfloat s1Count = 0.0, s2Count = 0.0, s3Count = 0.0, s4Count = 0.0;\r\nfloat radian, sampleIndex;\r\nfloat2 pos, offset;\r\n[unroll] for(int i = 0; i < samples; i++)\r\n{ \r\nradian = radians(degreeStep*i);\r\noffset.x = cos(radian) * blendSizeX;\r\noffset.y = sin(radian) * blendSizeY;\r\npos = UVs + offset;\r\nsampleIndex = SceneTextureLookup(pos, stencilTexIndex, false).r;\r\ns1Count += sampleIndex == stencilIndex1;\r\ns2Count += sampleIndex == stencilIndex2;\r\ns3Count += sampleIndex == stencilIndex3;\r\ns4Count += sampleIndex == stencilIndex4;\r\n}\r\n\r\nfloat4 final = ppi0Origin;\r\nfinal = lerp(final, silhouette1, clamp(stencilOrigin.r != stencilIndex1 ? s1Count/samplesRamp : stencilAlpha1, 0,1) );\r\nfinal = lerp(final, silhouette2, clamp(stencilOrigin.r != stencilIndex2 ? s2Count/samplesRamp : stencilAlpha2, 0,1) );\r\nfinal = lerp(final, silhouette3, clamp(stencilOrigin.r != stencilIndex3 ? s3Count/samplesRamp : stencilAlpha3, 0,1) );\r\nfinal = lerp(final, silhouette4, clamp(stencilOrigin.r != stencilIndex4 ? s4Count/samplesRamp : stencilAlpha4, 0,1) );\r\n\r\nreturn final;"
            OutputType=CMOT_Float4
            Description="RadialSilhouette_4channel"
            Inputs(0)=(InputName="UVs",Input=(Expression=MaterialExpressionScreenPosition'MaterialGraphNode_1.MaterialExpressionScreenPosition_0'))
            Inputs(1)=(InputName="invSize",Input=(Expression=MaterialExpressionSceneTexture'MaterialGraphNode_2.MaterialExpressionSceneTexture_0',OutputIndex=2))
            Inputs(2)=(InputName="samples",Input=(Expression=MaterialExpressionConstant'MaterialGraphNode_4.MaterialExpressionConstant_0'))
            Inputs(3)=(InputName="samplesRamp",Input=(Expression=MaterialExpressionConstant'MaterialGraphNode_5.MaterialExpressionConstant_1'))
            Inputs(4)=(InputName="blendRadius",Input=(Expression=MaterialExpressionConstant'MaterialGraphNode_6.MaterialExpressionConstant_2'))
            Inputs(5)=(InputName="stencilIndex1",Input=(Expression=MaterialExpressionConstant'MaterialGraphNode_7.MaterialExpressionConstant_3'))
            Inputs(6)=(InputName="stencilAlpha1",Input=(Expression=MaterialExpressionConstant'MaterialGraphNode_8.MaterialExpressionConstant_4'))
            Inputs(7)=(InputName="silhouette1",Input=(Expression=MaterialExpressionConstant4Vector'MaterialGraphNode_3.MaterialExpressionConstant4Vector_0'))
            Inputs(8)=(InputName="stencilIndex2",Input=(Expression=MaterialExpressionConstant'MaterialGraphNode_10.MaterialExpressionConstant_6'))
            Inputs(9)=(InputName="stencilAlpha2",Input=(Expression=MaterialExpressionConstant'MaterialGraphNode_9.MaterialExpressionConstant_5'))
            Inputs(10)=(InputName="silhouette2",Input=(Expression=MaterialExpressionConstant4Vector'MaterialGraphNode_11.MaterialExpressionConstant4Vector_1'))
            Inputs(11)=(InputName="stencilIndex3",Input=(Expression=MaterialExpressionConstant'MaterialGraphNode_13.MaterialExpressionConstant_7'))
            Inputs(12)=(InputName="stencilAlpha3",Input=(Expression=MaterialExpressionConstant'MaterialGraphNode_14.MaterialExpressionConstant_8'))
            Inputs(13)=(InputName="silhouette3",Input=(Expression=MaterialExpressionConstant4Vector'MaterialGraphNode_12.MaterialExpressionConstant4Vector_2'))
            Inputs(14)=(InputName="stencilIndex4",Input=(Expression=MaterialExpressionConstant'MaterialGraphNode_16.MaterialExpressionConstant_10'))
            Inputs(15)=(InputName="stencilAlpha4",Input=(Expression=MaterialExpressionConstant'MaterialGraphNode_15.MaterialExpressionConstant_9'))
            Inputs(16)=(InputName="silhouette4",Input=(Expression=MaterialExpressionConstant4Vector'MaterialGraphNode_17.MaterialExpressionConstant4Vector_3'))
            MaterialExpressionEditorX=288
            MaterialExpressionEditorY=-128
            MaterialExpressionGuid=D486C08F4A1317698346B2BE7917E4C9
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionCustom'MaterialExpressionCustom_0'
         NodePosX=288
         NodePosY=-128
         NodeGuid=B1F8E24B4F5A89EBE824F185870B01F5
         CustomProperties Pin (PinId=0DF7BEFA490708EB4B18BE9CEB6E0B57,PinName="UVs",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_1 39A42D2E4107C889C8071790DA4B0B79,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=F1C1DF09400162273F89D5BF3CA56CD7,PinName="invSize",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_2 C01182674689661D67958A8391406220,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=E235D7BF430144A1953460AA1C97188D,PinName="samples",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_4 299D6E554B53A9AAC005F59E3E298BAE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=D802AB70440BB77C38C52E80E0BF16DF,PinName="samplesRamp",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_5 D0AB03F947A2A07C376C758DC46A63AE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=817308324CD9AF3E781B43862F33EEEC,PinName="blendRadius",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_6 026EA3304BFF049FDA39B98167281918,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=05494CCA4E7FB0E62A08A3A365725C4F,PinName="stencilIndex1",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_7 E9E75EBB4686A8007703CAA620336A3D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=4567C09F40B926AEEE78CF803878B656,PinName="stencilAlpha1",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_8 4F90A3C24F5792C69B3C5185BD9E8D52,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=E9B9CE2E4EEA3F54835557B4BEDFEC33,PinName="silhouette1",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_3 DACA48C24D621004531EB981224446B4,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=95CBD6F9433491EC26195B89DA36E100,PinName="stencilIndex2",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_10 532B91F84FA8553DF56A3E990ED91B1E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=D8ABD86F4C83D752EF5F76A1F61FA3EE,PinName="stencilAlpha2",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_9 3024ECE146F2A56C5847F9B0EB41CFB8,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=3C096F13494A121C917CE291055F6D84,PinName="silhouette2",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_11 D237FA744C7475DACC9763870EC59E5A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=A0382A604367907587515C8480395E63,PinName="stencilIndex3",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_13 2D4FC52F4812F00EE35ACAB42EDD57BC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=01D2A5DD4B9AEF285E9DD4989D5CC0E9,PinName="stencilAlpha3",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_14 4118D1FF4F4A762428F25F963395D44B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=55E0A06B41E38C9A224B0792A80107CB,PinName="silhouette3",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_12 DE7F9DF340486F799B0A279B23D1DF01,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=E7C1F0024419A3F56DC301BDF6D05969,PinName="stencilIndex4",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_16 56DB70A04C480A3B9E9658AD6A5563F1,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=9005E37742530A1473D472B011B9F24E,PinName="stencilAlpha4",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_15 8A5CE27B4BB01915D8869CA8817B6F09,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=1B9128064B36F276F948A08FE246571C,PinName="silhouette4",PinType.PinCategory="required",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_17 CE9B5E53498DEDBA7D4E88B379806C86,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=67127BD74431980BEC55D8B659C7C841,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_Root_0 C3664488416FC97E68C7C598CD65CEA5,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_1"
         Begin Object Class=MaterialExpressionScreenPosition Name="MaterialExpressionScreenPosition_0"
         End Object
         Begin Object Name="MaterialExpressionScreenPosition_0"
            MaterialExpressionEditorX=-128
            MaterialExpressionEditorY=-336
            MaterialExpressionGuid=5C76B52C4E8DF7BECC4272A7F495C5A9
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionScreenPosition'MaterialExpressionScreenPosition_0'
         NodePosX=-128
         NodePosY=-336
         NodeGuid=E227E3D445EF68B6448063B99C56C908
         CustomProperties Pin (PinId=39A42D2E4107C889C8071790DA4B0B79,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 0DF7BEFA490708EB4B18BE9CEB6E0B57,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_2"
         Begin Object Class=MaterialExpressionSceneTexture Name="MaterialExpressionSceneTexture_0"
         End Object
         Begin Object Name="MaterialExpressionSceneTexture_0"
            SceneTextureId=PPI_CustomStencil
            MaterialExpressionEditorX=-128
            MaterialExpressionEditorY=-240
            MaterialExpressionGuid=10C897A4491077B5EE9886BAB2E7DDE1
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
            bCollapsed=False
         End Object
         MaterialExpression=MaterialExpressionSceneTexture'MaterialExpressionSceneTexture_0'
         NodePosX=-128
         NodePosY=-240
         NodeGuid=FA8F481B4A52D0E341A1EA86E831333A
         CustomProperties Pin (PinId=7E0C887640D2D47D237277A9F2CF3032,PinName="UVs",PinType.PinCategory="optional",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=FBBF18CE4D5E5B6252C2BF82778ECEA8,PinName="Color",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=8CDDDDB14B771444E90CB49D22FDB599,PinName="Size",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
         CustomProperties Pin (PinId=C01182674689661D67958A8391406220,PinName="InvSize",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 F1C1DF09400162273F89D5BF3CA56CD7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_3"
         Begin Object Class=MaterialExpressionConstant4Vector Name="MaterialExpressionConstant4Vector_0"
         End Object
         Begin Object Name="MaterialExpressionConstant4Vector_0"
            Constant=(R=1.000000,G=0.000000,B=0.000000,A=1.000000)
            MaterialExpressionEditorX=-544
            MaterialExpressionEditorY=64
            MaterialExpressionGuid=BA0A78CB4052148B6F9A6E9F093B1F58
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant4Vector'MaterialExpressionConstant4Vector_0'
         NodePosX=-544
         NodePosY=64
         NodeGuid=9FAB605042C8B3E1480C499F90BF521E
         CustomProperties Pin (PinId=DACA48C24D621004531EB981224446B4,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 E9B9CE2E4EEA3F54835557B4BEDFEC33,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_4"
         Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_0"
         End Object
         Begin Object Name="MaterialExpressionConstant_0"
            R=10.000000
            MaterialExpressionEditorX=-240
            MaterialExpressionEditorY=-96
            MaterialExpressionGuid=1C49ADA6426C59A6BC356F8CB4A805B1
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_0'
         NodePosX=-240
         NodePosY=-96
         NodeGuid=24C931EB407007C1E4836CAA65269F87
         CustomProperties Pin (PinId=299D6E554B53A9AAC005F59E3E298BAE,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 E235D7BF430144A1953460AA1C97188D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_5"
         Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_1"
         End Object
         Begin Object Name="MaterialExpressionConstant_1"
            R=4.000000
            MaterialExpressionEditorX=-288
            MaterialExpressionEditorY=-80
            MaterialExpressionGuid=2F4B9606480528E67F0351B5F1C058F0
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_1'
         NodePosX=-288
         NodePosY=-80
         NodeGuid=7894C0E64C88ED3B81C04EBF34DDD3CC
         CustomProperties Pin (PinId=D0AB03F947A2A07C376C758DC46A63AE,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 D802AB70440BB77C38C52E80E0BF16DF,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_6"
         Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_2"
         End Object
         Begin Object Name="MaterialExpressionConstant_2"
            R=3.000000
            MaterialExpressionEditorX=-336
            MaterialExpressionEditorY=-64
            MaterialExpressionGuid=712502F4473CC92D8053CC9EBAAC77D8
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_2'
         NodePosX=-336
         NodePosY=-64
         NodeGuid=6D79BF91417FED64250E648AF83A02CD
         CustomProperties Pin (PinId=026EA3304BFF049FDA39B98167281918,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 817308324CD9AF3E781B43862F33EEEC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_7"
         Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_3"
         End Object
         Begin Object Name="MaterialExpressionConstant_3"
            R=100.000000
            MaterialExpressionEditorX=-480
            MaterialExpressionEditorY=-32
            MaterialExpressionGuid=E10E2B0848619385D933BBAD9D8F41FC
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_3'
         NodePosX=-480
         NodePosY=-32
         NodeGuid=3D93EBFE4D5B12F83181D981B6099D8D
         CustomProperties Pin (PinId=E9E75EBB4686A8007703CAA620336A3D,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 05494CCA4E7FB0E62A08A3A365725C4F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_8"
         Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_4"
         End Object
         Begin Object Name="MaterialExpressionConstant_4"
            R=0.050000
            MaterialExpressionEditorX=-480
            MaterialExpressionEditorY=16
            MaterialExpressionGuid=B89C9092488B81A72E9ED68B38DDC6C5
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_4'
         NodePosX=-480
         NodePosY=16
         NodeGuid=1D4F9E8E42611931B2A269A4AE311A08
         CustomProperties Pin (PinId=4F90A3C24F5792C69B3C5185BD9E8D52,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 4567C09F40B926AEEE78CF803878B656,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9"
         Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_5"
         End Object
         Begin Object Name="MaterialExpressionConstant_5"
            R=0.050000
            MaterialExpressionEditorX=-448
            MaterialExpressionEditorY=256
            MaterialExpressionGuid=B89C9092488B81A72E9ED68B38DDC6C5
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_5'
         NodePosX=-448
         NodePosY=256
         NodeGuid=418E968043F4099D872B6BAB6F326BDE
         CustomProperties Pin (PinId=3024ECE146F2A56C5847F9B0EB41CFB8,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 D8ABD86F4C83D752EF5F76A1F61FA3EE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_10"
         Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_6"
         End Object
         Begin Object Name="MaterialExpressionConstant_6"
            R=101.000000
            MaterialExpressionEditorX=-448
            MaterialExpressionEditorY=208
            MaterialExpressionGuid=E10E2B0848619385D933BBAD9D8F41FC
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_6'
         NodePosX=-448
         NodePosY=208
         NodeGuid=B9E862474188E90101EEF18416339E28
         CustomProperties Pin (PinId=532B91F84FA8553DF56A3E990ED91B1E,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 95CBD6F9433491EC26195B89DA36E100,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_11"
         Begin Object Class=MaterialExpressionConstant4Vector Name="MaterialExpressionConstant4Vector_1"
         End Object
         Begin Object Name="MaterialExpressionConstant4Vector_1"
            Constant=(R=0.000000,G=0.000000,B=1.000000,A=1.000000)
            MaterialExpressionEditorX=-512
            MaterialExpressionEditorY=304
            MaterialExpressionGuid=BA0A78CB4052148B6F9A6E9F093B1F58
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant4Vector'MaterialExpressionConstant4Vector_1'
         NodePosX=-512
         NodePosY=304
         NodeGuid=2C58969B43F0D4E04047D4B45E6FE243
         CustomProperties Pin (PinId=D237FA744C7475DACC9763870EC59E5A,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 3C096F13494A121C917CE291055F6D84,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_12"
         Begin Object Class=MaterialExpressionConstant4Vector Name="MaterialExpressionConstant4Vector_2"
         End Object
         Begin Object Name="MaterialExpressionConstant4Vector_2"
            Constant=(R=0.000000,G=0.480000,B=0.000000,A=1.000000)
            MaterialExpressionEditorX=-496
            MaterialExpressionEditorY=560
            MaterialExpressionGuid=BA0A78CB4052148B6F9A6E9F093B1F58
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant4Vector'MaterialExpressionConstant4Vector_2'
         NodePosX=-496
         NodePosY=560
         NodeGuid=045240FB43453829713EF4A29B078217
         CustomProperties Pin (PinId=DE7F9DF340486F799B0A279B23D1DF01,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 55E0A06B41E38C9A224B0792A80107CB,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_13"
         Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_7"
         End Object
         Begin Object Name="MaterialExpressionConstant_7"
            R=102.000000
            MaterialExpressionEditorX=-432
            MaterialExpressionEditorY=464
            MaterialExpressionGuid=E10E2B0848619385D933BBAD9D8F41FC
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_7'
         NodePosX=-432
         NodePosY=464
         NodeGuid=2DE9598448844E96491CC4A76B9A7B1E
         CustomProperties Pin (PinId=2D4FC52F4812F00EE35ACAB42EDD57BC,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 A0382A604367907587515C8480395E63,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_14"
         Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_8"
         End Object
         Begin Object Name="MaterialExpressionConstant_8"
            R=0.050000
            MaterialExpressionEditorX=-432
            MaterialExpressionEditorY=512
            MaterialExpressionGuid=B89C9092488B81A72E9ED68B38DDC6C5
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_8'
         NodePosX=-432
         NodePosY=512
         NodeGuid=AF05F29D44F4BC8EAF7FA6843E64D506
         CustomProperties Pin (PinId=4118D1FF4F4A762428F25F963395D44B,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 01D2A5DD4B9AEF285E9DD4989D5CC0E9,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_15"
         Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_9"
         End Object
         Begin Object Name="MaterialExpressionConstant_9"
            R=0.050000
            MaterialExpressionEditorX=-64
            MaterialExpressionEditorY=576
            MaterialExpressionGuid=B89C9092488B81A72E9ED68B38DDC6C5
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_9'
         NodePosX=-64
         NodePosY=576
         NodeGuid=CD8C4A7141EB97D41273A0B4D4799CD6
         CustomProperties Pin (PinId=8A5CE27B4BB01915D8869CA8817B6F09,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 9005E37742530A1473D472B011B9F24E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_16"
         Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_10"
         End Object
         Begin Object Name="MaterialExpressionConstant_10"
            R=103.000000
            MaterialExpressionEditorX=-64
            MaterialExpressionEditorY=528
            MaterialExpressionGuid=E10E2B0848619385D933BBAD9D8F41FC
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_10'
         NodePosX=-64
         NodePosY=528
         NodeGuid=E5D5E30D489A5237086BA6A8C5D5DB09
         CustomProperties Pin (PinId=56DB70A04C480A3B9E9658AD6A5563F1,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 E7C1F0024419A3F56DC301BDF6D05969,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object
      Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_17"
         Begin Object Class=MaterialExpressionConstant4Vector Name="MaterialExpressionConstant4Vector_3"
         End Object
         Begin Object Name="MaterialExpressionConstant4Vector_3"
            Constant=(R=0.966667,G=1.000000,B=0.000000,A=1.000000)
            MaterialExpressionEditorX=-128
            MaterialExpressionEditorY=624
            MaterialExpressionGuid=BA0A78CB4052148B6F9A6E9F093B1F58
            Material=PreviewMaterial'/Engine/Transient.RadialSilhouette_4_Ppm'
         End Object
         MaterialExpression=MaterialExpressionConstant4Vector'MaterialExpressionConstant4Vector_3'
         NodePosX=-128
         NodePosY=624
         NodeGuid=FF031E444CFD7731126FBAA99673BDB6
         CustomProperties Pin (PinId=CE9B5E53498DEDBA7D4E88B379806C86,PinName="Output",PinFriendlyName=" ",Direction="EGPD_Output",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(MaterialGraphNode_0 1B9128064B36F276F948A08FE246571C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,)
      End Object

      Comment

      Working...
      X