Dynamic blob shadow ?

Alright, since I haven’t heard back, I gave it another spin and made it happen :slight_smile:

I literally recreated material setup from Showdown because I couldn’t wrap my head around the noodles. Then it turned out that ground plane is always fixed. So in order for shadow to show up, I had to tweak it manually and it didn’t really work when there was different floor elevations. So I added BP to adjust that parameter every frame. That worked wonderfully.

Another observation I made was about these fake shadows not acting as decals. So it’s they would be used on a terrain, the edges of the shadow mesh would wedge into terrain and will be clipped. Looks pretty ugly.

Here is what I am talking about:

blob_shadow_clipping.png

Full image: http://s30.postimg.org/lg1hoiv2n/blob_shadow_clipping.png

How can I make attached (via sockets) static blob shadow meshes to be always parallel to the floor ? (so no matter how model is animated and how the bone rotates, attachment would always remain at its natural angles)

If you know it is always going to be on a flat ground and you know the Z height you could simply use the vertex shader. Take your floor height and subtract WorldPosition.Z. Then multiply by 0,0,1 and hook to worldpositionoffset. Then add like 0,0,2 or something to keep it from zfighting.

For bullettrain I solved it another way, using the vertex shader to shrink to the foot position and then re-expand along flattened local vectors.

To support slopes the easiest method is oversized geometry and using the worldposition behind translucency.

Well, I assume that’s what big robot blob shadow does in Showdown VR demo, doesn’t it?

Could you please post the material for such blob shadow? :o (assuming it’s mobile friendly)

Well, as you can see my shadow plane is oversized, but it clips into the floor instead of render over it (as if it’s a decal). I still can’t find any examples or docs/tutorials about “worldposition behind translucency”. I’ll post my material setup after work and I wonder if you could modify it with “worldposition behind translucency” so I could have final piece of the puzzle with blob shadows solved and move on :o (and whoever else needs it would find an out-of-the-box solution useful). Could you please do that ?

Sorry by oversized geometry I meant in full 3d… your plane is flat so it never gets oversized on Z, you need it to be encompassing the entire volume around the characters foot.

I will try to get an image soon of that but I promise its literally just WorldPositionBehindTranslucency and then you subtract objectposition and then you divide by whatever your shadow size needs to be. Then you add 0.5 since UVs are in 0-1 not -1 to 1 (since subtracting objectposition puts the center at 0 not 0.5).

oh and component mask the RG channels before hooking up to texture UVs.

Probably late, but here is my master material for blob shadow:



