Friday, December 19, 2014

[Unreal Engine 4] 4.7 Shader Files Changelist

Below you can find a list of all .usf shader files that have been changed for Unreal Engine 4.7.

Most of these changes are based on the following engine additions/modifications:
  • TwoSidedFoliage lighting model
  • SV_Position is now available in the pixel shader (in previous engine versions
    the screen position was derived from world position to save an interpolator)
  • Dithered LOD transitions for instanced meshes 
  • Distance Field Shadowing improvements
  • Metal API related improvements

BasePassForForwardShadingPixelShader
BasePassPixelShader
Common
Definitions
DepthOnlyPixelShader
DistanceFieldLightingShared
DistanceFieldShadowing
DistanceFieldSurfaceCacheLighting
DistanceFieldSurfaceCacheLightingCompute
DistortAccumulatePS
HitProxyPixelShader
LightmapCommon
LightMapDensityShader
LocalVertexFactory
LocalVertexFactoryCommon
MaterialTemplate
MonteCarlo
ParticleGPUSpriteVertexFactory
ParticleSpriteVertexFactory
PostProcessMaterialShaders
PostProcessMotionBlur
PostProcessSubsurface
PostProcessUpscale
ReflectionEnvironmentComputeShaders
ReflectionEnvironmentShaders
SeparableSSS
ShaderVersion
ShadowDepthCommon
ShadowDepthPixelShader
ShadowProjectionCommon
ShadowProjectionPixelShader
SimpleElementPixelShader
SkyLighting
SkyLightingShared
TiledDeferredLightShaders
TranslucentShadowDepthShaders
VelocityShader
VertexFactoryCommon
VisualizeTexture

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




Tuesday, December 2, 2014

[UE4 Quick Tip] Removing Frac Artifacts

So with the (new) possibility to sample textures in a custom node it's also possible again to remove any kind of artifacts caused by non-continuous UVs (e.g. texture cropping/frac coords, polar coords etc...)

Given a texture object (Tex), mapping coordinates (UV) and non-frac coordinates (UV1) this is the HLSL code:
return Tex.SampleGrad(TexSampler,UV,ddx(UV1),ddy(UV1));

Using SampleGrad is 10 instructions cheaper than the 'ComputeMipLevel' material function and also preserves anisotropic filtering, so that's a double win.

Monday, December 1, 2014

[UE4 Quick Tip] Sampling Textures in Custom Nodes

With Unreal Engine 4.6 it's finally possible to sample a texture in a custom node without clumsy workarounds.

Given a texture object (Tex) and some coordinates (UV) this line of code will regularly sample a texture:

return Tex.Sample(TexSampler,UV);


Other sampling types like 'SampleGrad', 'SampleBias' or 'SampleLevel' should work just as fine.