Pages

Friday, December 5, 2014

[UE4 Material] Graphing Functions


Being interested in math and shaders I recently got into shadertoy and made a shader to draw some interesting looking implicit functions. This was fun but it was also just a matter of time until I'd do something similar using Unreal Engine.
So here we go, a tutorial about graphing a mathematical function with the UE3/4 material editor alone. There are no textures involved, everything is just done in the pixel shader.


In order to actually draw the graphs I'm using a method suggested by Iñigo Quílez:
http://www.iquilezles.org/www/articles/distance/distance.htm

The shader code described isn't very complex but requires the derivatives to be computed.
So in total there are 4 things required for graphing a function in the material editor:
  1. A function.
    Any kind of function will work but the elements need to be reordered so one
    side of the equation is zero. E.g.  y=x²  will become  0=x²-y.
  2. Derivatives of the function.
    It's recommended to to manually do the differentiation. However if the math
    is out of reach you can use finite differences instead.
  3. A coordinate system.
    Usually this will be the UVs, screen coordinates or the worldposition.
  4. A grid.
    This is optionally but helps to read the graph. I'd suggest to draw the x/y-axis at the very least.



Material Setup

I'm starting off with a rather simple function:
0 = x³-y²

The derivatives of this function are as follows:
d/dx = 3*x²
d/dy = -2*y

The coordinate system is based on the UVs. Since these range from 0-1 for the preview meshes a negative offset of -0.5 is added to the texture coordinates.



If you prefer an automated process over manual differentiation you can use forward differencing to calculate the derivatives. This will calculate the function 2 additional times with a slight offset on the x- and y-axis.
Keep in mind that this might increase the instruction count a lot, depending on the functions complexity.




With the function and its derivatives available we can now draw the graph:



Visalizing the x/y-axis is pretty similar to drawing the graph but much easier at the same time since it's directly based on the absolutes of the coordinates.



For a real grid with multiple sub-lines use this setup instead:




Putting it all together


To replicate this network of nodes just copy and paste the code below to your own material:

Begin Object Class=MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_18"
   Begin Object Class=MaterialExpressionComment Name="MaterialExpressionComment_0"
   End Object
   Begin Object Name="MaterialExpressionComment_0"
      SizeX=1136
      SizeY=432
      Text="Draw Grid"
      MaterialExpressionEditorX=1648
      MaterialExpressionEditorY=-3088
      MaterialExpressionGuid=28366D4648509726F5EC76959F7B50DC
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpressionComment=MaterialExpressionComment'MaterialExpressionComment_0'
   NodePosX=1648
   NodePosY=-3088
   NodeWidth=1136
   NodeHeight=432
   NodeComment="Draw Grid"
   NodeGuid=4E8F8190439ED514BCF0F8BC84CB8A2A
End Object
Begin Object Class=MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_15"
   Begin Object Class=MaterialExpressionComment Name="MaterialExpressionComment_1"
   End Object
   Begin Object Name="MaterialExpressionComment_1"
      SizeX=880
      SizeY=448
      Text="Draw Graph"
      MaterialExpressionEditorX=1936
      MaterialExpressionEditorY=-2640
      MaterialExpressionGuid=28366D4648509726F5EC76959F7B50DC
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpressionComment=MaterialExpressionComment'MaterialExpressionComment_1'
   NodePosX=1936
   NodePosY=-2640
   NodeWidth=880
   NodeHeight=448
   NodeComment="Draw Graph"
   NodeGuid=C58F85374D951E9D5D1C24B70B2F0FAF
End Object
Begin Object Class=MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_14"
   Begin Object Class=MaterialExpressionComment Name="MaterialExpressionComment_2"
   End Object
   Begin Object Name="MaterialExpressionComment_2"
      SizeX=304
      SizeY=256
      Text="Derivatives"
      MaterialExpressionEditorX=1616
      MaterialExpressionEditorY=-2400
      MaterialExpressionGuid=34357E4D47B94A25FCB75C98A5F1DFF2
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpressionComment=MaterialExpressionComment'MaterialExpressionComment_2'
   NodePosX=1616
   NodePosY=-2400
   NodeWidth=304
   NodeHeight=256
   NodeComment="Derivatives"
   NodeGuid=66BEF39E491499A073B65CACDBA5FDE7
End Object
Begin Object Class=MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_13"
   Begin Object Class=MaterialExpressionComment Name="MaterialExpressionComment_3"
   End Object
   Begin Object Name="MaterialExpressionComment_3"
      SizeX=304
      SizeY=240
      Text="Function"
      MaterialExpressionEditorX=1616
      MaterialExpressionEditorY=-2640
      MaterialExpressionGuid=34357E4D47B94A25FCB75C98A5F1DFF2
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpressionComment=MaterialExpressionComment'MaterialExpressionComment_3'
   NodePosX=1616
   NodePosY=-2640
   NodeWidth=304
   NodeHeight=240
   NodeComment="Function"
   NodeGuid=D39FF62B498950ED364CD4BBA65572F3