Begin Object Class=MaterialGraphNode_Root Name="MaterialGraphNode_Root_0"
   Begin Object Class=EdGraphPin Name="EdGraphPin_31082"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31083"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31084"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31085"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31086"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31087"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31088"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31089"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31090"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31091"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31092"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31093"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31094"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31095"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31096"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31097"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31098"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31099"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31100"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31101"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31102"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31103"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31104"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31105"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31106"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31107"
   End Object
   Begin Object Name="EdGraphPin_31082"
      PinName="Base Color"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31083"
      PinName="Metallic"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31084"
      PinName="Specular"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31085"
      PinName="Roughness"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31086"
      PinName="Emissive Color"
      PinType=(PinCategory="materialinput")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_0.EdGraphPin_31111'
   End Object
   Begin Object Name="EdGraphPin_31087"
      PinName="Opacity"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31088"
      PinName="Opacity Mask"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31089"
      PinName="Normal"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31090"
      PinName="World Position Offset"
      PinType=(PinCategory="materialinput")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_1.EdGraphPin_31114'
   End Object
   Begin Object Name="EdGraphPin_31091"
      PinName="World Displacement"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31092"
      PinName="Tessellation Multiplier"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31093"
      PinName="Subsurface Color"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31094"
      PinName="Custom Data 0"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31095"
      PinName="Custom Data 1"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31096"
      PinName="Ambient Occlusion"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31097"
      PinName="Refraction"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31098"
      PinName="Customized UV0"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31099"
      PinName="Customized UV1"
      PinType=(PinCategory="materialinput")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_2.EdGraphPin_31116'
   End Object
   Begin Object Name="EdGraphPin_31100"
      PinName="Customized UV2"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31101"
      PinName="Customized UV3"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31102"
      PinName="Customized UV4"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31103"
      PinName="Customized UV5"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31104"
      PinName="Customized UV6"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31105"
      PinName="Customized UV7"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31106"
      PinName="Pixel Depth Offset"
      PinType=(PinCategory="materialinput")
   End Object
   Begin Object Name="EdGraphPin_31107"
      PinName="Material Attributes"
      PinType=(PinCategory="materialinput")
   End Object
   Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   Pins(0)=EdGraphPin'EdGraphPin_31082'
   Pins(1)=EdGraphPin'EdGraphPin_31083'
   Pins(2)=EdGraphPin'EdGraphPin_31084'
   Pins(3)=EdGraphPin'EdGraphPin_31085'
   Pins(4)=EdGraphPin'EdGraphPin_31086'
   Pins(5)=EdGraphPin'EdGraphPin_31087'
   Pins(6)=EdGraphPin'EdGraphPin_31088'
   Pins(7)=EdGraphPin'EdGraphPin_31089'
   Pins(8)=EdGraphPin'EdGraphPin_31090'
   Pins(9)=EdGraphPin'EdGraphPin_31091'
   Pins(10)=EdGraphPin'EdGraphPin_31092'
   Pins(11)=EdGraphPin'EdGraphPin_31093'
   Pins(12)=EdGraphPin'EdGraphPin_31094'
   Pins(13)=EdGraphPin'EdGraphPin_31095'
   Pins(14)=EdGraphPin'EdGraphPin_31096'
   Pins(15)=EdGraphPin'EdGraphPin_31097'
   Pins(16)=EdGraphPin'EdGraphPin_31098'
   Pins(17)=EdGraphPin'EdGraphPin_31099'
   Pins(18)=EdGraphPin'EdGraphPin_31100'
   Pins(19)=EdGraphPin'EdGraphPin_31101'
   Pins(20)=EdGraphPin'EdGraphPin_31102'
   Pins(21)=EdGraphPin'EdGraphPin_31103'
   Pins(22)=EdGraphPin'EdGraphPin_31104'
   Pins(23)=EdGraphPin'EdGraphPin_31105'
   Pins(24)=EdGraphPin'EdGraphPin_31106'
   Pins(25)=EdGraphPin'EdGraphPin_31107'
   NodePosX=896
   NodePosY=-176
   NodeGuid=50B259E94AAB0974CB3A1C9FC7D702B7
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_0"
   Begin Object Class=MaterialExpressionLinearInterpolate Name="MaterialExpressionLinearInterpolate_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31108"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31109"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31110"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31111"
   End Object
   Begin Object Name="MaterialExpressionLinearInterpolate_0"
      B=(Expression=MaterialExpressionLinearInterpolate'MaterialGraphNode_5.MaterialExpressionLinearInterpolate_1')
      Alpha=(Expression=MaterialExpressionComponentMask'MaterialGraphNode_8.MaterialExpressionComponentMask_0')
      ConstA=1.000000
      MaterialExpressionEditorX=-48
      MaterialExpressionEditorY=-240
      MaterialExpressionGuid=D5CA1B0948FB6B2996B9D19290F348E6
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
      bCollapsed=False
   End Object
   Begin Object Name="EdGraphPin_31108"
      PinName="A"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_31109"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_5.EdGraphPin_31130'
   End Object
   Begin Object Name="EdGraphPin_31110"
      PinName="Alpha"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_8.EdGraphPin_31134'
   End Object
   Begin Object Name="EdGraphPin_31111"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_Root_0.EdGraphPin_31086'
   End Object
   MaterialExpression=MaterialExpressionLinearInterpolate'MaterialExpressionLinearInterpolate_0'
   Pins(0)=EdGraphPin'EdGraphPin_31108'
   Pins(1)=EdGraphPin'EdGraphPin_31109'
   Pins(2)=EdGraphPin'EdGraphPin_31110'
   Pins(3)=EdGraphPin'EdGraphPin_31111'
   NodePosX=-48
   NodePosY=-240
   NodeGuid=1E0AC6194B7289CA5EC22D903E9AF73C
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_1"
   Begin Object Class=MaterialExpressionAdd Name="MaterialExpressionAdd_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31112"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31113"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31114"
   End Object
   Begin Object Name="MaterialExpressionAdd_0"
      A=(Expression=MaterialExpressionMultiply'MaterialGraphNode_26.MaterialExpressionMultiply_0')
      B=(Expression=MaterialExpressionAppendVector'MaterialGraphNode_11.MaterialExpressionAppendVector_0')
      MaterialExpressionEditorX=496
      MaterialExpressionEditorY=288
      MaterialExpressionGuid=F8AC9EF34146029C5B2A2596DDD62F5C
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31112"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_26.EdGraphPin_31172'
   End Object
   Begin Object Name="EdGraphPin_31113"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_11.EdGraphPin_31139'
   End Object
   Begin Object Name="EdGraphPin_31114"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_Root_0.EdGraphPin_31090'
   End Object
   MaterialExpression=MaterialExpressionAdd'MaterialExpressionAdd_0'
   Pins(0)=EdGraphPin'EdGraphPin_31112'
   Pins(1)=EdGraphPin'EdGraphPin_31113'
   Pins(2)=EdGraphPin'EdGraphPin_31114'
   NodePosX=496
   NodePosY=288
   NodeGuid=E6B6AA72450C0D35C6BAF79DBA0B08A6
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_2"
   Begin Object Class=MaterialExpressionOneMinus Name="MaterialExpressionOneMinus_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31115"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31116"
   End Object
   Begin Object Name="MaterialExpressionOneMinus_0"
      Input=(Expression=MaterialExpressionClamp'MaterialGraphNode_25.MaterialExpressionClamp_0')
      MaterialExpressionEditorX=304
      MaterialExpressionEditorY=32
      MaterialExpressionGuid=36CD504A4EFD5CA75AD87FBCD15D4AA6
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31115"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_25.EdGraphPin_31169'
   End Object
   Begin Object Name="EdGraphPin_31116"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_Root_0.EdGraphPin_31099'
      LinkedTo(1)=EdGraphPin'MaterialGraphNode_27.EdGraphPin_31173'
   End Object
   MaterialExpression=MaterialExpressionOneMinus'MaterialExpressionOneMinus_0'
   Pins(0)=EdGraphPin'EdGraphPin_31115'
   Pins(1)=EdGraphPin'EdGraphPin_31116'
   NodePosX=304
   NodePosY=32
   NodeGuid=A59F0C6D42C3F863B3F8019B66A34167
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_3"
   Begin Object Class=MaterialExpressionSubtract Name="MaterialExpressionSubtract_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31117"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31118"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31119"
   End Object
   Begin Object Name="MaterialExpressionSubtract_0"
      A=(Expression=MaterialExpressionWorldPosition'MaterialGraphNode_10.MaterialExpressionWorldPosition_0')
      B=(Expression=MaterialExpressionObjectPositionWS'MaterialGraphNode_9.MaterialExpressionObjectPositionWS_0')
      MaterialExpressionEditorX=-288
      MaterialExpressionEditorY=432
      MaterialExpressionGuid=898373D749BF512C1D5D73B3B27F94B9
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31117"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_10.EdGraphPin_31136'
   End Object
   Begin Object Name="EdGraphPin_31118"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_9.EdGraphPin_31135'
   End Object
   Begin Object Name="EdGraphPin_31119"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_26.EdGraphPin_31170'
   End Object
   MaterialExpression=MaterialExpressionSubtract'MaterialExpressionSubtract_0'
   Pins(0)=EdGraphPin'EdGraphPin_31117'
   Pins(1)=EdGraphPin'EdGraphPin_31118'
   Pins(2)=EdGraphPin'EdGraphPin_31119'
   NodePosX=-288
   NodePosY=432
   NodeGuid=EF4D598E4662761962B028A7764B78BD
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_4"
   Begin Object Class=MaterialExpressionTextureSample Name="MaterialExpressionTextureSample_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31120"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31121"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31122"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31123"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31124"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31125"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31126"
   End Object
   Begin Object Name="MaterialExpressionTextureSample_0"
      Texture=Texture2D'/Game/Textures/Effects/blob_shadow.blob_shadow'
      MaterialExpressionEditorX=-448
      MaterialExpressionEditorY=-448
      MaterialExpressionGuid=4628813B40FB32C2051171AA3E1FE589
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31120"
      PinName="UVs"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_31121"
      PinName="Tex"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_31122"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask")
   End Object
   Begin Object Name="EdGraphPin_31123"
      PinName="Output2"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="red")
   End Object
   Begin Object Name="EdGraphPin_31124"
      PinName="Output3"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="green")
   End Object
   Begin Object Name="EdGraphPin_31125"
      PinName="Output4"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="blue")
   End Object
   Begin Object Name="EdGraphPin_31126"
      PinName="Output5"
      PinFriendlyName=" "
      Direction=EGPD_Output
      PinType=(PinCategory="mask",PinSubCategory="alpha")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_5.EdGraphPin_31129'
   End Object
   MaterialExpression=MaterialExpressionTextureSample'MaterialExpressionTextureSample_0'
   Pins(0)=EdGraphPin'EdGraphPin_31120'
   Pins(1)=EdGraphPin'EdGraphPin_31121'
   Pins(2)=EdGraphPin'EdGraphPin_31122'
   Pins(3)=EdGraphPin'EdGraphPin_31123'
   Pins(4)=EdGraphPin'EdGraphPin_31124'
   Pins(5)=EdGraphPin'EdGraphPin_31125'
   Pins(6)=EdGraphPin'EdGraphPin_31126'
   NodePosX=-448
   NodePosY=-448
   NodeGuid=9CFEB2A8421B6094828B2E9DED12200C
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_5"
   Begin Object Class=MaterialExpressionLinearInterpolate Name="MaterialExpressionLinearInterpolate_1"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31127"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31128"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31129"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31130"
   End Object
   Begin Object Name="MaterialExpressionLinearInterpolate_1"
      A=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_6.MaterialExpressionScalarParameter_0')
      Alpha=(Expression=MaterialExpressionTextureSample'MaterialGraphNode_4.MaterialExpressionTextureSample_0',OutputIndex=4,Mask=1,MaskA=1)
      ConstAlpha=0.000000
      MaterialExpressionEditorX=-224
      MaterialExpressionEditorY=-416
      MaterialExpressionGuid=D5CA1B0948FB6B2996B9D19290F348E6
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31127"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_6.EdGraphPin_31131'
   End Object
   Begin Object Name="EdGraphPin_31128"
      PinName="B"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_31129"
      PinName="Alpha"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_4.EdGraphPin_31126'
   End Object
   Begin Object Name="EdGraphPin_31130"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_0.EdGraphPin_31109'
   End Object
   MaterialExpression=MaterialExpressionLinearInterpolate'MaterialExpressionLinearInterpolate_1'
   Pins(0)=EdGraphPin'EdGraphPin_31127'
   Pins(1)=EdGraphPin'EdGraphPin_31128'
   Pins(2)=EdGraphPin'EdGraphPin_31129'
   Pins(3)=EdGraphPin'EdGraphPin_31130'
   NodePosX=-224
   NodePosY=-416
   NodeGuid=8BF14F4644ABE624009FD1865DD16C1F
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_6"
   Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31131"
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_0"
      ParameterName="Lerp Min"
      ExpressionGUID=F661A6E344495E057693778F56C7AE3B
      MaterialExpressionEditorX=-384
      MaterialExpressionEditorY=-592
      MaterialExpressionGuid=53F1C2A04B6D6F2D8ED4E6A800803267
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31131"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_5.EdGraphPin_31127'
   End Object
   MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_0'
   Pins(0)=EdGraphPin'EdGraphPin_31131'
   NodePosX=-384
   NodePosY=-592
   bCanRenameNode=True
   NodeGuid=76E17C9D4EB1C3A5C98C538A74BA1C2A
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_7"
   Begin Object Class=MaterialExpressionTextureCoordinate Name="MaterialExpressionTextureCoordinate_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31132"
   End Object
   Begin Object Name="MaterialExpressionTextureCoordinate_0"
      CoordinateIndex=1
      MaterialExpressionEditorX=-448
      MaterialExpressionEditorY=-160
      MaterialExpressionGuid=5C2AFFFB4EC98418F9C57BB7E6AACC97
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31132"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_8.EdGraphPin_31133'
   End Object
   MaterialExpression=MaterialExpressionTextureCoordinate'MaterialExpressionTextureCoordinate_0'
   Pins(0)=EdGraphPin'EdGraphPin_31132'
   NodePosX=-448
   NodePosY=-160
   NodeGuid=3828CF9D4328F76CE61680ABE0807B9A
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_8"
   Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31133"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31134"
   End Object
   Begin Object Name="MaterialExpressionComponentMask_0"
      Input=(Expression=MaterialExpressionTextureCoordinate'MaterialGraphNode_7.MaterialExpressionTextureCoordinate_0')
      R=True
      MaterialExpressionEditorX=-256
      MaterialExpressionEditorY=-160
      MaterialExpressionGuid=20B6F7BB4A3237EF53DB93B4E185DF64
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31133"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_7.EdGraphPin_31132'
   End Object
   Begin Object Name="EdGraphPin_31134"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_0.EdGraphPin_31110'
   End Object
   MaterialExpression=MaterialExpressionComponentMask'MaterialExpressionComponentMask_0'
   Pins(0)=EdGraphPin'EdGraphPin_31133'
   Pins(1)=EdGraphPin'EdGraphPin_31134'
   NodePosX=-256
   NodePosY=-160
   NodeGuid=88FCA67F4796175A5E29AD942ADCFEBF
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_9"
   Begin Object Class=MaterialExpressionObjectPositionWS Name="MaterialExpressionObjectPositionWS_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31135"
   End Object
   Begin Object Name="MaterialExpressionObjectPositionWS_0"
      MaterialExpressionEditorX=-608
      MaterialExpressionEditorY=496
      MaterialExpressionGuid=D20A30584A412EAA6C4A44960F47710D
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31135"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_3.EdGraphPin_31118'
   End Object
   MaterialExpression=MaterialExpressionObjectPositionWS'MaterialExpressionObjectPositionWS_0'
   Pins(0)=EdGraphPin'EdGraphPin_31135'
   NodePosX=-608
   NodePosY=496
   NodeGuid=448A64C74EEF37C65E643EA417C4C3CB
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_10"
   Begin Object Class=MaterialExpressionWorldPosition Name="MaterialExpressionWorldPosition_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31136"
   End Object
   Begin Object Name="MaterialExpressionWorldPosition_0"
      MaterialExpressionEditorX=-832
      MaterialExpressionEditorY=336
      MaterialExpressionGuid=92A0EF3D4CF8C5FC4731378EF343EDFA
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31136"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_3.EdGraphPin_31117'
   End Object
   MaterialExpression=MaterialExpressionWorldPosition'MaterialExpressionWorldPosition_0'
   Pins(0)=EdGraphPin'EdGraphPin_31136'
   NodePosX=-832
   NodePosY=336
   NodeGuid=6ABADD0D404DE5A859CDF6BAB2E5E99F
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_11"
   Begin Object Class=MaterialExpressionAppendVector Name="MaterialExpressionAppendVector_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31137"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31138"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31139"
   End Object
   Begin Object Name="MaterialExpressionAppendVector_0"
      A=(Expression=MaterialExpressionConstant2Vector'MaterialGraphNode_12.MaterialExpressionConstant2Vector_0')
      B=(Expression=MaterialExpressionAdd'MaterialGraphNode_13.MaterialExpressionAdd_1')
      MaterialExpressionEditorX=-96
      MaterialExpressionEditorY=256
      MaterialExpressionGuid=9FADC0C0427B1212E8B3BEA0C1B613D0
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31137"
      PinName="A"
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_12.EdGraphPin_31140'
   End Object
   Begin Object Name="EdGraphPin_31138"
      PinName="B"
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_13.EdGraphPin_31143'
   End Object
   Begin Object Name="EdGraphPin_31139"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_1.EdGraphPin_31113'
   End Object
   MaterialExpression=MaterialExpressionAppendVector'MaterialExpressionAppendVector_0'
   Pins(0)=EdGraphPin'EdGraphPin_31137'
   Pins(1)=EdGraphPin'EdGraphPin_31138'
   Pins(2)=EdGraphPin'EdGraphPin_31139'
   NodePosX=-96
   NodePosY=256
   NodeGuid=5F9C819B44A47C6FC1C008A55D9A1C0E
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_12"
   Begin Object Class=MaterialExpressionConstant2Vector Name="MaterialExpressionConstant2Vector_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31140"
   End Object
   Begin Object Name="MaterialExpressionConstant2Vector_0"
      MaterialExpressionEditorX=-240
      MaterialExpressionEditorY=224
      MaterialExpressionGuid=4F617E1742BA9017306465A0492D4ACA
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31140"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_11.EdGraphPin_31137'
   End Object
   MaterialExpression=MaterialExpressionConstant2Vector'MaterialExpressionConstant2Vector_0'
   Pins(0)=EdGraphPin'EdGraphPin_31140'
   NodePosX=-240
   NodePosY=224
   NodeGuid=104417D54A1539EB16B2C4909EC8CB7D
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_13"
   Begin Object Class=MaterialExpressionAdd Name="MaterialExpressionAdd_1"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31141"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31142"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31143"
   End Object
   Begin Object Name="MaterialExpressionAdd_1"
      A=(Expression=MaterialExpressionComponentMask'MaterialGraphNode_14.MaterialExpressionComponentMask_1')
      B=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_17.MaterialExpressionScalarParameter_1')
      MaterialExpressionEditorX=-864
      MaterialExpressionEditorY=192
      MaterialExpressionGuid=EBE29EC943DFC4A87258F191D5A84EAE
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31141"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_14.EdGraphPin_31145'
   End Object
   Begin Object Name="EdGraphPin_31142"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_17.EdGraphPin_31149'
   End Object
   Begin Object Name="EdGraphPin_31143"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_11.EdGraphPin_31138'
      LinkedTo(1)=EdGraphPin'MaterialGraphNode_20.EdGraphPin_31156'
   End Object
   MaterialExpression=MaterialExpressionAdd'MaterialExpressionAdd_1'
   Pins(0)=EdGraphPin'EdGraphPin_31141'
   Pins(1)=EdGraphPin'EdGraphPin_31142'
   Pins(2)=EdGraphPin'EdGraphPin_31143'
   NodePosX=-864
   NodePosY=192
   NodeGuid=E310D25449AC03D46023FFBC97C071B6
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_14"
   Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_1"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31144"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31145"
   End Object
   Begin Object Name="MaterialExpressionComponentMask_1"
      Input=(Expression=MaterialExpressionOneMinus'MaterialGraphNode_15.MaterialExpressionOneMinus_1')
      B=True
      MaterialExpressionEditorX=-1060
      MaterialExpressionEditorY=79
      MaterialExpressionGuid=696B0E6D43BFAD33833BDAA05D0745C7
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31144"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_15.EdGraphPin_31147'
   End Object
   Begin Object Name="EdGraphPin_31145"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_13.EdGraphPin_31141'
   End Object
   MaterialExpression=MaterialExpressionComponentMask'MaterialExpressionComponentMask_1'
   Pins(0)=EdGraphPin'EdGraphPin_31144'
   Pins(1)=EdGraphPin'EdGraphPin_31145'
   NodePosX=-1060
   NodePosY=79
   NodeGuid=1D85FCB842EDD8C307BB9D8A0417E3F8
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_15"
   Begin Object Class=MaterialExpressionOneMinus Name="MaterialExpressionOneMinus_1"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31146"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31147"
   End Object
   Begin Object Name="MaterialExpressionOneMinus_1"
      Input=(Expression=MaterialExpressionObjectPositionWS'MaterialGraphNode_16.MaterialExpressionObjectPositionWS_1')
      MaterialExpressionEditorX=-1280
      MaterialExpressionEditorY=64
      MaterialExpressionGuid=927AE7C54699CF0227F2A19F2FDD2EE2
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31146"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_16.EdGraphPin_31148'
   End Object
   Begin Object Name="EdGraphPin_31147"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_14.EdGraphPin_31144'
   End Object
   MaterialExpression=MaterialExpressionOneMinus'MaterialExpressionOneMinus_1'
   Pins(0)=EdGraphPin'EdGraphPin_31146'
   Pins(1)=EdGraphPin'EdGraphPin_31147'
   NodePosX=-1280
   NodePosY=64
   NodeGuid=BF48385044B9BBE2463E40A8FE5DC34C
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_16"
   Begin Object Class=MaterialExpressionObjectPositionWS Name="MaterialExpressionObjectPositionWS_1"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31148"
   End Object
   Begin Object Name="MaterialExpressionObjectPositionWS_1"
      MaterialExpressionEditorX=-1568
      MaterialExpressionEditorY=32
      MaterialExpressionGuid=7767DF3948AD93B1407D0DBD29AB4AAA
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31148"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_15.EdGraphPin_31146'
      LinkedTo(1)=EdGraphPin'MaterialGraphNode_18.EdGraphPin_31150'
   End Object
   MaterialExpression=MaterialExpressionObjectPositionWS'MaterialExpressionObjectPositionWS_1'
   Pins(0)=EdGraphPin'EdGraphPin_31148'
   NodePosX=-1568
   NodePosY=32
   NodeGuid=79EE377B48BE370A4B937082F66E76C1
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_17"
   Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_1"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31149"
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_1"
      ParameterName="GroundHeight"
      ExpressionGUID=C52A9D464FF766CA1AC147B071682E57
      MaterialExpressionEditorX=-1472
      MaterialExpressionEditorY=208
      MaterialExpressionGuid=E59C18F5418B38104A9FBD8828A3DAD3
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31149"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_13.EdGraphPin_31142'
      LinkedTo(1)=EdGraphPin'MaterialGraphNode_18.EdGraphPin_31151'
   End Object
   MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_1'
   Pins(0)=EdGraphPin'EdGraphPin_31149'
   NodePosX=-1472
   NodePosY=208
   bCanRenameNode=True
   NodeGuid=8BCE94384674B6BD6198188BE04D16BA
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_18"
   Begin Object Class=MaterialExpressionSubtract Name="MaterialExpressionSubtract_1"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31150"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31151"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31152"
   End Object
   Begin Object Name="MaterialExpressionSubtract_1"
      A=(Expression=MaterialExpressionObjectPositionWS'MaterialGraphNode_16.MaterialExpressionObjectPositionWS_1')
      B=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_17.MaterialExpressionScalarParameter_1')
      MaterialExpressionEditorX=-1120
      MaterialExpressionEditorY=-96
      MaterialExpressionGuid=785ADAB24BC6F03ADF5795B67F65A418
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31150"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_16.EdGraphPin_31148'
   End Object
   Begin Object Name="EdGraphPin_31151"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_17.EdGraphPin_31149'
   End Object
   Begin Object Name="EdGraphPin_31152"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_19.EdGraphPin_31153'
   End Object
   MaterialExpression=MaterialExpressionSubtract'MaterialExpressionSubtract_1'
   Pins(0)=EdGraphPin'EdGraphPin_31150'
   Pins(1)=EdGraphPin'EdGraphPin_31151'
   Pins(2)=EdGraphPin'EdGraphPin_31152'
   NodePosX=-1120
   NodePosY=-96
   NodeGuid=616D418A4C156014F3E30585BDE88042
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_19"
   Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_2"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31153"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31154"
   End Object
   Begin Object Name="MaterialExpressionComponentMask_2"
      Input=(Expression=MaterialExpressionSubtract'MaterialGraphNode_18.MaterialExpressionSubtract_1')
      B=True
      MaterialExpressionEditorX=-861
      MaterialExpressionEditorY=-59
      MaterialExpressionGuid=E3AEE4C44C50697E4814499E30A02D69
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31153"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_18.EdGraphPin_31152'
   End Object
   Begin Object Name="EdGraphPin_31154"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_20.EdGraphPin_31155'
   End Object
   MaterialExpression=MaterialExpressionComponentMask'MaterialExpressionComponentMask_2'
   Pins(0)=EdGraphPin'EdGraphPin_31153'
   Pins(1)=EdGraphPin'EdGraphPin_31154'
   NodePosX=-861
   NodePosY=-59
   NodeGuid=731889484D91F43EBC355FA1E60FC4E6
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_20"
   Begin Object Class=MaterialExpressionSubtract Name="MaterialExpressionSubtract_2"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31155"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31156"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31157"
   End Object
   Begin Object Name="MaterialExpressionSubtract_2"
      A=(Expression=MaterialExpressionComponentMask'MaterialGraphNode_19.MaterialExpressionComponentMask_2')
      B=(Expression=MaterialExpressionAdd'MaterialGraphNode_13.MaterialExpressionAdd_1')
      MaterialExpressionEditorX=-648
      MaterialExpressionEditorY=-51
      MaterialExpressionGuid=9BEE26254DE24FDDBB2C5D9475AE33EF
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31155"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_19.EdGraphPin_31154'
   End Object
   Begin Object Name="EdGraphPin_31156"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_13.EdGraphPin_31143'
   End Object
   Begin Object Name="EdGraphPin_31157"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_21.EdGraphPin_31158'
   End Object
   MaterialExpression=MaterialExpressionSubtract'MaterialExpressionSubtract_2'
   Pins(0)=EdGraphPin'EdGraphPin_31155'
   Pins(1)=EdGraphPin'EdGraphPin_31156'
   Pins(2)=EdGraphPin'EdGraphPin_31157'
   NodePosX=-648
   NodePosY=-51
   NodeGuid=EBC14A854A3255F3A1E275B3E136BF5F
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_21"
   Begin Object Class=MaterialExpressionAdd Name="MaterialExpressionAdd_2"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31158"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31159"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31160"
   End Object
   Begin Object Name="MaterialExpressionAdd_2"
      A=(Expression=MaterialExpressionSubtract'MaterialGraphNode_20.MaterialExpressionSubtract_2')
      B=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_22.MaterialExpressionScalarParameter_2')
      MaterialExpressionEditorX=-416
      MaterialExpressionEditorY=-48
      MaterialExpressionGuid=988F465F491AD47B023B03B35FCB14FB
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31158"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_20.EdGraphPin_31157'
   End Object
   Begin Object Name="EdGraphPin_31159"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_22.EdGraphPin_31161'
   End Object
   Begin Object Name="EdGraphPin_31160"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_23.EdGraphPin_31162'
   End Object
   MaterialExpression=MaterialExpressionAdd'MaterialExpressionAdd_2'
   Pins(0)=EdGraphPin'EdGraphPin_31158'
   Pins(1)=EdGraphPin'EdGraphPin_31159'
   Pins(2)=EdGraphPin'EdGraphPin_31160'
   NodePosX=-416
   NodePosY=-48
   NodeGuid=1E0156DE45A54ED26F68D8A028173363
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_22"
   Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_2"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31161"
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_2"
      ParameterName="Z Bias"
      ExpressionGUID=2313584E442CF87013782D8957B0D0C3
      MaterialExpressionEditorX=-640
      MaterialExpressionEditorY=64
      MaterialExpressionGuid=93BD6D414FD8A061EF5ACD873EC2CDFD
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31161"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_21.EdGraphPin_31159'
   End Object
   MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_2'
   Pins(0)=EdGraphPin'EdGraphPin_31161'
   NodePosX=-640
   NodePosY=64
   bCanRenameNode=True
   NodeGuid=1343610843C3B28FAC98EE8A7A1F90E6
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_23"
   Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31162"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31163"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31164"
   End Object
   Begin Object Name="MaterialExpressionDivide_0"
      A=(Expression=MaterialExpressionAdd'MaterialGraphNode_21.MaterialExpressionAdd_2')
      B=(Expression=MaterialExpressionScalarParameter'MaterialGraphNode_24.MaterialExpressionScalarParameter_3')
      MaterialExpressionEditorX=-160
      MaterialExpressionGuid=C4CC9F8940EFDD191D076DA1085E9820
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31162"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_21.EdGraphPin_31160'
   End Object
   Begin Object Name="EdGraphPin_31163"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_24.EdGraphPin_31165'
   End Object
   Begin Object Name="EdGraphPin_31164"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_25.EdGraphPin_31166'
   End Object
   MaterialExpression=MaterialExpressionDivide'MaterialExpressionDivide_0'
   Pins(0)=EdGraphPin'EdGraphPin_31162'
   Pins(1)=EdGraphPin'EdGraphPin_31163'
   Pins(2)=EdGraphPin'EdGraphPin_31164'
   NodePosX=-160
   NodeGuid=790582144036AAF3A9B1E2AA022B8FAF
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_24"
   Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_3"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31165"
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_3"
      ParameterName="Fade Distance"
      ExpressionGUID=293BDA874E7E4FA34B593D88882F6110
      MaterialExpressionEditorX=-352
      MaterialExpressionEditorY=64
      MaterialExpressionGuid=9AAF9F9C44EC61C3915F508F68A8AE30
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31165"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_23.EdGraphPin_31163'
   End Object
   MaterialExpression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_3'
   Pins(0)=EdGraphPin'EdGraphPin_31165'
   NodePosX=-352
   NodePosY=64
   bCanRenameNode=True
   NodeGuid=BEC135BB4891055C8E28DEAB822EF5E1
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_25"
   Begin Object Class=MaterialExpressionClamp Name="MaterialExpressionClamp_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31166"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31167"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31168"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31169"
   End Object
   Begin Object Name="MaterialExpressionClamp_0"
      Input=(Expression=MaterialExpressionDivide'MaterialGraphNode_23.MaterialExpressionDivide_0')
      MaterialExpressionEditorX=32
      MaterialExpressionEditorY=32
      MaterialExpressionGuid=F06ED7A3471F23B40A41AF882F7E7740
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31166"
      PinName="Input"
      PinFriendlyName=" "
      PinType=(PinCategory="required")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_23.EdGraphPin_31164'
   End Object
   Begin Object Name="EdGraphPin_31167"
      PinName="Min"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_31168"
      PinName="Max"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_31169"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_2.EdGraphPin_31115'
   End Object
   MaterialExpression=MaterialExpressionClamp'MaterialExpressionClamp_0'
   Pins(0)=EdGraphPin'EdGraphPin_31166'
   Pins(1)=EdGraphPin'EdGraphPin_31167'
   Pins(2)=EdGraphPin'EdGraphPin_31168'
   Pins(3)=EdGraphPin'EdGraphPin_31169'
   NodePosX=32
   NodePosY=32
   NodeGuid=185A64A746326974717C658BF26E6AFE
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_26"
   Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_0"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31170"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31171"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31172"
   End Object
   Begin Object Name="MaterialExpressionMultiply_0"
      A=(Expression=MaterialExpressionSubtract'MaterialGraphNode_3.MaterialExpressionSubtract_0')
      B=(Expression=MaterialExpressionSubtract'MaterialGraphNode_27.MaterialExpressionSubtract_3')
      MaterialExpressionEditorX=304
      MaterialExpressionEditorY=432
      MaterialExpressionGuid=B363E716411DD39F80A9EA82642ED379
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31170"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_3.EdGraphPin_31119'
   End Object
   Begin Object Name="EdGraphPin_31171"
      PinName="B"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_27.EdGraphPin_31175'
   End Object
   Begin Object Name="EdGraphPin_31172"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_1.EdGraphPin_31112'
   End Object
   MaterialExpression=MaterialExpressionMultiply'MaterialExpressionMultiply_0'
   Pins(0)=EdGraphPin'EdGraphPin_31170'
   Pins(1)=EdGraphPin'EdGraphPin_31171'
   Pins(2)=EdGraphPin'EdGraphPin_31172'
   NodePosX=304
   NodePosY=432
   NodeGuid=EF0BAAAA4256F4F5C4396FBAFF75A080
