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

(update) check out post #3](Custom Stencil: Radial Silhouette Post Process Materiel (HLSL) (PC) (Full code) (4.13) - Rendering - Unreal Engine Forums) 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
StencilPostProccessMatOnOff.png

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/INT/Engine/Rendering/PostProcessEffects/PostProcessMaterials/PostProcessDemoMaterialOverview/index.html
https://forums.unrealengine.com/showthread.php?57646-Radial-Blur-PostProcess-Material
http://www.michalorzelek.com/blog/tutorial-creating-outline-effect-around-objects/
http://www.tomlooman.com/the-many-uses-of-custom-depth-in-unreal-4/

The shader Material

The Custom Stencil Radial Silhouette HSLS shader node 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


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;
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);"
      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


Very useful and simple! Thank you :smiley:

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.

StencilPPM4.png

Updated Shader 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


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;
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;"
      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