Alright, since I haven’t heard back, I gave it another spin and made it happen
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.
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 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):
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:
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.
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)
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.
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.
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:
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.)
@ :
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?
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).