End Object
Begin Object Class=MaterialGraphNode Name="MaterialGraphNode_27"
   Begin Object Class=MaterialExpressionSubtract Name="MaterialExpressionSubtract_3"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31173"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31174"
   End Object
   Begin Object Class=EdGraphPin Name="EdGraphPin_31175"
   End Object
   Begin Object Name="MaterialExpressionSubtract_3"
      A=(Expression=MaterialExpressionOneMinus'MaterialGraphNode_2.MaterialExpressionOneMinus_0')
      MaterialExpressionEditorX=112
      MaterialExpressionEditorY=592
      MaterialExpressionGuid=EAC0BAD2451BCB69DB723294ECCE7EA8
      Material=PreviewMaterial'/Engine/Transient.BlobShadow_Master_MAT'
   End Object
   Begin Object Name="EdGraphPin_31173"
      PinName="A"
      PinType=(PinCategory="optional")
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_2.EdGraphPin_31116'
   End Object
   Begin Object Name="EdGraphPin_31174"
      PinName="B"
      PinType=(PinCategory="optional")
   End Object
   Begin Object Name="EdGraphPin_31175"
      PinName="Output"
      PinFriendlyName=" "
      Direction=EGPD_Output
      LinkedTo(0)=EdGraphPin'MaterialGraphNode_26.EdGraphPin_31171'
   End Object
   MaterialExpression=MaterialExpressionSubtract'MaterialExpressionSubtract_3'
   Pins(0)=EdGraphPin'EdGraphPin_31173'
   Pins(1)=EdGraphPin'EdGraphPin_31174'
   Pins(2)=EdGraphPin'EdGraphPin_31175'
   NodePosX=112
   NodePosY=592
   NodeGuid=AA1C3C5F4FF25B29E214748D25AE5BAF