End Object
Begin Object Class=MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_11"
   Begin Object Class=MaterialExpressionComment Name="MaterialExpressionComment_4"
   End Object
   Begin Object Name="MaterialExpressionComment_4"
      SizeX=496
      SizeY=288
      Text="Coordinates"
      MaterialExpressionEditorX=1072
      MaterialExpressionEditorY=-2576
      MaterialExpressionGuid=34357E4D47B94A25FCB75C98A5F1DFF2
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpressionComment=MaterialExpressionComment'MaterialExpressionComment_4'
   NodePosX=1072
   NodePosY=-2576
   NodeWidth=496
   NodeHeight=288
   NodeComment="Coordinates"
   NodeGuid=E12080E642AEC569DA0E5881928508DF
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_125"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2882"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2881"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2880"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2879"
   End Object
   Begin Object Class=MaterialExpressionLinearInterpolate Name="MaterialExpressionLinearInterpolate_0"
   End Object
   Begin Object Name="EdGraphPin_2882"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_Root_1.EdGraphPin_2858"'
   End Object
   Begin Object Name="EdGraphPin_2881"
      PinName="Alpha"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_155.EdGraphPin_2968"'
   End Object
   Begin Object Name="EdGraphPin_2880"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_177.EdGraphPin_3025"'
   End Object
   Begin Object Name="EdGraphPin_2879"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_152.EdGraphPin_2952"'
   End Object
   Begin Object Name="MaterialExpressionLinearInterpolate_0"
      A=(Expression=MaterialExpressionVectorParameter'"MaterialGraphNode_152.MaterialExpressionVectorParameter_0"',Mask=1,MaskR=1,MaskG=1,MaskB=1)
      B=(Expression=MaterialExpressionLinearInterpolate'"MaterialGraphNode_177.MaterialExpressionLinearInterpolate_1"')
      Alpha=(Expression=MaterialExpressionClamp'"MaterialGraphNode_155.MaterialExpressionClamp_0"')
      MaterialExpressionEditorX=2704
      MaterialExpressionEditorY=-2576
      MaterialExpressionGuid=0FE461CD4018E0D2A455E782335447A1
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionLinearInterpolate'MaterialExpressionLinearInterpolate_0'
   Pins(0)=EdGraphPin'EdGraphPin_2879'
   Pins(1)=EdGraphPin'EdGraphPin_2880'
   Pins(2)=EdGraphPin'EdGraphPin_2881'
   Pins(3)=EdGraphPin'EdGraphPin_2882'
   NodePosX=2704
   NodePosY=-2576
   NodeGuid=7E784A6A4B53ABEF455F33A94EB43483
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_126"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2883"
   End Object
   Begin Object Class=MaterialExpressionTextureCoordinate Name="MaterialExpressionTextureCoordinate_0"
   End Object
   Begin Object Name="EdGraphPin_2883"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_129.EdGraphPin_2888"'
   End Object
   Begin Object Name="MaterialExpressionTextureCoordinate_0"
      MaterialExpressionEditorX=1088
      MaterialExpressionEditorY=-2496
      MaterialExpressionGuid=D48CBCE240ED14E64FE19AB97E278261
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionTextureCoordinate'MaterialExpressionTextureCoordinate_0'
   Pins(0)=EdGraphPin'EdGraphPin_2883'
   NodePosX=1088
   NodePosY=-2496
   NodeGuid=3166F4494DB621C757E896970AFC2C10
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_127"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2885"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2884"
   End Object
   Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_0"
   End Object
   Begin Object Name="EdGraphPin_2885"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_228.EdGraphPin_3163"'
      LinkedTo(1)=EdGraphPin'"MaterialGraphNode_231.EdGraphPin_3172"'
      LinkedTo(2)=EdGraphPin'"MaterialGraphNode_231.EdGraphPin_3173"'
   End Object
   Begin Object Name="EdGraphPin_2884"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_130.EdGraphPin_2893"'
   End Object
   Begin Object Name="MaterialExpressionComponentMask_0"
      Input=(Expression=MaterialExpressionMultiply'"MaterialGraphNode_130.MaterialExpressionMultiply_67"')
      R=True
      MaterialExpressionEditorX=1424
      MaterialExpressionEditorY=-2528
      MaterialExpressionGuid=931691B4440D3A8CD3120A8BC0D1747C
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
      Desc="x"
   End Object
   MaterialExpression=MaterialExpressionComponentMask'MaterialExpressionComponentMask_0'
   Pins(0)=EdGraphPin'EdGraphPin_2884'
   Pins(1)=EdGraphPin'EdGraphPin_2885'
   NodePosX=1424
   NodePosY=-2528
   NodeComment="x"
   NodeGuid=DA778AB94E3AF00B99F2A3977BD54316
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_128"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2887"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2886"
   End Object
   Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_1"
   End Object
   Begin Object Name="EdGraphPin_2887"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_230.EdGraphPin_3169"'
      LinkedTo(1)=EdGraphPin'"MaterialGraphNode_230.EdGraphPin_3170"'
      LinkedTo(2)=EdGraphPin'"MaterialGraphNode_233.EdGraphPin_3178"'
   End Object
   Begin Object Name="EdGraphPin_2886"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_130.EdGraphPin_2893"'
   End Object
   Begin Object Name="MaterialExpressionComponentMask_1"
      Input=(Expression=MaterialExpressionMultiply'"MaterialGraphNode_130.MaterialExpressionMultiply_67"')
      G=True
      MaterialExpressionEditorX=1424
      MaterialExpressionEditorY=-2432
      MaterialExpressionGuid=931691B4440D3A8CD3120A8BC0D1747C
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
      Desc="y"
   End Object
   MaterialExpression=MaterialExpressionComponentMask'MaterialExpressionComponentMask_1'
   Pins(0)=EdGraphPin'EdGraphPin_2886'
   Pins(1)=EdGraphPin'EdGraphPin_2887'
   NodePosX=1424
   NodePosY=-2432
   NodeComment="y"
   NodeGuid=CED82EBC4600C64B3E038DAE32F6893F
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_129"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2890"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2889"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2888"
   End Object
   Begin Object Class=MaterialExpressionAdd Name="MaterialExpressionAdd_20"
   End Object
   Begin Object Name="EdGraphPin_2890"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_130.EdGraphPin_2891"'
   End Object
   Begin Object Name="EdGraphPin_2889"
      PinName="B"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_2888"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_126.EdGraphPin_2883"'
   End Object
   Begin Object Name="MaterialExpressionAdd_20"
      A=(Expression=MaterialExpressionTextureCoordinate'"MaterialGraphNode_126.MaterialExpressionTextureCoordinate_0"')
      ConstB=-0.500000
      MaterialExpressionEditorX=1200
      MaterialExpressionEditorY=-2496
      MaterialExpressionGuid=316E8CF44D3F8E0798877D9AE21520C8
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionAdd'MaterialExpressionAdd_20'
   Pins(0)=EdGraphPin'EdGraphPin_2888'
   Pins(1)=EdGraphPin'EdGraphPin_2889'
   Pins(2)=EdGraphPin'EdGraphPin_2890'
   NodePosX=1200
   NodePosY=-2496
   NodeGuid=9FFB658E4EF2DABA9B1E3E9BF166D8CF
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_130"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2893"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2892"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2891"
   End Object
   Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_67"
   End Object
   Begin Object Name="EdGraphPin_2893"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_127.EdGraphPin_2884"'
      LinkedTo(1)=EdGraphPin'"MaterialGraphNode_128.EdGraphPin_2886"'
      LinkedTo(2)=EdGraphPin'"MaterialGraphNode_181.EdGraphPin_3038"'
   End Object
   Begin Object Name="EdGraphPin_2892"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_146.EdGraphPin_2939"'
   End Object
   Begin Object Name="EdGraphPin_2891"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_129.EdGraphPin_2890"'
   End Object
   Begin Object Name="MaterialExpressionMultiply_67"
      A=(Expression=MaterialExpressionAdd'"MaterialGraphNode_129.MaterialExpressionAdd_20"')
      B=(Expression=MaterialExpressionScalarParameter'"MaterialGraphNode_146.MaterialExpressionScalarParameter_4"')
      MaterialExpressionEditorX=1312
      MaterialExpressionEditorY=-2496
      MaterialExpressionGuid=81B33D2749940BE52AE8A4A2C8979C24
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionMultiply'MaterialExpressionMultiply_67'
   Pins(0)=EdGraphPin'EdGraphPin_2891'
   Pins(1)=EdGraphPin'EdGraphPin_2892'
   Pins(2)=EdGraphPin'EdGraphPin_2893'
   NodePosX=1312
   NodePosY=-2496
   NodeGuid=69D8D7394F6589A97424439039B13ED6
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_146"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2939"
   End Object
   Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_4"
   End Object
   Begin Object Name="EdGraphPin_2939"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_130.EdGraphPin_2892"'
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_4"
      DefaultValue=4.000000
      ParameterName="Scale"
      ExpressionGUID=764808E84C677EEE027C8CA2516F3B57
      MaterialExpressionEditorX=1200
      MaterialExpressionEditorY=-2400
      MaterialExpressionGuid=DAEDC3A346B6E42A4EAFF889B1245C9D
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_4'
   Pins(0)=EdGraphPin'EdGraphPin_2939'
   NodePosX=1200
   NodePosY=-2400
   bCanRenameNode=True
   NodeGuid=A775221B43EE89B5ED35E181910B4BED
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_147"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2941"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2940"
   End Object
   Begin Object Class=MaterialExpressionAbs Name="MaterialExpressionAbs_0"
   End Object
   Begin Object Name="EdGraphPin_2941"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_151.EdGraphPin_2949"'
   End Object
   Begin Object Name="EdGraphPin_2940"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_229.EdGraphPin_3168"'
   End Object
   Begin Object Name="MaterialExpressionAbs_0"
      Input=(Expression=MaterialExpressionSubtract'"MaterialGraphNode_229.MaterialExpressionSubtract_25"')
      MaterialExpressionEditorX=1968
      MaterialExpressionEditorY=-2592
      MaterialExpressionGuid=EF5AFA7740E5B25326B077A05F633124
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionAbs'MaterialExpressionAbs_0'
   Pins(0)=EdGraphPin'EdGraphPin_2940'
   Pins(1)=EdGraphPin'EdGraphPin_2941'
   NodePosX=1968
   NodePosY=-2592
   ErrorType=1
   ErrorMsg="Missing Abs input"
   NodeGuid=DE98278C4A71D6EB216CEDA6CADA8FE8
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_148"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2944"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2943"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2942"
   End Object
   Begin Object Class=MaterialExpressionAppendVector Name="MaterialExpressionAppendVector_0"
   End Object
   Begin Object Name="EdGraphPin_2944"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_149.EdGraphPin_2945"'
   End Object
   Begin Object Name="EdGraphPin_2943"
      PinName="B"
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_233.EdGraphPin_3180"'
   End Object
   Begin Object Name="EdGraphPin_2942"
      PinName="A"
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_232.EdGraphPin_3177"'
   End Object
   Begin Object Name="MaterialExpressionAppendVector_0"
      A=(Expression=MaterialExpressionMultiply'"MaterialGraphNode_232.MaterialExpressionMultiply_72"')
      B=(Expression=MaterialExpressionMultiply'"MaterialGraphNode_233.MaterialExpressionMultiply_73"')
      MaterialExpressionEditorX=1968
      MaterialExpressionEditorY=-2384
      MaterialExpressionGuid=29431FC64BDAC02C8A02208A2D09816E
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionAppendVector'MaterialExpressionAppendVector_0'
   Pins(0)=EdGraphPin'EdGraphPin_2942'
   Pins(1)=EdGraphPin'EdGraphPin_2943'
   Pins(2)=EdGraphPin'EdGraphPin_2944'
   NodePosX=1968
   NodePosY=-2384
   ErrorType=1
   ErrorMsg="Missing AppendVector input B"
   NodeGuid=230776734BA5355D1187288E62890C2B
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_149"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2947"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2946"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2945"
   End Object
   Begin Object Class=MaterialExpressionDistance Name="MaterialExpressionDistance_0"
   End Object
   Begin Object Name="EdGraphPin_2947"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_151.EdGraphPin_2950"'
   End Object
   Begin Object Name="EdGraphPin_2946"
      PinName="B"
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_150.EdGraphPin_2948"'
   End Object
   Begin Object Name="EdGraphPin_2945"
      PinName="A"
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_148.EdGraphPin_2944"'
   End Object
   Begin Object Name="MaterialExpressionDistance_0"
      A=(Expression=MaterialExpressionAppendVector'"MaterialGraphNode_148.MaterialExpressionAppendVector_0"')
      B=(Expression=MaterialExpressionConstant'"MaterialGraphNode_150.MaterialExpressionConstant_0"')
      MaterialExpressionEditorX=2080
      MaterialExpressionEditorY=-2368
      MaterialExpressionGuid=E4D1D3B642F092600311F8BCD8C49FC5
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionDistance'MaterialExpressionDistance_0'
   Pins(0)=EdGraphPin'EdGraphPin_2945'
   Pins(1)=EdGraphPin'EdGraphPin_2946'
   Pins(2)=EdGraphPin'EdGraphPin_2947'
   NodePosX=2080
   NodePosY=-2368
   NodeGuid=B68E530F4C5871E333E10794515224AB
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_150"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2948"
   End Object
   Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_0"
   End Object
   Begin Object Name="EdGraphPin_2948"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_149.EdGraphPin_2946"'
   End Object
   Begin Object Name="MaterialExpressionConstant_0"
      MaterialExpressionEditorX=2000
      MaterialExpressionEditorY=-2288
      MaterialExpressionGuid=FFBAF88143BD4D8FF509B8950A69C957
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionConstant'MaterialExpressionConstant_0'
   Pins(0)=EdGraphPin'EdGraphPin_2948'
   NodePosX=2000
   NodePosY=-2288
   NodeGuid=1295298D4F4524B475E7A3B304695D02
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_151"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2951"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2950"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2949"
   End Object
   Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_0"
   End Object
   Begin Object Name="EdGraphPin_2951"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_157.EdGraphPin_2970"'
   End Object
   Begin Object Name="EdGraphPin_2950"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_149.EdGraphPin_2947"'
   End Object
   Begin Object Name="EdGraphPin_2949"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_147.EdGraphPin_2941"'
   End Object
   Begin Object Name="MaterialExpressionDivide_0"
      A=(Expression=MaterialExpressionAbs'"MaterialGraphNode_147.MaterialExpressionAbs_0"')
      B=(Expression=MaterialExpressionDistance'"MaterialGraphNode_149.MaterialExpressionDistance_0"')
      MaterialExpressionEditorX=2192
      MaterialExpressionEditorY=-2416
      MaterialExpressionGuid=EF25D7594AF2E41188CBDBBB9C61CCE4
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionDivide'MaterialExpressionDivide_0'
   Pins(0)=EdGraphPin'EdGraphPin_2949'
   Pins(1)=EdGraphPin'EdGraphPin_2950'
   Pins(2)=EdGraphPin'EdGraphPin_2951'
   NodePosX=2192
   NodePosY=-2416
   NodeGuid=40E86F70420EBD3C60BF52BCD8852780
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_152"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2956"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2955"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2954"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2953"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2952"
   End Object
   Begin Object Class=MaterialExpressionVectorParameter Name="MaterialExpressionVectorParameter_0"
   End Object
   Begin Object Name="EdGraphPin_2956"
      PinName="Output5"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="alpha")
   End Object
   Begin Object Name="EdGraphPin_2955"
      PinName="Output4"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="blue")
   End Object
   Begin Object Name="EdGraphPin_2954"
      PinName="Output3"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="green")
   End Object
   Begin Object Name="EdGraphPin_2953"
      PinName="Output2"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="red")
   End Object
   Begin Object Name="EdGraphPin_2952"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_125.EdGraphPin_2879"'
   End Object
   Begin Object Name="MaterialExpressionVectorParameter_0"
      DefaultValue=(R=0.000000,G=0.000000,B=1.000000,A=0.000000)
      ParameterName="GraphColor"
      ExpressionGUID=3B05B40248678D691C7DF398C9136C96
      MaterialExpressionEditorX=2496
      MaterialExpressionEditorY=-2608
      MaterialExpressionGuid=C4D2E4DA49C2EA389D59BA8BF890BE0E
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionVectorParameter'MaterialExpressionVectorParameter_0'
   Pins(0)=EdGraphPin'EdGraphPin_2952'
   Pins(1)=EdGraphPin'EdGraphPin_2953'
   Pins(2)=EdGraphPin'EdGraphPin_2954'
   Pins(3)=EdGraphPin'EdGraphPin_2955'
   Pins(4)=EdGraphPin'EdGraphPin_2956'
   NodePosX=2496
   NodePosY=-2608
   bCanRenameNode=True
   NodeGuid=BF8FB03F4861C06657B82193A4979E42
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_154"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2964"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2963"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2962"
   End Object
   Begin Object Class=MaterialExpressionPower Name="MaterialExpressionPower_17"
   End Object
   Begin Object Name="EdGraphPin_2964"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_155.EdGraphPin_2965"'
   End Object
   Begin Object Name="EdGraphPin_2963"
      PinName="Exp"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_156.EdGraphPin_2969"'
   End Object
   Begin Object Name="EdGraphPin_2962"
      PinName="Base"
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_157.EdGraphPin_2972"'
   End Object
   Begin Object Name="MaterialExpressionPower_17"
      Base=(Expression=MaterialExpressionDivide'"MaterialGraphNode_157.MaterialExpressionDivide_1"')
      Exponent=(Expression=MaterialExpressionScalarParameter'"MaterialGraphNode_156.MaterialExpressionScalarParameter_5"')
      ConstExponent=8.000000
      MaterialExpressionEditorX=2384
      MaterialExpressionEditorY=-2416
      MaterialExpressionGuid=9BBE35DB4ACC683B0BE1CFA878381DDD
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionPower'MaterialExpressionPower_17'
   Pins(0)=EdGraphPin'EdGraphPin_2962'
   Pins(1)=EdGraphPin'EdGraphPin_2963'
   Pins(2)=EdGraphPin'EdGraphPin_2964'
   NodePosX=2384
   NodePosY=-2416
   NodeGuid=9A37DDA94A9A38AE850953993A5177CD
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_155"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2968"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2967"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2966"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2965"
   End Object
   Begin Object Class=MaterialExpressionClamp Name="MaterialExpressionClamp_0"
   End Object
   Begin Object Name="EdGraphPin_2968"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_125.EdGraphPin_2881"'
   End Object
   Begin Object Name="EdGraphPin_2967"
      PinName="Max"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_2966"
      PinName="Min"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_2965"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_154.EdGraphPin_2964"'
   End Object
   Begin Object Name="MaterialExpressionClamp_0"
      Input=(Expression=MaterialExpressionPower'"MaterialGraphNode_154.MaterialExpressionPower_17"')
      MaterialExpressionEditorX=2496
      MaterialExpressionEditorY=-2416
      MaterialExpressionGuid=C4A5986649F6FF8525C96EACFEDA5A76
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionClamp'MaterialExpressionClamp_0'
   Pins(0)=EdGraphPin'EdGraphPin_2965'
   Pins(1)=EdGraphPin'EdGraphPin_2966'
   Pins(2)=EdGraphPin'EdGraphPin_2967'
   Pins(3)=EdGraphPin'EdGraphPin_2968'
   NodePosX=2496
   NodePosY=-2416
   NodeGuid=8840898142D50E1D2D062DA1FD2FC113
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_156"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2969"
   End Object
   Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_5"
   End Object
   Begin Object Name="EdGraphPin_2969"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_154.EdGraphPin_2963"'
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_5"
      DefaultValue=16.000000
      ParameterName="GraphHardness"
      ExpressionGUID=077BAAEF40E437EDEE4C34B504BE0099
      MaterialExpressionEditorX=2240
      MaterialExpressionEditorY=-2320
      MaterialExpressionGuid=D4DE27734F7C06862DE0CA88DEF2EE15
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_5'
   Pins(0)=EdGraphPin'EdGraphPin_2969'
   NodePosX=2240
   NodePosY=-2320
   bCanRenameNode=True
   NodeGuid=2F8B071B47080DD09C541B83A7508C1F
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_157"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2972"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2971"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_2970"
   End Object
   Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_1"
   End Object
   Begin Object Name="EdGraphPin_2972"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_154.EdGraphPin_2962"'
   End Object
   Begin Object Name="EdGraphPin_2971"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_158.EdGraphPin_2973"'
   End Object
   Begin Object Name="EdGraphPin_2970"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_151.EdGraphPin_2951"'
   End Object
   Begin Object Name="MaterialExpressionDivide_1"
      A=(Expression=MaterialExpressionDivide'"MaterialGraphNode_151.MaterialExpressionDivide_0"')
      B=(Expression=MaterialExpressionScalarParameter'"MaterialGraphNode_158.MaterialExpressionScalarParameter_6"')
      MaterialExpressionEditorX=2288
      MaterialExpressionEditorY=-2416
      MaterialExpressionGuid=81FB3A604BE8836B362BF3BB8623A27A
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionDivide'MaterialExpressionDivide_1'
   Pins(0)=EdGraphPin'EdGraphPin_2970'
   Pins(1)=EdGraphPin'EdGraphPin_2971'
   Pins(2)=EdGraphPin'EdGraphPin_2972'
   NodePosX=2288
   NodePosY=-2416
   NodeGuid=7A2EAE1647DE8A509B69E0BB60455D8B
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_158"
   Begin Object Class=EdGraphPin Name="EdGraphPin_2973"
   End Object
   Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_6"
   End Object
   Begin Object Name="EdGraphPin_2973"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_157.EdGraphPin_2971"'
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_6"
      DefaultValue=0.025000
      ParameterName="GraphThickness"
      ExpressionGUID=2C0CDBE446700F1D865675B907820982
      MaterialExpressionEditorX=2096
      MaterialExpressionEditorY=-2272
      MaterialExpressionGuid=D4DE27734F7C06862DE0CA88DEF2EE15
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_6'
   Pins(0)=EdGraphPin'EdGraphPin_2973'
   NodePosX=2096
   NodePosY=-2272
   bCanRenameNode=True
   NodeGuid=6D678A06457E0B2A203174836DE981AF
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_174"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3017"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3016"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3015"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3014"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3013"
   End Object
   Begin Object Class=MaterialExpressionVectorParameter Name="MaterialExpressionVectorParameter_1"
   End Object
   Begin Object Name="EdGraphPin_3017"
      PinName="Output5"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="alpha")
   End Object
   Begin Object Name="EdGraphPin_3016"
      PinName="Output4"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="blue")
   End Object
   Begin Object Name="EdGraphPin_3015"
      PinName="Output3"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="green")
   End Object
   Begin Object Name="EdGraphPin_3014"
      PinName="Output2"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="red")
   End Object
   Begin Object Name="EdGraphPin_3013"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_177.EdGraphPin_3023"'
   End Object
   Begin Object Name="MaterialExpressionVectorParameter_1"
      DefaultValue=(R=1.000000,G=1.000000,B=1.000000,A=0.000000)
      ParameterName="BackgroundColor"
      ExpressionGUID=F2500F2F4F5F9A807FDF30ABEB353E35
      MaterialExpressionEditorX=2272
      MaterialExpressionEditorY=-3040
      MaterialExpressionGuid=C4D2E4DA49C2EA389D59BA8BF890BE0E
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionVectorParameter'MaterialExpressionVectorParameter_1'
   Pins(0)=EdGraphPin'EdGraphPin_3013'
   Pins(1)=EdGraphPin'EdGraphPin_3014'
   Pins(2)=EdGraphPin'EdGraphPin_3015'
   Pins(3)=EdGraphPin'EdGraphPin_3016'
   Pins(4)=EdGraphPin'EdGraphPin_3017'
   NodePosX=2272
   NodePosY=-3040
   bCanRenameNode=True
   NodeGuid=F2FA72634B1ADAE47A94C0B87272B94E
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_175"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3020"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3019"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3018"
   End Object
   Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_2"
   End Object
   Begin Object Name="EdGraphPin_3020"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_179.EdGraphPin_3031"'
   End Object
   Begin Object Name="EdGraphPin_3019"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_188.EdGraphPin_3055"'
   End Object
   Begin Object Name="EdGraphPin_3018"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_182.EdGraphPin_3042"'
   End Object
   Begin Object Name="MaterialExpressionDivide_2"
      A=(Expression=MaterialExpressionMin'"MaterialGraphNode_182.MaterialExpressionMin_0"')
      B=(Expression=MaterialExpressionMultiply'"MaterialGraphNode_188.MaterialExpressionMultiply_69"')
      MaterialExpressionEditorX=2208
      MaterialExpressionEditorY=-2848
      MaterialExpressionGuid=FE189CBE40EAC590BDB2E78DDC0F6827
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionDivide'MaterialExpressionDivide_2'
   Pins(0)=EdGraphPin'EdGraphPin_3018'
   Pins(1)=EdGraphPin'EdGraphPin_3019'
   Pins(2)=EdGraphPin'EdGraphPin_3020'
   NodePosX=2208
   NodePosY=-2848
   NodeGuid=6B8FEB634C35631B9956B0AB15312242
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_176"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3021"
   End Object
   Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_7"
   End Object
   Begin Object Name="EdGraphPin_3021"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_188.EdGraphPin_3054"'
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_7"
      DefaultValue=0.020000
      ParameterName="GridThickness"
      ExpressionGUID=7570922F4EE222DE27CAA6A05F4C528B
      MaterialExpressionEditorX=1952
      MaterialExpressionEditorY=-2736
      MaterialExpressionGuid=D4DE27734F7C06862DE0CA88DEF2EE15
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_7'
   Pins(0)=EdGraphPin'EdGraphPin_3021'
   NodePosX=1952
   NodePosY=-2736
   bCanRenameNode=True
   NodeGuid=5171A3B94995E340AC02BDA6D6A5FC9B
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_177"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3025"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3024"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3023"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3022"
   End Object
   Begin Object Class=MaterialExpressionLinearInterpolate Name="MaterialExpressionLinearInterpolate_1"
   End Object
   Begin Object Name="EdGraphPin_3025"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_125.EdGraphPin_2880"'
   End Object
   Begin Object Name="EdGraphPin_3024"
      PinName="Alpha"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_180.EdGraphPin_3037"'
   End Object
   Begin Object Name="EdGraphPin_3023"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_174.EdGraphPin_3013"'
   End Object
   Begin Object Name="EdGraphPin_3022"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_178.EdGraphPin_3026"'
   End Object
   Begin Object Name="MaterialExpressionLinearInterpolate_1"
      A=(Expression=MaterialExpressionVectorParameter'"MaterialGraphNode_178.MaterialExpressionVectorParameter_2"',Mask=1,MaskR=1,MaskG=1,MaskB=1)
      B=(Expression=MaterialExpressionVectorParameter'"MaterialGraphNode_174.MaterialExpressionVectorParameter_1"',Mask=1,MaskR=1,MaskG=1,MaskB=1)
      Alpha=(Expression=MaterialExpressionClamp'"MaterialGraphNode_180.MaterialExpressionClamp_1"')
      MaterialExpressionEditorX=2656
      MaterialExpressionEditorY=-2880
      MaterialExpressionGuid=D8601F9D4D14FA1AC61FA4AA1B8EA8EB
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionLinearInterpolate'MaterialExpressionLinearInterpolate_1'
   Pins(0)=EdGraphPin'EdGraphPin_3022'
   Pins(1)=EdGraphPin'EdGraphPin_3023'
   Pins(2)=EdGraphPin'EdGraphPin_3024'
   Pins(3)=EdGraphPin'EdGraphPin_3025'
   NodePosX=2656
   NodePosY=-2880
   NodeGuid=2D6922B94D7D626DC7AE268010C8971A
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_178"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3030"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3029"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3028"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3027"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3026"
   End Object
   Begin Object Class=MaterialExpressionVectorParameter Name="MaterialExpressionVectorParameter_2"
   End Object
   Begin Object Name="EdGraphPin_3030"
      PinName="Output5"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="alpha")
   End Object
   Begin Object Name="EdGraphPin_3029"
      PinName="Output4"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="blue")
   End Object
   Begin Object Name="EdGraphPin_3028"
      PinName="Output3"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="green")
   End Object
   Begin Object Name="EdGraphPin_3027"
      PinName="Output2"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="red")
   End Object
   Begin Object Name="EdGraphPin_3026"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_177.EdGraphPin_3022"'
   End Object
   Begin Object Name="MaterialExpressionVectorParameter_2"
      DefaultValue=(R=0.050000,G=0.050000,B=0.050000,A=0.000000)
      ParameterName="GridColor"
      ExpressionGUID=6F7598714B17835A7A7EBC96C19AF87D
      MaterialExpressionEditorX=2432
      MaterialExpressionEditorY=-3040
      MaterialExpressionGuid=C4D2E4DA49C2EA389D59BA8BF890BE0E
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionVectorParameter'MaterialExpressionVectorParameter_2'
   Pins(0)=EdGraphPin'EdGraphPin_3026'
   Pins(1)=EdGraphPin'EdGraphPin_3027'
   Pins(2)=EdGraphPin'EdGraphPin_3028'
   Pins(3)=EdGraphPin'EdGraphPin_3029'
   Pins(4)=EdGraphPin'EdGraphPin_3030'
   NodePosX=2432
   NodePosY=-3040
   bCanRenameNode=True
   NodeGuid=39F1F04F48C6BA410F8CAAB169FAB09A
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_179"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3033"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3032"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3031"
   End Object
   Begin Object Class=MaterialExpressionPower Name="MaterialExpressionPower_18"
   End Object
   Begin Object Name="EdGraphPin_3033"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_180.EdGraphPin_3034"'
   End Object
   Begin Object Name="EdGraphPin_3032"
      PinName="Exp"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_3031"
      PinName="Base"
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_175.EdGraphPin_3020"'
   End Object
   Begin Object Name="MaterialExpressionPower_18"
      Base=(Expression=MaterialExpressionDivide'"MaterialGraphNode_175.MaterialExpressionDivide_2"')
      ConstExponent=32.000000
      MaterialExpressionEditorX=2304
      MaterialExpressionEditorY=-2848
      MaterialExpressionGuid=7C95D85047738524A26547AFD9F50C0C
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionPower'MaterialExpressionPower_18'
   Pins(0)=EdGraphPin'EdGraphPin_3031'
   Pins(1)=EdGraphPin'EdGraphPin_3032'
   Pins(2)=EdGraphPin'EdGraphPin_3033'
   NodePosX=2304
   NodePosY=-2848
   NodeGuid=29944A1E458FD9FEFFC3A3975AE1A963
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_180"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3037"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3036"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3035"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3034"
   End Object
   Begin Object Class=MaterialExpressionClamp Name="MaterialExpressionClamp_1"
   End Object
   Begin Object Name="EdGraphPin_3037"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_177.EdGraphPin_3024"'
   End Object
   Begin Object Name="EdGraphPin_3036"
      PinName="Max"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_3035"
      PinName="Min"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_3034"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_179.EdGraphPin_3033"'
   End Object
   Begin Object Name="MaterialExpressionClamp_1"
      Input=(Expression=MaterialExpressionPower'"MaterialGraphNode_179.MaterialExpressionPower_18"')
      MaterialExpressionEditorX=2432
      MaterialExpressionEditorY=-2848
      MaterialExpressionGuid=0926A415429DA808FCA904B8159CB6DF
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionClamp'MaterialExpressionClamp_1'
   Pins(0)=EdGraphPin'EdGraphPin_3034'
   Pins(1)=EdGraphPin'EdGraphPin_3035'
   Pins(2)=EdGraphPin'EdGraphPin_3036'
   Pins(3)=EdGraphPin'EdGraphPin_3037'
   NodePosX=2432
   NodePosY=-2848
   NodeGuid=98C9DD3C4F0F5CD33AED389E83A2157D
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_181"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3039"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3038"
   End Object
   Begin Object Class=MaterialExpressionAbs Name="MaterialExpressionAbs_1"
   End Object
   Begin Object Name="EdGraphPin_3039"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_186.EdGraphPin_3049"'
   End Object
   Begin Object Name="EdGraphPin_3038"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_130.EdGraphPin_2893"'
   End Object
   Begin Object Name="MaterialExpressionAbs_1"
      Input=(Expression=MaterialExpressionMultiply'"MaterialGraphNode_130.MaterialExpressionMultiply_67"')
      MaterialExpressionEditorX=1680
      MaterialExpressionEditorY=-2848
      MaterialExpressionGuid=A404819445CCEA8D57CF87BD8C1A3804
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionAbs'MaterialExpressionAbs_1'
   Pins(0)=EdGraphPin'EdGraphPin_3038'
   Pins(1)=EdGraphPin'EdGraphPin_3039'
   NodePosX=1680
   NodePosY=-2848
   NodeGuid=799899E349F1C806DE091590676B8891
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_182"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3042"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3041"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3040"
   End Object
   Begin Object Class=MaterialExpressionMin Name="MaterialExpressionMin_0"
   End Object
   Begin Object Name="EdGraphPin_3042"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_175.EdGraphPin_3018"'
   End Object
   Begin Object Name="EdGraphPin_3041"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_184.EdGraphPin_3046"'
   End Object
   Begin Object Name="EdGraphPin_3040"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_185.EdGraphPin_3048"'
   End Object
   Begin Object Name="MaterialExpressionMin_0"
      A=(Expression=MaterialExpressionComponentMask'"MaterialGraphNode_185.MaterialExpressionComponentMask_3"')
      B=(Expression=MaterialExpressionComponentMask'"MaterialGraphNode_184.MaterialExpressionComponentMask_2"')
      MaterialExpressionEditorX=2112
      MaterialExpressionEditorY=-2848
      MaterialExpressionGuid=3638CFC6480F0E241D4E0AB7450C1BA6
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionMin'MaterialExpressionMin_0'
   Pins(0)=EdGraphPin'EdGraphPin_3040'
   Pins(1)=EdGraphPin'EdGraphPin_3041'
   Pins(2)=EdGraphPin'EdGraphPin_3042'
   NodePosX=2112
   NodePosY=-2848
   NodeGuid=6B063AC74852788AEFC23E9EFEF2D900
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_183"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3044"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3043"
   End Object
   Begin Object Class=MaterialExpressionFrac Name="MaterialExpressionFrac_0"
   End Object
   Begin Object Name="EdGraphPin_3044"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_184.EdGraphPin_3045"'
      LinkedTo(1)=EdGraphPin'"MaterialGraphNode_185.EdGraphPin_3047"'
   End Object
   Begin Object Name="EdGraphPin_3043"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_186.EdGraphPin_3051"'
   End Object
   Begin Object Name="MaterialExpressionFrac_0"
      Input=(Expression=MaterialExpressionMultiply'"MaterialGraphNode_186.MaterialExpressionMultiply_68"')
      MaterialExpressionEditorX=1888
      MaterialExpressionEditorY=-2848
      MaterialExpressionGuid=EB22DFCE4F32F8E8821AC4B21D0C7928
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionFrac'MaterialExpressionFrac_0'
   Pins(0)=EdGraphPin'EdGraphPin_3043'
   Pins(1)=EdGraphPin'EdGraphPin_3044'
   NodePosX=1888
   NodePosY=-2848
   NodeGuid=8975923041889FF738EE3A89C3BF1B64
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_184"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3046"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3045"
   End Object
   Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_2"
   End Object
   Begin Object Name="EdGraphPin_3046"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_182.EdGraphPin_3041"'
   End Object
   Begin Object Name="EdGraphPin_3045"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_183.EdGraphPin_3044"'
   End Object
   Begin Object Name="MaterialExpressionComponentMask_2"
      Input=(Expression=MaterialExpressionFrac'"MaterialGraphNode_183.MaterialExpressionFrac_0"')
      G=True
      MaterialExpressionEditorX=1984
      MaterialExpressionEditorY=-2800
      MaterialExpressionGuid=10348C6A403D6462792466AECE436EB3
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionComponentMask'MaterialExpressionComponentMask_2'
   Pins(0)=EdGraphPin'EdGraphPin_3045'
   Pins(1)=EdGraphPin'EdGraphPin_3046'
   NodePosX=1984
   NodePosY=-2800
   NodeGuid=A2057E7E4147F37C4218C385F09ED7D7
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_185"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3048"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3047"
   End Object
   Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_3"
   End Object
   Begin Object Name="EdGraphPin_3048"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_182.EdGraphPin_3040"'
   End Object
   Begin Object Name="EdGraphPin_3047"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_183.EdGraphPin_3044"'
   End Object
   Begin Object Name="MaterialExpressionComponentMask_3"
      Input=(Expression=MaterialExpressionFrac'"MaterialGraphNode_183.MaterialExpressionFrac_0"')
      R=True
      MaterialExpressionEditorX=1984
      MaterialExpressionEditorY=-2864
      MaterialExpressionGuid=10348C6A403D6462792466AECE436EB3
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionComponentMask'MaterialExpressionComponentMask_3'
   Pins(0)=EdGraphPin'EdGraphPin_3047'
   Pins(1)=EdGraphPin'EdGraphPin_3048'
   NodePosX=1984
   NodePosY=-2864
   NodeGuid=7FE73FAF44E5E60AFFD8BAB3F85CBAB6
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_186"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3051"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3050"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3049"
   End Object
   Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_68"
   End Object
   Begin Object Name="EdGraphPin_3051"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_183.EdGraphPin_3043"'
   End Object
   Begin Object Name="EdGraphPin_3050"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_187.EdGraphPin_3052"'
   End Object
   Begin Object Name="EdGraphPin_3049"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_181.EdGraphPin_3039"'
   End Object
   Begin Object Name="MaterialExpressionMultiply_68"
      A=(Expression=MaterialExpressionAbs'"MaterialGraphNode_181.MaterialExpressionAbs_1"')
      B=(Expression=MaterialExpressionScalarParameter'"MaterialGraphNode_187.MaterialExpressionScalarParameter_8"')
      MaterialExpressionEditorX=1776
      MaterialExpressionEditorY=-2848
      MaterialExpressionGuid=9AC74333445B02E6F7BDB89590222A61
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionMultiply'MaterialExpressionMultiply_68'
   Pins(0)=EdGraphPin'EdGraphPin_3049'
   Pins(1)=EdGraphPin'EdGraphPin_3050'
   Pins(2)=EdGraphPin'EdGraphPin_3051'
   NodePosX=1776
   NodePosY=-2848
   NodeGuid=EDB550B046391103E93A469DC3D8127B
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_187"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3052"
   End Object
   Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_8"
   End Object
   Begin Object Name="EdGraphPin_3052"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_186.EdGraphPin_3050"'
      LinkedTo(1)=EdGraphPin'"MaterialGraphNode_188.EdGraphPin_3053"'
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_8"
      DefaultValue=1.000000
      ParameterName="Lines"
      ExpressionGUID=570E56FE4C0C58D3720E549EF0BB6799
      MaterialExpressionEditorX=1664
      MaterialExpressionEditorY=-2784
      MaterialExpressionGuid=C715F103431A2B03705620B76B79ACE3
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_8'
   Pins(0)=EdGraphPin'EdGraphPin_3052'
   NodePosX=1664
   NodePosY=-2784
   bCanRenameNode=True
   NodeGuid=B8ABFC45495787783C09CDB1BC7DBD74
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_188"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3055"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3054"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3053"
   End Object
   Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_69"
   End Object
   Begin Object Name="EdGraphPin_3055"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_175.EdGraphPin_3019"'
   End Object
   Begin Object Name="EdGraphPin_3054"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_176.EdGraphPin_3021"'
   End Object
   Begin Object Name="EdGraphPin_3053"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_187.EdGraphPin_3052"'
   End Object
   Begin Object Name="MaterialExpressionMultiply_69"
      A=(Expression=MaterialExpressionScalarParameter'"MaterialGraphNode_187.MaterialExpressionScalarParameter_8"')
      B=(Expression=MaterialExpressionScalarParameter'"MaterialGraphNode_176.MaterialExpressionScalarParameter_7"')
      MaterialExpressionEditorX=2096
      MaterialExpressionEditorY=-2752
      MaterialExpressionGuid=44A53934459B9A71484C0CBF04E99415
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionMultiply'MaterialExpressionMultiply_69'
   Pins(0)=EdGraphPin'EdGraphPin_3053'
   Pins(1)=EdGraphPin'EdGraphPin_3054'
   Pins(2)=EdGraphPin'EdGraphPin_3055'
   NodePosX=2096
   NodePosY=-2752
   NodeGuid=AE14F73D4C682AED4C54C3883E8BCF7D
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_228"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3165"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3164"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3163"
   End Object
   Begin Object Class=MaterialExpressionPower Name="MaterialExpressionPower_19"
   End Object
   Begin Object Name="EdGraphPin_3165"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_229.EdGraphPin_3166"'
   End Object
   Begin Object Name="EdGraphPin_3164"
      PinName="Exp"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_3163"
      PinName="Base"
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_127.EdGraphPin_2885"'
   End Object
   Begin Object Name="MaterialExpressionPower_19"
      Base=(Expression=MaterialExpressionComponentMask'"MaterialGraphNode_127.MaterialExpressionComponentMask_0"')
      ConstExponent=3.000000
      MaterialExpressionEditorX=1648
      MaterialExpressionEditorY=-2592
      MaterialExpressionGuid=C9BB52894FCBA253347C8DBBD7C40464
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionPower'MaterialExpressionPower_19'
   Pins(0)=EdGraphPin'EdGraphPin_3163'
   Pins(1)=EdGraphPin'EdGraphPin_3164'
   Pins(2)=EdGraphPin'EdGraphPin_3165'
   NodePosX=1648
   NodePosY=-2592
   ErrorType=1
   ErrorMsg="Missing Power Base input"
   NodeGuid=4C36DE794027054513FA83860E1D3934
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_229"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3168"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3167"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3166"
   End Object
   Begin Object Class=MaterialExpressionSubtract Name="MaterialExpressionSubtract_25"
   End Object
   Begin Object Name="EdGraphPin_3168"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_147.EdGraphPin_2940"'
   End Object
   Begin Object Name="EdGraphPin_3167"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_230.EdGraphPin_3171"'
   End Object
   Begin Object Name="EdGraphPin_3166"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_228.EdGraphPin_3165"'
   End Object
   Begin Object Name="MaterialExpressionSubtract_25"
      A=(Expression=MaterialExpressionPower'"MaterialGraphNode_228.MaterialExpressionPower_19"')
      B=(Expression=MaterialExpressionMultiply'"MaterialGraphNode_230.MaterialExpressionMultiply_70"')
      MaterialExpressionEditorX=1792
      MaterialExpressionEditorY=-2592
      MaterialExpressionGuid=F5781E5E450C6977C64BBE9AB25BFCD5
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionSubtract'MaterialExpressionSubtract_25'
   Pins(0)=EdGraphPin'EdGraphPin_3166'
   Pins(1)=EdGraphPin'EdGraphPin_3167'
   Pins(2)=EdGraphPin'EdGraphPin_3168'
   NodePosX=1792
   NodePosY=-2592
   NodeGuid=D84C03D54FD7C0905B56EFB3D7733B6E
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_230"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3171"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3170"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3169"
   End Object
   Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_70"
   End Object
   Begin Object Name="EdGraphPin_3171"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_229.EdGraphPin_3167"'
   End Object
   Begin Object Name="EdGraphPin_3170"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_128.EdGraphPin_2887"'
   End Object
   Begin Object Name="EdGraphPin_3169"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_128.EdGraphPin_2887"'
   End Object
   Begin Object Name="MaterialExpressionMultiply_70"
      A=(Expression=MaterialExpressionComponentMask'"MaterialGraphNode_128.MaterialExpressionComponentMask_1"')
      B=(Expression=MaterialExpressionComponentMask'"MaterialGraphNode_128.MaterialExpressionComponentMask_1"')
      MaterialExpressionEditorX=1648
      MaterialExpressionEditorY=-2496
      MaterialExpressionGuid=64387C464394450F92A45AA5B57ED8C9
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionMultiply'MaterialExpressionMultiply_70'
   Pins(0)=EdGraphPin'EdGraphPin_3169'
   Pins(1)=EdGraphPin'EdGraphPin_3170'
   Pins(2)=EdGraphPin'EdGraphPin_3171'
   NodePosX=1648
   NodePosY=-2496
   NodeGuid=32BA0F52425AC0BD9735108FAA378DA1
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_231"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3174"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3173"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3172"
   End Object
   Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_71"
   End Object
   Begin Object Name="EdGraphPin_3174"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_232.EdGraphPin_3175"'
   End Object
   Begin Object Name="EdGraphPin_3173"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_127.EdGraphPin_2885"'
   End Object
   Begin Object Name="EdGraphPin_3172"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_127.EdGraphPin_2885"'
   End Object
   Begin Object Name="MaterialExpressionMultiply_71"
      A=(Expression=MaterialExpressionComponentMask'"MaterialGraphNode_127.MaterialExpressionComponentMask_0"')
      B=(Expression=MaterialExpressionComponentMask'"MaterialGraphNode_127.MaterialExpressionComponentMask_0"')
      MaterialExpressionEditorX=1648
      MaterialExpressionEditorY=-2352
      MaterialExpressionGuid=794969A64AAF712A90D282922BC6612F
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
   End Object
   MaterialExpression=MaterialExpressionMultiply'MaterialExpressionMultiply_71'
   Pins(0)=EdGraphPin'EdGraphPin_3172'
   Pins(1)=EdGraphPin'EdGraphPin_3173'
   Pins(2)=EdGraphPin'EdGraphPin_3174'
   NodePosX=1648
   NodePosY=-2352
   NodeGuid=A81E460D4A931CE3EA73C8AF35A28E93
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_232"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3177"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3176"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3175"
   End Object
   Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_72"
   End Object
   Begin Object Name="EdGraphPin_3177"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_148.EdGraphPin_2942"'
   End Object
   Begin Object Name="EdGraphPin_3176"
      PinName="B"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_3175"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_231.EdGraphPin_3174"'
   End Object
   Begin Object Name="MaterialExpressionMultiply_72"
      A=(Expression=MaterialExpressionMultiply'"MaterialGraphNode_231.MaterialExpressionMultiply_71"')
      ConstB=3.000000
      MaterialExpressionEditorX=1760
      MaterialExpressionEditorY=-2352
      MaterialExpressionGuid=841692914149036C955E5FA4003BE1FE
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
      Desc="dx"
   End Object
   MaterialExpression=MaterialExpressionMultiply'MaterialExpressionMultiply_72'
   Pins(0)=EdGraphPin'EdGraphPin_3175'
   Pins(1)=EdGraphPin'EdGraphPin_3176'
   Pins(2)=EdGraphPin'EdGraphPin_3177'
   NodePosX=1760
   NodePosY=-2352
   NodeComment="dx"
   NodeGuid=A402966F4ACBB5CE643FA4A0BFCB7F19
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_233"
   Begin Object Class=EdGraphPin Name="EdGraphPin_3180"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3179"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_3178"
   End Object
   Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_73"
   End Object
   Begin Object Name="EdGraphPin_3180"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_148.EdGraphPin_2943"'
   End Object
   Begin Object Name="EdGraphPin_3179"
      PinName="B"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_3178"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'"MaterialGraphNode_128.EdGraphPin_2887"'
   End Object
   Begin Object Name="MaterialExpressionMultiply_73"
      A=(Expression=MaterialExpressionComponentMask'"MaterialGraphNode_128.MaterialExpressionComponentMask_1"')
      ConstB=2.000000
      MaterialExpressionEditorX=1760
      MaterialExpressionEditorY=-2240
      MaterialExpressionGuid=DFDF5FFE4AF2976AE91CFDB7DBA0B74C
      Material=PreviewMaterial'/Engine/Transient.PreviewMaterial_1'
      Desc="dy"
   End Object
   MaterialExpression=MaterialExpressionMultiply'MaterialExpressionMultiply_73'
   Pins(0)=EdGraphPin'EdGraphPin_3178'
   Pins(1)=EdGraphPin'EdGraphPin_3179'
   Pins(2)=EdGraphPin'EdGraphPin_3180'
   NodePosX=1760
   NodePosY=-2240
   NodeComment="dy"
   NodeGuid=F3DB97734F144BC6AF6843B75B1D330C
End Object




1 comment:

  1. Hi Oliver,

    Thank you for sharing this. The approach is really interesting.
    I have not implemented it but I took several ideas to develop my own function shader. I needed something like that to check the values of variables in a shader. My shader is limited to bijective functions though.
    http://werwackfx.com/index.php/graphictools/ue4-main/ue4-articles/35-shaderwkfunctiondrawer

    Best regards

    ReplyDelete