End Object


Here is the video showing how it works:

As you can see it only works for one hardwired ground height and it clips into the floor :frowning: Could you please modify it to not clip into the floor (and I’ll add inverted hemisphere to each foot if needed) and to work with any ground height automatically? (unless I need to trace down from each foot, get Z coordinate and pass it to that GroundHeight parm)

Currently this is how I keep blobs on the floor and aligned (most likely not the fastest way, and shadows still clip into slopes/walls):


Full image: http://s21.postimg.org/sv0yyd0s5/blob_shadow_adjustment.png

Thanks beforehand!

Try the oversized box method I mentioned above, and scale the Z down to be the “maximum cast distance” so it looks like your character is standing on tall platform boxes. Then you can do a few things to improve it:

  1. use worldposition behind translucency XY so the shadow is always on the floor below the character, the box just has to be long enough. You could also use a line trace to dynamically reposition the shadow but I wouldn’t go down the route, I’d more make the effect a local thing that fades out since it would be cheaper and less unpredictable.

  2. by using the worldpos behind translucency Z and then using the cube shadows local bounds to normalize, you can create a fading effect that can both fade the alpha and fade to a separate wider/blurrier image (try channel packing 2-3 levels of blur) so that the shadows soften as they fade out.

Hitting the wall here again (probably because I don’t get along with shaders) :frowning:

Ryan, I don’t mean to sound like a total d!ck (after your wrote down how to resolve it), but would it be possible if you could just modify my material to get it working per your specs and post it here? I am sure whole a lot of people would find it quite useful.

Yeah it would be great to have a cheap fake shadow example…

What I posted works, but not quite there yet because it clips into geometry and only works on the fixed Z of the world space.

I see, but I use landscape and some stairs beside flat surfaces…

@: Do you think you could make modifications to my material so we all could use it and learn from it? :o (or maybe a clean new material?)

Thanks

I am sorry but I do not have time.

Chiming in to say that this would be great. Understand is busy, but if any experienced technical artists could enlighten the rest of us plebs we would all be grateful. x

@motorsep : I looked back at this thread and I noticed a mistake in the blueprint network: Per tick you create a new material instance. Instead you should create one material instance in the Construction Script and save the reference to a variable. Then you can change the parameters of the material instance per tick by referring to it via the variable.

How would I do that precisely? (sorry, I am not that proficient in Blueprint yet)

Thanks

@motorsep :
In construction script:

Rightclick on the return pin and promote to variable to get the variable.
(Note that your variables will be different. I assign the seccond material slot, for example.)

In the Event Graph, you do the same as you did, but rip out the create material instance nodes and replace their references with the variable. (Drag the variable in, select “Get” and plug that into target.)

Also remove the “Set World Rotation” nodes. Those are for positioning stuff (geometry/components) inside the world. What you need to do is give the X Y and Z position of the center of your shadow (basically your hit location) to the Material via blueprint and then in the material you put a sphere mask at this position and compare that against you pixels’ world position to generate a mask. - I will work it out for my own project and share a bit later (probably Monday).

In the material you basically need this:
Capture2.PNG
the output of the SphereMask is your mask. Probably neet to 1-x and then multply it with your ground shader parts that you want to darken.
Hardness is how hard your shadow is.
Radius is the radius of the shadow.
PrimeLocation is the parameter you set with the blueprint. (X Y Z and the alpha is kinda wasted, but you could use it for something else. You can set a vector parameter instead of a float parameter, with a different blueprint node.)

That would great, thanks. I am not a material guy per se (come from pre-PBR, pre-shaders era), so all that stuff talked about just boggles my mind :stuck_out_tongue:

@ :
1.a.:Are Sphere_AO and SphereMask the same thing (under the hood)? - I guess SphereMask also has a built-in power function (to control the “Hardness”).
1.b.: Is SphereMask as expensive as Sphere_AO with a power node and its position calculation tweaked?

2.a.: If I understood you correctly, the WorldSpaceBehindTranslucency method is performance equivalent to a decal actor, but has the advantage that it is possible to optimize the mesh shape (which saves on overdraw). Is this still correct? Are decal actors not more optimized, because they are built for the specific purpose?
2.b.: I can copy the WorldSpaceBehindTranslucency method from the Showdown VR demo, so this is not very important to me, but I suggest Epic could use the subUV-cut-out tech that you use for particles and apply it on decal meshes (as an opt-in option). Does that sound like a good idea?
2.c.: I compared the system suggested in 2.b. with the new decal mesh feature. And as far as I understand decal meshes derive their projection direction from their vertex or point normals. Is that correct?

  1. How is the new forward render (theoretically) affecting the WorldSpaceBehindTranslucency and the decal method performance wise?

    @motorsep: You can get the CouchKnight project and look at the blueprint of the playable character (the knight girl). It has decals attached to its feet that function as shadows. You should try using that method.

If that doesn’t work, you can get the showdown VR demo and look at the Robot blueprint in the scene. There is BlobShadow1 through 4 static meshes with an instance of the WorldSpaceBehindTranslucency material set up. I guess it is best if you just copy that.

Could you elaborate on this? - I am not quite clear on what this solves or where it is implemented. (Is this in the floor material or in meshes attached to the soldiers’ feet?)

Is there any chance the Bullettrain project will be shared?

Any ideas on how to support a very uneven surface with huge mesh gaps at 90degree angles?
I was considering using the WorldSpaceBehindTranslucency method with a height-fade based on worldposition (assuming that the actual movement of the shadow happens in a plane of a fixed height).