Global Illumination WIP 2

Irradianceまで繋いだので進捗.
しかしこの方式はディティールレベルは高いが負荷を下げにくいので別の手法も試し中.
www.youtube.com

高頻度進捗はTwitterX

Light Propagation Volumes (LPV) の radiance directional derivative によるLight Leak対策

Light Propagation Volumes in CryEngine 3 [1] で Radiance Volumeからのサンプリング時Leakを抑える手法として

6.3 Anisotropic upsampling of radiance volume

で言及されている direction-dependent upsampling of the resulting radiance volume がよくわからなかったので調べた結果です.
コードとしてはGI-LPV[2]のリポジトリの indirect_light.fp [3]で実際に記述されていたのが参考になりました.

https://advances.realtimerendering.com/s2009/Light_Propagation_Volumes.pdf


SH VolumeのSH係数を補間する際に裏側から漏れ出ていそうな成分をキャンセルするためのもの.
SH Volume からシェーディング点のSH係数をサンプリングした後, シェーディング法線方向に沿ったSH係数の方向微分も計算します.
(実際に前後の点でサンプリングしています)

 
 \nabla_{\mathbf{n}} \mathbf{c}(\mathbf{x})
 =
 \frac{
 \mathbf{c}\!\left(\mathbf{x} + \frac{\mathbf{n}}{2}\right)
 -
 \mathbf{c}\!\left(\mathbf{x} - \frac{\mathbf{n}}{2}\right)
 }{
 \lVert \mathbf{n} \rVert
 }


SH係数の方向微分のベクトルとシェーディング点のSH係数の内積を類似度をみなして,

  1. 類似度が高い
  2. 裏側→表側へのSH変化量がそのままシェーディング点のSHに影響している
  3. 裏側のSHが漏れ出ている疑惑が強い

ということで, その場合はシェーディング点のSHによる寄与を減らす(dampening) しています.

この手法はあくまでleakしていそうだったら減衰させているだけで, より良いSHのサンプリングをするというものではなさそうです.
この前段階で法線バイアス等で十分Leakを避けるためのサンプリング点補正をしたうえでの, 最終調整という位置づけが良いのかもしれないです.

LPV

[1] https://advances.realtimerendering.com/s2009/Light_Propagation_Volumes.pdf
[2] GitHub - innovation-cat/GI-LPV: Implement global illumination with OCaml, using light propagation volumes . · GitHub
[3] GI-LPV/shader/indirect_light.fp at master · innovation-cat/GI-LPV · GitHub

Global Illumination WIP 1

そこそこ出来てきたので動画をアップロードしてブログにも
思想と仕組みはそのうちまとめたい

ポータビリティ重視
既存のラスタライズレンダリングパイプラインへの組み込み容易性を重視
ハードウェアレイトレーシング不使用

www.youtube.com


DirectX12ネイティブアプリで実装中
GIといいつつ現状はSkyVisibilityのみ
UE5でも単なるプラグインとして動作動作させられるので検討したいところ

Concurrent Binary Trees for Large-Scale Game Components 検証実装

Adaptive Software Tessellation with Concurrent Binary Trees

数年前に実装したものですが検索性が良くないのでこちらにも
一般メッシュに適用可能なGPU駆動ソフトウェアテッセレーションの手法を試してみました。
論文の主要処理はすべてComputeShaderになります。

GitHub - nagakagachi/sample_project · GitHub

今回の手法の論文はこちら
Concurrent Binary Trees for Large-Scale Game Components
ANIS BENYOUB, Intel Corporation, France
JONATHAN DUPUY, Intel Corporation, France
https://dl.acm.org/doi/10.1145/3675371


著者の以前のTessellation論文にもConcurrentBinaryTree(CBT)を使ったものがありますが、
そちらは二等辺直角三角形に限定して、分割三角形の親子構造をCBTにマッピングする手法です。
Concurrent Binary Trees (with application to longest edge bisection)
JONATHAN DUPUY, Unity Technologies
https://dl.acm.org/doi/10.1145/3406186


一方で今回の論文は任意のメッシュに対して実行可能で、CBTを分割三角形の高速なメモリアロケーションのために利用しています。
CBT(並行二分木)を利用する仕組み上、メモリ確保が二の冪乗に制限されるなど少し取り回しが悪い点などがありますが、
一般メッシュに適用できてリアルタイムに動かせそうなソフトウェアテッセレーション手法としてよい感じかと思います。

コードはディレクトリにまとまっています。
実行はmain.cppの NGL_TEST_SWTESSELLATION_ENABLE を 1 にしてビルドするとシーンにテスト用のオブジェクトが表示されます。

UEマテリアルネタ:LatticeBasedDynamicDeform

コンセプト実装メモ

material

Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_0" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_0'"
   Begin Object Class=/Script/Engine.MaterialExpressionAbs Name="MaterialExpressionAbs_3" ExportPath="/Script/Engine.MaterialExpressionAbs'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_0.MaterialExpressionAbs_3'"
   End Object
   Begin Object Name="MaterialExpressionAbs_3" ExportPath="/Script/Engine.MaterialExpressionAbs'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_0.MaterialExpressionAbs_3'"
      Input=(Expression="/Script/Engine.MaterialExpressionAdd'MaterialGraphNode_42.MaterialExpressionAdd_3'")
      MaterialExpressionEditorX=1136
      MaterialExpressionEditorY=-544
      MaterialExpressionGuid=618A1FEA4EC7BE62FCDD5E8775143A99
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionAbs'MaterialExpressionAbs_3'"
   NodePosX=1136
   NodePosY=-544
   NodeGuid=CE61B2744816A6DBBE259A8A85CF33D1
   CustomProperties Pin (PinId=156D96F34497F69979397E8818DDAA80,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_42 638E8D69403BED61E274A8B4B591B5B2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=A188A0A94A3ABCE76D74CBACF77286CB,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Root_0 891CD1634EE6E02E4C957587C39198A8,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Knot Name="MaterialGraphNode_Knot_0" ExportPath="/Script/UnrealEd.MaterialGraphNode_Knot'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_0'"
   Begin Object Class=/Script/Engine.MaterialExpressionReroute Name="MaterialExpressionReroute_12" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_0.MaterialExpressionReroute_12'"
   End Object
   Begin Object Name="MaterialExpressionReroute_12" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_0.MaterialExpressionReroute_12'"
      Input=(Expression="/Script/Engine.MaterialExpressionMultiply'MaterialGraphNode_2.MaterialExpressionMultiply_2'")
      MaterialExpressionEditorX=976
      MaterialExpressionEditorY=-208
      MaterialExpressionGuid=D01463B44F12A864E234EC9154BA4F4D
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionReroute'MaterialExpressionReroute_12'"
   NodePosX=976
   NodePosY=-208
   bCanRenameNode=False
   NodeGuid=07FAF5574724F26F6167ECB9CB797F61
   CustomProperties Pin (PinId=97EDD58C47AE5B073D3CDB8814F46B2F,PinName="InputPin",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_2 608B93C641BAB0594CDAE980C0CE0A02,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=21AEB43349A80F4819E79EB40151FE29,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Root_0 DD29B3E54B43BBF923E58ABB0F6F9D66,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_1" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_1'"
   Begin Object Class=/Script/Engine.MaterialExpressionConstant3Vector Name="MaterialExpressionConstant3Vector_0" ExportPath="/Script/Engine.MaterialExpressionConstant3Vector'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_1.MaterialExpressionConstant3Vector_0'"
   End Object
   Begin Object Name="MaterialExpressionConstant3Vector_0" ExportPath="/Script/Engine.MaterialExpressionConstant3Vector'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_1.MaterialExpressionConstant3Vector_0'"
      Constant=(R=0.459925,G=1.000000,B=0.787798,A=1.000000)
      MaterialExpressionEditorX=672
      MaterialExpressionEditorY=-640
      MaterialExpressionGuid=7758F61D4157B553ADEB50832122AC48
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionConstant3Vector'MaterialExpressionConstant3Vector_0'"
   NodePosX=672
   NodePosY=-640
   NodeGuid=390B70A44C94166617D31AAE48BE9615
   CustomProperties Pin (PinId=7204CBA74608D483362C0C9202E27153,PinName="Constant",PinType.PinCategory="optional",PinType.PinSubCategory="rgb",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.459925,1.0,0.787798",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=597429E44A337F8EFF998AA7539751D0,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_42 70AB43564198A863B0FCD4B9F291912C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=71766138468B78919B60418D85F3C377,PinName="Output2",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=6B7C31E142A541962D99C09701901DC5,PinName="Output3",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=01F385CB49E1FF5FE7BC1087DD75BD33,PinName="Output4",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_2" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_2'"
   Begin Object Class=/Script/Engine.MaterialExpressionMultiply Name="MaterialExpressionMultiply_2" ExportPath="/Script/Engine.MaterialExpressionMultiply'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_2.MaterialExpressionMultiply_2'"
   End Object
   Begin Object Name="MaterialExpressionMultiply_2" ExportPath="/Script/Engine.MaterialExpressionMultiply'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_2.MaterialExpressionMultiply_2'"
      A=(Expression="/Script/Engine.MaterialExpressionCustom'MaterialGraphNode_Custom_0.MaterialExpressionCustom_2'")
      B=(Expression="/Script/Engine.MaterialExpressionMultiply'MaterialGraphNode_12.MaterialExpressionMultiply_5'")
      ConstB=10.000000
      MaterialExpressionEditorX=592
      MaterialExpressionEditorY=112
      MaterialExpressionGuid=801405D641B41ABE8B4088BC7144E91F
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionMultiply'MaterialExpressionMultiply_2'"
   NodePosX=592
   NodePosY=112
   NodeGuid=767DE87C464CBBEF8CD726B7B8620BEA
   CustomProperties Pin (PinId=271BA5D84DF16892008A6D9BB82E3788,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_Custom_0 AF4C1E69462CCBD59FD6CDAFD9A95BED,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=F66B95B44E6BA4EB1ECDB4877EB38891,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="10.0",LinkedTo=(MaterialGraphNode_12 79FF34B04F50FBE02A39B7A5E1418FD6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=608B93C641BAB0594CDAE980C0CE0A02,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Knot_0 97EDD58C47AE5B073D3CDB8814F46B2F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Custom Name="MaterialGraphNode_Custom_0" ExportPath="/Script/UnrealEd.MaterialGraphNode_Custom'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Custom_0'"
   Begin Object Class=/Script/Engine.MaterialExpressionCustom Name="MaterialExpressionCustom_2" ExportPath="/Script/Engine.MaterialExpressionCustom'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Custom_0.MaterialExpressionCustom_2'"
   End Object
   Begin Object Name="MaterialExpressionCustom_2" ExportPath="/Script/Engine.MaterialExpressionCustom'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Custom_0.MaterialExpressionCustom_2'"
      Code="const int3 lattice_vtx_count = in_lattice_reso - 1;\r\n\r\nconst bool is_valid_lattice_id = all(0 <= in_lattice_id) && all(in_lattice_id <= (lattice_vtx_count-1));\r\nconst float3 lattice_cell_size = in_lattice_size / lattice_vtx_count;\r\n\r\n\r\nfloat3 pos_deform = float3(0.0, 0.0, 0.0);\r\n\r\nfloat debug_weight = 0.0;\r\nfloat debug_vtx = 0.0;\r\n\r\nif(is_valid_lattice_id)\r\n{\r\n  const float3 vtx_w0 = 1.0 - in_lattice_uvw;\r\n  const float3 vtx_w1 = in_lattice_uvw;\r\n\r\n  const int ay = in_lattice_reso.x;\r\n  const int az = in_lattice_reso.x*in_lattice_reso.y;\r\n  const int vtx_i0 = (in_lattice_id.x) +   (in_lattice_id.y)*ay +   (in_lattice_id.z)*az;\r\n  const int vtx_i1 = (in_lattice_id.x+1) + (in_lattice_id.y)*ay +   (in_lattice_id.z)*az;\r\n  const int vtx_i2 = (in_lattice_id.x) +   (in_lattice_id.y+1)*ay + (in_lattice_id.z)*az;\r\n  const int vtx_i3 = (in_lattice_id.x+1) + (in_lattice_id.y+1)*ay + (in_lattice_id.z)*az;\r\n  const int vtx_i4 = (in_lattice_id.x) +   (in_lattice_id.y)*ay +   (in_lattice_id.z+1)*az;\r\n  const int vtx_i5 = (in_lattice_id.x+1) + (in_lattice_id.y)*ay +   (in_lattice_id.z+1)*az;\r\n  const int vtx_i6 = (in_lattice_id.x) +   (in_lattice_id.y+1)*ay + (in_lattice_id.z+1)*az;\r\n  const int vtx_i7 = (in_lattice_id.x+1) + (in_lattice_id.y+1)*ay + (in_lattice_id.z+1)*az;\r\n\r\n\r\n  float4 vtx_accum = (float4)0.0;\r\n  vtx_accum += in_lattice_vtx_tex.Load(int3(vtx_i0, 0, 0)) * (vtx_w0.x)*(vtx_w0.y)*(vtx_w0.z);\r\n  vtx_accum += in_lattice_vtx_tex.Load(int3(vtx_i1, 0, 0)) * (vtx_w1.x)*(vtx_w0.y)*(vtx_w0.z);\r\n  vtx_accum += in_lattice_vtx_tex.Load(int3(vtx_i2, 0, 0)) * (vtx_w0.x)*(vtx_w1.y)*(vtx_w0.z);\r\n  vtx_accum += in_lattice_vtx_tex.Load(int3(vtx_i3, 0, 0)) * (vtx_w1.x)*(vtx_w1.y)*(vtx_w0.z);\r\n  vtx_accum += in_lattice_vtx_tex.Load(int3(vtx_i4, 0, 0)) * (vtx_w0.x)*(vtx_w0.y)*(vtx_w1.z);\r\n  vtx_accum += in_lattice_vtx_tex.Load(int3(vtx_i5, 0, 0)) * (vtx_w1.x)*(vtx_w0.y)*(vtx_w1.z);\r\n  vtx_accum += in_lattice_vtx_tex.Load(int3(vtx_i6, 0, 0)) * (vtx_w0.x)*(vtx_w1.y)*(vtx_w1.z);\r\n  vtx_accum += in_lattice_vtx_tex.Load(int3(vtx_i7, 0, 0)) * (vtx_w1.x)*(vtx_w1.y)*(vtx_w1.z);\r\n\r\n  pos_deform = vtx_accum;\r\n}\r\n\r\nreturn pos_deform;\r\n\r\n"
      Inputs(0)=(InputName="in_lattice_id",Input=(Expression="/Script/Engine.MaterialExpressionNamedRerouteDeclaration'MaterialGraphNode_7.MaterialExpressionNamedRerouteDeclaration_0'"))
      Inputs(1)=(InputName="in_lattice_uvw",Input=(Expression="/Script/Engine.MaterialExpressionNamedRerouteDeclaration'MaterialGraphNode_4.MaterialExpressionNamedRerouteDeclaration_1'"))
      Inputs(2)=(InputName="in_lattice_reso",Input=(Expression="/Script/Engine.MaterialExpressionReroute'MaterialGraphNode_Knot_1.MaterialExpressionReroute_1'"))
      Inputs(3)=(InputName="in_lattice_size",Input=(Expression="/Script/Engine.MaterialExpressionReroute'MaterialGraphNode_Knot_2.MaterialExpressionReroute_2'"))
      Inputs(4)=(InputName="in_lattice_vtx_tex",Input=(Expression="/Script/Engine.MaterialExpressionTextureObjectParameter'MaterialGraphNode_10.MaterialExpressionTextureObjectParameter_0'"))
      Inputs(5)=(InputName="in_lattice_vtx_texel_size",Input=(Expression="/Script/Engine.MaterialExpressionTextureProperty'MaterialGraphNode_11.MaterialExpressionTextureProperty_0'"))
      AdditionalOutputs(0)=(OutputName="out_debug_color",OutputType=CMOT_Float3)
      ShowCode=True
      MaterialExpressionEditorX=-576
      MaterialExpressionEditorY=64
      MaterialExpressionGuid=EE1A98B74B3D84AC63EF4298EF5F9311
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
      bShowOutputNameOnPin=True
      Outputs(0)=(OutputName="return")
      Outputs(1)=(OutputName="out_debug_color")
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionCustom'MaterialExpressionCustom_2'"
   NodePosX=-576
   NodePosY=64
   NodeGuid=D24EF2AB4923D520C4DB1D80201C0B53
   CustomProperties Pin (PinId=537C0DF74200871F85B7019702200A22,PinName="in_lattice_id",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_7 A71B44654C44AB83FC9662A98E4C1D14,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=C82084184A1AFFBEACF88CAE3B47CAE8,PinName="in_lattice_uvw",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_4 6D1FC9BF4DD7BF70843CF99CD39EEEE4,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=06CA3F11492B4F9865F5A2BD2F6D6A10,PinName="in_lattice_reso",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Knot_1 ED297F8A4F01AB7FC8C022A40D66DEB5,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=32785A6D43F60D54C376528074DA2F95,PinName="in_lattice_size",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Knot_2 EFD322694656CB36E3202EB49CB50989,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=F7F6DD344CEA67647D0E038419330B18,PinName="in_lattice_vtx_tex",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_10 C7637FF44BC21CC478CB42828F2D078C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=56BCED2346461B390B07768867598603,PinName="in_lattice_vtx_texel_size",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_11 D5CBAE54419805CAFE9F90BB4AAC62C6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=AF4C1E69462CCBD59FD6CDAFD9A95BED,PinName="return",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_2 271BA5D84DF16892008A6D9BB82E3788,MaterialGraphNode_22 164AC73F4B86EEDB7E5ECE93AF2678D5,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=E9356CC64FAAA2B61070E49E7C2AEBF7,PinName="out_debug_color",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_4" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_4'"
   Begin Object Class=/Script/Engine.MaterialExpressionNamedRerouteDeclaration Name="MaterialExpressionNamedRerouteDeclaration_1" ExportPath="/Script/Engine.MaterialExpressionNamedRerouteDeclaration'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_4.MaterialExpressionNamedRerouteDeclaration_1'"
   End Object
   Begin Object Name="MaterialExpressionNamedRerouteDeclaration_1" ExportPath="/Script/Engine.MaterialExpressionNamedRerouteDeclaration'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_4.MaterialExpressionNamedRerouteDeclaration_1'"
      Input=(Expression="/Script/Engine.MaterialExpressionCustom'MaterialGraphNode_Custom_1.MaterialExpressionCustom_3'",OutputIndex=2)
      Name="LatticeUvw"
      NodeColor=(R=0.000000,G=0.882812,B=1.000000,A=1.000000)
      VariableGuid=6EBCE4B44E5D1815DB91AEBC9EACA936
      MaterialExpressionEditorX=-800
      MaterialExpressionEditorY=-432
      MaterialExpressionGuid=90CE568544767AB3B6162E81BFAC9497
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionNamedRerouteDeclaration'MaterialExpressionNamedRerouteDeclaration_1'"
   NodePosX=-800
   NodePosY=-432
   bCanRenameNode=True
   NodeGuid=9B5B82D14363F84DC8267385212DC71F
   CustomProperties Pin (PinId=819FE751436F07FD79BEAB878B731865,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_1 B3319E1C4F16177D15683DA542AF5B44,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=6D1FC9BF4DD7BF70843CF99CD39EEEE4,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_0 C82084184A1AFFBEACF88CAE3B47CAE8,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_5" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_5'"
   Begin Object Class=/Script/Engine.MaterialExpressionVectorParameter Name="MaterialExpressionVectorParameter_0" ExportPath="/Script/Engine.MaterialExpressionVectorParameter'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_5.MaterialExpressionVectorParameter_0'"
   End Object
   Begin Object Name="MaterialExpressionVectorParameter_0" ExportPath="/Script/Engine.MaterialExpressionVectorParameter'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_5.MaterialExpressionVectorParameter_0'"
      DefaultValue=(R=3.000000,G=3.000000,B=3.000000,A=0.000000)
      ParameterName="InLatticeReso"
      ExpressionGUID=42684DE94E26A463B24ABA9F80E9A5C1
      MaterialExpressionEditorX=-2080
      MaterialExpressionEditorY=320
      MaterialExpressionGuid=268C06F448E8A9C8220CE8BFFC051F39
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionVectorParameter'MaterialExpressionVectorParameter_0'"
   NodePosX=-2080
   NodePosY=320
   bCanRenameNode=True
   NodeGuid=D1FA64064D1BB2747410048EF5120504
   CustomProperties Pin (PinId=AFF5CBDA4920A531CD2475B5B4CEEE9A,PinName="Default Value",PinType.PinCategory="optional",PinType.PinSubCategory="rgba",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="(R=3.000000,G=3.000000,B=3.000000,A=0.000000)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=A5D1BA0E4D8E2550F34C8D813BE4FFEE,PinName="RGB",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Knot_1 EA0A48734D9BAD73736AA4B8638586AA,MaterialGraphNode_Custom_1 AE55E6F54091D60C2BB941B9F249EC86,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=669F18BA471B5950E44A4789CBD44613,PinName="R",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=C56BFBD646DA50A72447C38B9F3EB1B2,PinName="G",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="green",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=C25D92CD48B558820375DC8AD010FE73,PinName="B",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=CA9EFF21423EC8B508DFD3A931DA97A7,PinName="A",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="alpha",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=9D5E092A47F6DF70673E019361A4B5A1,PinName="RGBA",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="rgba",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_6" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_6'"
   Begin Object Class=/Script/Engine.MaterialExpressionLocalPosition Name="MaterialExpressionLocalPosition_0" ExportPath="/Script/Engine.MaterialExpressionLocalPosition'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_6.MaterialExpressionLocalPosition_0'"
   End Object
   Begin Object Name="MaterialExpressionLocalPosition_0" ExportPath="/Script/Engine.MaterialExpressionLocalPosition'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_6.MaterialExpressionLocalPosition_0'"
      IncludedOffsets=ExcludeOffsets
      MaterialExpressionEditorX=-2320
      MaterialExpressionEditorY=-752
      MaterialExpressionGuid=B5C2A8374BAA21ED3B77C6BC94596AEB
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionLocalPosition'MaterialExpressionLocalPosition_0'"
   NodePosX=-2320
   NodePosY=-752
   NodeGuid=7DD97F2D4062339703D63986B8441DEF
   CustomProperties Pin (PinId=C251D6E745A6863BA1DD9E88F4A6D054,PinName="XYZ",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_8 865F735D451CD34C1B413192D301F967,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=B13A933F432DED087219E7A52D4A9110,PinName="XY",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=D77E7AD54927D7B0F36E2C84801DC85E,PinName="Z",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="blue",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_7" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_7'"
   Begin Object Class=/Script/Engine.MaterialExpressionNamedRerouteDeclaration Name="MaterialExpressionNamedRerouteDeclaration_0" ExportPath="/Script/Engine.MaterialExpressionNamedRerouteDeclaration'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_7.MaterialExpressionNamedRerouteDeclaration_0'"
   End Object
   Begin Object Name="MaterialExpressionNamedRerouteDeclaration_0" ExportPath="/Script/Engine.MaterialExpressionNamedRerouteDeclaration'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_7.MaterialExpressionNamedRerouteDeclaration_0'"
      Input=(Expression="/Script/Engine.MaterialExpressionCustom'MaterialGraphNode_Custom_1.MaterialExpressionCustom_3'",OutputIndex=1)
      Name="LatticeId"
      NodeColor=(R=1.000000,G=0.000000,B=0.562500,A=1.000000)
      VariableGuid=D0D8F8B74A3BE48A8A101CBDE3248C49
      MaterialExpressionEditorX=-784
      MaterialExpressionEditorY=-512
      MaterialExpressionGuid=BFA4B8FE4A40BEDB515F8EB356CFBE21
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionNamedRerouteDeclaration'MaterialExpressionNamedRerouteDeclaration_0'"
   NodePosX=-784
   NodePosY=-512
   bCanRenameNode=True
   NodeGuid=94BE1DD2437ABF0FE50C56861156A85E
   CustomProperties Pin (PinId=F74EF4844C75892D4D0451A90D3F522A,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_1 C9BF4A1D435878D81B60ABA7AEB0AFC3,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=A71B44654C44AB83FC9662A98E4C1D14,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_0 537C0DF74200871F85B7019702200A22,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Knot Name="MaterialGraphNode_Knot_1" ExportPath="/Script/UnrealEd.MaterialGraphNode_Knot'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_1'"
   Begin Object Class=/Script/Engine.MaterialExpressionReroute Name="MaterialExpressionReroute_1" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_1.MaterialExpressionReroute_1'"
   End Object
   Begin Object Name="MaterialExpressionReroute_1" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_1.MaterialExpressionReroute_1'"
      Input=(Expression="/Script/Engine.MaterialExpressionVectorParameter'MaterialGraphNode_5.MaterialExpressionVectorParameter_0'",Mask=1,MaskR=1,MaskG=1,MaskB=1)
      MaterialExpressionEditorX=-992
      MaterialExpressionEditorY=80
      MaterialExpressionGuid=62492AD243D0282174B4119BB2AD75D0
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionReroute'MaterialExpressionReroute_1'"
   NodePosX=-992
   NodePosY=80
   bCanRenameNode=False
   NodeGuid=5E1C6CFD45534F192B5A88A4CBF43948
   CustomProperties Pin (PinId=EA0A48734D9BAD73736AA4B8638586AA,PinName="InputPin",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_5 A5D1BA0E4D8E2550F34C8D813BE4FFEE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=ED297F8A4F01AB7FC8C022A40D66DEB5,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_0 06CA3F11492B4F9865F5A2BD2F6D6A10,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Knot Name="MaterialGraphNode_Knot_2" ExportPath="/Script/UnrealEd.MaterialGraphNode_Knot'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_2'"
   Begin Object Class=/Script/Engine.MaterialExpressionReroute Name="MaterialExpressionReroute_2" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_2.MaterialExpressionReroute_2'"
   End Object
   Begin Object Name="MaterialExpressionReroute_2" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_2.MaterialExpressionReroute_2'"
      Input=(Expression="/Script/Engine.MaterialExpressionReroute'MaterialGraphNode_Knot_6.MaterialExpressionReroute_8'")
      MaterialExpressionEditorX=-1600
      MaterialExpressionEditorY=32
      MaterialExpressionGuid=725E771D4589BAAFAF4FC89377F12C8A
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionReroute'MaterialExpressionReroute_2'"
   NodePosX=-1600
   NodePosY=32
   bCanRenameNode=False
   NodeGuid=EA21EA154B18A3A20F2AB48A6F8D6E96
   CustomProperties Pin (PinId=01C914364BC877462FDEA2B8D3472B4D,PinName="InputPin",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Knot_6 7D21ACD04B5BA1EA4EEB2395D46B47B7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=EFD322694656CB36E3202EB49CB50989,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_0 32785A6D43F60D54C376528074DA2F95,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Knot Name="MaterialGraphNode_Knot_3" ExportPath="/Script/UnrealEd.MaterialGraphNode_Knot'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_3'"
   Begin Object Class=/Script/Engine.MaterialExpressionReroute Name="MaterialExpressionReroute_4" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_3.MaterialExpressionReroute_4'"
   End Object
   Begin Object Name="MaterialExpressionReroute_4" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_3.MaterialExpressionReroute_4'"
      Input=(Expression="/Script/Engine.MaterialExpressionAdd'MaterialGraphNode_8.MaterialExpressionAdd_2'")
      MaterialExpressionEditorX=-1728
      MaterialExpressionEditorY=-688
      MaterialExpressionGuid=CECDE35C44567A90E7740EBBE9ADE0C9
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionReroute'MaterialExpressionReroute_4'"
   NodePosX=-1728
   NodePosY=-688
   bCanRenameNode=False
   NodeGuid=8139022A47A894DF6AB4A1ADBE7B08B0
   CustomProperties Pin (PinId=250241064EEA6A54807975B23A2271DC,PinName="InputPin",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_8 979D16514042ED9A73356A9032066F70,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=CFEC7B144530E3C765A061BE6625BF30,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_1 00880E43402379D7A7708B90CB6AFDED,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_8" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_8'"
   Begin Object Class=/Script/Engine.MaterialExpressionAdd Name="MaterialExpressionAdd_2" ExportPath="/Script/Engine.MaterialExpressionAdd'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_8.MaterialExpressionAdd_2'"
   End Object
   Begin Object Name="MaterialExpressionAdd_2" ExportPath="/Script/Engine.MaterialExpressionAdd'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_8.MaterialExpressionAdd_2'"
      A=(Expression="/Script/Engine.MaterialExpressionLocalPosition'MaterialGraphNode_6.MaterialExpressionLocalPosition_0'",Mask=1,MaskR=1,MaskG=1,MaskB=1)
      B=(Expression="/Script/Engine.MaterialExpressionReroute'MaterialGraphNode_Knot_5.MaterialExpressionReroute_7'")
      MaterialExpressionEditorX=-1952
      MaterialExpressionEditorY=-736
      MaterialExpressionGuid=D1E9631F4F4977E08A1D24962FCB9E6E
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionAdd'MaterialExpressionAdd_2'"
   NodePosX=-1952
   NodePosY=-736
   NodeGuid=27D7A4314769680274FE9594C43EDEEA
   CustomProperties Pin (PinId=865F735D451CD34C1B413192D301F967,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_6 C251D6E745A6863BA1DD9E88F4A6D054,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=407E79E346BF01D91835DD92651128C6,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",LinkedTo=(MaterialGraphNode_Knot_5 76630B6449047067CB85C7BA29A4C738,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=979D16514042ED9A73356A9032066F70,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Knot_3 250241064EEA6A54807975B23A2271DC,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Custom Name="MaterialGraphNode_Custom_1" ExportPath="/Script/UnrealEd.MaterialGraphNode_Custom'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Custom_1'"
   Begin Object Class=/Script/Engine.MaterialExpressionCustom Name="MaterialExpressionCustom_3" ExportPath="/Script/Engine.MaterialExpressionCustom'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Custom_1.MaterialExpressionCustom_3'"
   End Object
   Begin Object Name="MaterialExpressionCustom_3" ExportPath="/Script/Engine.MaterialExpressionCustom'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Custom_1.MaterialExpressionCustom_3'"
      Code="const int3 lattice_vtx_count = in_lattice_reso - 1;\r\nconst float3 lattice_cell_size = in_lattice_size / lattice_vtx_count;\r\n\r\nconst float3 lattice_cell_pos =  in_local_position / lattice_cell_size;\r\n\r\nconst float3 lattice_cell_id = floor(lattice_cell_pos);\r\nout_lattice_cell_id = clamp(lattice_cell_id, 0, lattice_vtx_count-1);\r\n\r\nout_lattice_cell_uvw = saturate(lattice_cell_pos - out_lattice_cell_id);\r\n\r\nout_is_valid_lattice_cell \r\n= all(0 <= lattice_cell_id) && all((lattice_vtx_count-1) >= lattice_cell_id);\r\n\r\nreturn 1;"
      Inputs(0)=(InputName="in_local_position",Input=(Expression="/Script/Engine.MaterialExpressionReroute'MaterialGraphNode_Knot_3.MaterialExpressionReroute_4'"))
      Inputs(1)=(InputName="in_lattice_reso",Input=(Expression="/Script/Engine.MaterialExpressionVectorParameter'MaterialGraphNode_5.MaterialExpressionVectorParameter_0'",Mask=1,MaskR=1,MaskG=1,MaskB=1))
      Inputs(2)=(InputName="in_lattice_size",Input=(Expression="/Script/Engine.MaterialExpressionReroute'MaterialGraphNode_Knot_6.MaterialExpressionReroute_8'"))
      AdditionalOutputs(0)=(OutputName="out_lattice_cell_id",OutputType=CMOT_Float3)
      AdditionalOutputs(1)=(OutputName="out_lattice_cell_uvw",OutputType=CMOT_Float3)
      AdditionalOutputs(2)=(OutputName="out_is_valid_lattice_cell")
      ShowCode=True
      MaterialExpressionEditorX=-1600
      MaterialExpressionEditorY=-496
      MaterialExpressionGuid=2C07B692463739E4F338098F5BBF9D07
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
      bShowOutputNameOnPin=True
      Outputs(0)=(OutputName="return")
      Outputs(1)=(OutputName="out_lattice_cell_id")
      Outputs(2)=(OutputName="out_lattice_cell_uvw")
      Outputs(3)=(OutputName="out_is_valid_lattice_cell")
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionCustom'MaterialExpressionCustom_3'"
   NodePosX=-1600
   NodePosY=-496
   NodeGuid=B0F607A64466FD0ACBE208895195CEE8
   CustomProperties Pin (PinId=00880E43402379D7A7708B90CB6AFDED,PinName="in_local_position",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Knot_3 CFEC7B144530E3C765A061BE6625BF30,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=AE55E6F54091D60C2BB941B9F249EC86,PinName="in_lattice_reso",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_5 A5D1BA0E4D8E2550F34C8D813BE4FFEE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=E529628745D778728B006BB8D8B4FAC8,PinName="in_lattice_size",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Knot_6 7D21ACD04B5BA1EA4EEB2395D46B47B7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=82E750F44A4E4E8F42340EB09B25384E,PinName="return",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=C9BF4A1D435878D81B60ABA7AEB0AFC3,PinName="out_lattice_cell_id",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_7 F74EF4844C75892D4D0451A90D3F522A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=B3319E1C4F16177D15683DA542AF5B44,PinName="out_lattice_cell_uvw",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_4 819FE751436F07FD79BEAB878B731865,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=0933F9CC4288B34990B4FD856868550E,PinName="out_is_valid_lattice_cell",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_9 F97FA4AB4FE68FDE0C76B79068A959E2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_9" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_9'"
   Begin Object Class=/Script/Engine.MaterialExpressionNamedRerouteDeclaration Name="MaterialExpressionNamedRerouteDeclaration_4" ExportPath="/Script/Engine.MaterialExpressionNamedRerouteDeclaration'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_9.MaterialExpressionNamedRerouteDeclaration_4'"
   End Object
   Begin Object Name="MaterialExpressionNamedRerouteDeclaration_4" ExportPath="/Script/Engine.MaterialExpressionNamedRerouteDeclaration'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_9.MaterialExpressionNamedRerouteDeclaration_4'"
      Input=(Expression="/Script/Engine.MaterialExpressionCustom'MaterialGraphNode_Custom_1.MaterialExpressionCustom_3'",OutputIndex=3)
      Name="LatticeCellValidity"
      NodeColor=(R=1.000000,G=0.000000,B=0.281250,A=1.000000)
      VariableGuid=4160AC3145B0E314BEDF13867F54FAF0
      MaterialExpressionEditorX=-800
      MaterialExpressionEditorY=-352
      MaterialExpressionGuid=DB42E62846B06A341CE3049D71734A0A
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionNamedRerouteDeclaration'MaterialExpressionNamedRerouteDeclaration_4'"
   NodePosX=-800
   NodePosY=-352
   bCanRenameNode=True
   NodeGuid=0297E90645D5E53F58892986DEEF2170
   CustomProperties Pin (PinId=F97FA4AB4FE68FDE0C76B79068A959E2,PinName="Input",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_1 0933F9CC4288B34990B4FD856868550E,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=72C30F454FDD0820FCA300BDE36AD634,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_10" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_10'"
   Begin Object Class=/Script/Engine.MaterialExpressionTextureObjectParameter Name="MaterialExpressionTextureObjectParameter_0" ExportPath="/Script/Engine.MaterialExpressionTextureObjectParameter'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_10.MaterialExpressionTextureObjectParameter_0'"
   End Object
   Begin Object Name="MaterialExpressionTextureObjectParameter_0" ExportPath="/Script/Engine.MaterialExpressionTextureObjectParameter'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_10.MaterialExpressionTextureObjectParameter_0'"
      ParameterName="InLatticeVtxDeformTex"
      ExpressionGUID=19AFC82A4D800F52ADC9129F627256F7
      Texture="/Script/Engine.Texture2D'/BaseMaterial/Textures/Default/T_BlackLinearColor.T_BlackLinearColor'"
      SamplerType=SAMPLERTYPE_LinearColor
      MaterialExpressionEditorX=-2080
      MaterialExpressionEditorY=576
      MaterialExpressionGuid=E7E47E3649051757A462C39D17D9868A
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionTextureObjectParameter'MaterialExpressionTextureObjectParameter_0'"
   NodePosX=-2080
   NodePosY=576
   AdvancedPinDisplay=Hidden
   bCanRenameNode=True
   NodeGuid=E86CD3F348235DE6CC2252945054150B
   CustomProperties Pin (PinId=B5CCFC4846D86017627DEE9FA796D56B,PinName="UVs",PinType.PinCategory="optional",PinType.PinSubCategory="byte",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=581290474007CFD4BF95BB8E11839CAF,PinName="Apply View MipBias",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=95743ADF4830E3324125DBA4CAD74A5D,PinName="MipValueMode",PinType.PinCategory="optional",PinType.PinSubCategory="byte",PinType.PinSubCategoryObject="/Script/CoreUObject.Enum'/Script/Engine.ETextureMipValueMode'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="None (use computed mip level)",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
   CustomProperties Pin (PinId=D79D5AEF46AC41D467FEF9A3E60936D9,PinName="Sampler Source",PinType.PinCategory="optional",PinType.PinSubCategory="byte",PinType.PinSubCategoryObject="/Script/CoreUObject.Enum'/Script/Engine.ESamplerSourceMode'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="From texture asset",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
   CustomProperties Pin (PinId=7DC20F44499BA2EE6DA5FFA2C2DCD807,PinName="Sampler Type",PinType.PinCategory="optional",PinType.PinSubCategory="byte",PinType.PinSubCategoryObject="/Script/CoreUObject.Enum'/Script/Engine.EMaterialSamplerType'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Linear Color",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
   CustomProperties Pin (PinId=C7637FF44BC21CC478CB42828F2D078C,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_0 F7F6DD344CEA67647D0E038419330B18,MaterialGraphNode_11 7966C3204FC01139EE7059A6B12DC683,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_11" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_11'"
   Begin Object Class=/Script/Engine.MaterialExpressionTextureProperty Name="MaterialExpressionTextureProperty_0" ExportPath="/Script/Engine.MaterialExpressionTextureProperty'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_11.MaterialExpressionTextureProperty_0'"
   End Object
   Begin Object Name="MaterialExpressionTextureProperty_0" ExportPath="/Script/Engine.MaterialExpressionTextureProperty'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_11.MaterialExpressionTextureProperty_0'"
      TextureObject=(Expression="/Script/Engine.MaterialExpressionTextureObjectParameter'MaterialGraphNode_10.MaterialExpressionTextureObjectParameter_0'")
      Property=TMTM_TexelSize
      MaterialExpressionEditorX=-1808
      MaterialExpressionEditorY=640
      MaterialExpressionGuid=155ABB60499C2795A7CA8EAA0CA254C6
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionTextureProperty'MaterialExpressionTextureProperty_0'"
   NodePosX=-1808
   NodePosY=640
   AdvancedPinDisplay=Hidden
   NodeGuid=DAB535CE4059097E649D8B8B5EBACEC7
   CustomProperties Pin (PinId=7966C3204FC01139EE7059A6B12DC683,PinName="Tex",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_10 C7637FF44BC21CC478CB42828F2D078C,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=3EC87907425E4BA9E7384CA5A8713D55,PinName="Texture Property",PinType.PinCategory="optional",PinType.PinSubCategory="byte",PinType.PinSubCategoryObject="/Script/CoreUObject.Enum'/Script/Engine.EMaterialExposedTextureProperty'",PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="Texel Size",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=True,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=True,bOrphanedPin=False,)
   CustomProperties Pin (PinId=D5CBAE54419805CAFE9F90BB4AAC62C6,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_0 56BCED2346461B390B07768867598603,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Knot Name="MaterialGraphNode_Knot_4" ExportPath="/Script/UnrealEd.MaterialGraphNode_Knot'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_4'"
   Begin Object Class=/Script/Engine.MaterialExpressionReroute Name="MaterialExpressionReroute_0" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_4.MaterialExpressionReroute_0'"
   End Object
   Begin Object Name="MaterialExpressionReroute_0" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_4.MaterialExpressionReroute_0'"
      Input=(Expression="/Script/Engine.MaterialExpressionReroute'MaterialGraphNode_Knot_6.MaterialExpressionReroute_8'")
      MaterialExpressionEditorX=400
      MaterialExpressionEditorY=32
      MaterialExpressionGuid=530E690D4723B52C253785AF50725183
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionReroute'MaterialExpressionReroute_0'"
   NodePosX=400
   NodePosY=32
   bCanRenameNode=False
   NodeGuid=8B14D59D4210496CA49215A7DE06A221
   CustomProperties Pin (PinId=7FF15AC5487DF460523606AC5AFDB3A3,PinName="InputPin",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Knot_6 7D21ACD04B5BA1EA4EEB2395D46B47B7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=B4C786FA423545272EED9F81D9CA4158,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_12 F6D0D03348C10280D64782B3B56B869D,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_12" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_12'"
   Begin Object Class=/Script/Engine.MaterialExpressionMultiply Name="MaterialExpressionMultiply_5" ExportPath="/Script/Engine.MaterialExpressionMultiply'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_12.MaterialExpressionMultiply_5'"
   End Object
   Begin Object Name="MaterialExpressionMultiply_5" ExportPath="/Script/Engine.MaterialExpressionMultiply'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_12.MaterialExpressionMultiply_5'"
      A=(Expression="/Script/Engine.MaterialExpressionReroute'MaterialGraphNode_Knot_4.MaterialExpressionReroute_0'")
      MaterialExpressionEditorX=448
      MaterialExpressionGuid=C1532F524DCEA642A09CE59F8B68FC10
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionMultiply'MaterialExpressionMultiply_5'"
   NodePosX=448
   NodeGuid=E2AA2EAC4DE80A713F880388EF59E9ED
   CustomProperties Pin (PinId=F6D0D03348C10280D64782B3B56B869D,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_Knot_4 B4C786FA423545272EED9F81D9CA4158,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=9A76640D4C91345EDDBF269D221991EA,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=79FF34B04F50FBE02A39B7A5E1418FD6,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_2 F66B95B44E6BA4EB1ECDB4877EB38891,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_20" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_20'"
   Begin Object Class=/Script/Engine.MaterialExpressionObjectLocalBounds Name="MaterialExpressionObjectLocalBounds_1" ExportPath="/Script/Engine.MaterialExpressionObjectLocalBounds'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_20.MaterialExpressionObjectLocalBounds_1'"
   End Object
   Begin Object Name="MaterialExpressionObjectLocalBounds_1" ExportPath="/Script/Engine.MaterialExpressionObjectLocalBounds'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_20.MaterialExpressionObjectLocalBounds_1'"
      MaterialExpressionEditorX=-2896
      MaterialExpressionEditorY=-400
      MaterialExpressionGuid=16FE6BE64A5907BE128D82927E8C0E26
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionObjectLocalBounds'MaterialExpressionObjectLocalBounds_1'"
   NodePosX=-2896
   NodePosY=-400
   NodeGuid=A83B96964689869E2F43E6B2E1DDC469
   CustomProperties Pin (PinId=D051141441791C56748386AA51B7DB50,PinName="Half Extents",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=1A7158654665DCD66D1E67AA7E6765FD,PinName="Extents",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Knot_6 B5AC9C18412A5B0929AC31915B44FA22,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=1FB4774A453A7438DD9370BD2229240A,PinName="Min",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_21 92C51A614FF32259F5EE80B5B5135584,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=12A107AB42A69EBBB4BEB4BDBEAE6158,PinName="Max",Direction="EGPD_Output",PinType.PinCategory="mask",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_21" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_21'"
   Begin Object Class=/Script/Engine.MaterialExpressionMultiply Name="MaterialExpressionMultiply_1" ExportPath="/Script/Engine.MaterialExpressionMultiply'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_21.MaterialExpressionMultiply_1'"
   End Object
   Begin Object Name="MaterialExpressionMultiply_1" ExportPath="/Script/Engine.MaterialExpressionMultiply'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_21.MaterialExpressionMultiply_1'"
      A=(Expression="/Script/Engine.MaterialExpressionObjectLocalBounds'MaterialGraphNode_20.MaterialExpressionObjectLocalBounds_1'",OutputIndex=2,Mask=1,MaskR=1,MaskG=1,MaskB=1)
      ConstB=-1.000000
      MaterialExpressionEditorX=-2608
      MaterialExpressionEditorY=-400
      MaterialExpressionGuid=7115882C4E167A3B32466692AD5A235C
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionMultiply'MaterialExpressionMultiply_1'"
   NodePosX=-2608
   NodePosY=-400
   NodeGuid=5EA995794E9F07C0A7B9779094F924CA
   CustomProperties Pin (PinId=92C51A614FF32259F5EE80B5B5135584,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_20 1FB4774A453A7438DD9370BD2229240A,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=932252A743CDE5AF9EBF81B612255375,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="-1.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=A5A3459742561109E4DB2A8F5258C81B,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Knot_5 628144524721EC4D1D6837934C24D8FE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Knot Name="MaterialGraphNode_Knot_5" ExportPath="/Script/UnrealEd.MaterialGraphNode_Knot'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_5'"
   Begin Object Class=/Script/Engine.MaterialExpressionReroute Name="MaterialExpressionReroute_7" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_5.MaterialExpressionReroute_7'"
   End Object
   Begin Object Name="MaterialExpressionReroute_7" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_5.MaterialExpressionReroute_7'"
      Input=(Expression="/Script/Engine.MaterialExpressionMultiply'MaterialGraphNode_21.MaterialExpressionMultiply_1'")
      MaterialExpressionEditorX=-2144
      MaterialExpressionEditorY=-432
      MaterialExpressionGuid=74E084E14E298DB72739508020DC0AF8
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionReroute'MaterialExpressionReroute_7'"
   NodePosX=-2144
   NodePosY=-432
   bCanRenameNode=False
   NodeGuid=33910155476C69547E3B808C02E5EF4B
   CustomProperties Pin (PinId=628144524721EC4D1D6837934C24D8FE,PinName="InputPin",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_21 A5A3459742561109E4DB2A8F5258C81B,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=76630B6449047067CB85C7BA29A4C738,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_8 407E79E346BF01D91835DD92651128C6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Knot Name="MaterialGraphNode_Knot_6" ExportPath="/Script/UnrealEd.MaterialGraphNode_Knot'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_6'"
   Begin Object Class=/Script/Engine.MaterialExpressionReroute Name="MaterialExpressionReroute_8" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_6.MaterialExpressionReroute_8'"
   End Object
   Begin Object Name="MaterialExpressionReroute_8" ExportPath="/Script/Engine.MaterialExpressionReroute'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Knot_6.MaterialExpressionReroute_8'"
      Input=(Expression="/Script/Engine.MaterialExpressionObjectLocalBounds'MaterialGraphNode_20.MaterialExpressionObjectLocalBounds_1'",OutputIndex=1,Mask=1,MaskR=1,MaskG=1,MaskB=1)
      MaterialExpressionEditorX=-2080
      MaterialExpressionEditorY=-80
      MaterialExpressionGuid=90AB20E04F19EAD0E0F37FA28D8BA540
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionReroute'MaterialExpressionReroute_8'"
   NodePosX=-2080
   NodePosY=-80
   bCanRenameNode=False
   NodeGuid=60A4BA424B5FBFCF9A67F8B2F80D525D
   CustomProperties Pin (PinId=B5AC9C18412A5B0929AC31915B44FA22,PinName="InputPin",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_20 1A7158654665DCD66D1E67AA7E6765FD,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=True,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=7D21ACD04B5BA1EA4EEB2395D46B47B7,PinName="OutputPin",Direction="EGPD_Output",PinType.PinCategory="wildcard",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Knot_2 01C914364BC877462FDEA2B8D3472B4D,MaterialGraphNode_Custom_1 E529628745D778728B006BB8D8B4FAC8,MaterialGraphNode_Knot_4 7FF15AC5487DF460523606AC5AFDB3A3,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_22" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_22'"
   Begin Object Class=/Script/Engine.MaterialExpressionVertexInterpolator Name="MaterialExpressionVertexInterpolator_0" ExportPath="/Script/Engine.MaterialExpressionVertexInterpolator'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_22.MaterialExpressionVertexInterpolator_0'"
   End Object
   Begin Object Name="MaterialExpressionVertexInterpolator_0" ExportPath="/Script/Engine.MaterialExpressionVertexInterpolator'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_22.MaterialExpressionVertexInterpolator_0'"
      Input=(Expression="/Script/Engine.MaterialExpressionCustom'MaterialGraphNode_Custom_0.MaterialExpressionCustom_2'")
      MaterialExpressionEditorX=688
      MaterialExpressionEditorY=-432
      MaterialExpressionGuid=C4C86E794A476F30AD62FCAA259179DA
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionVertexInterpolator'MaterialExpressionVertexInterpolator_0'"
   NodePosX=688
   NodePosY=-432
   NodeGuid=C4C82F85453D44AC837E199BDB3134B8
   CustomProperties Pin (PinId=164AC73F4B86EEDB7E5ECE93AF2678D5,PinName="VS",PinType.PinCategory="required",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_0 AF4C1E69462CCBD59FD6CDAFD9A95BED,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=C10995E94398941AA6EAF29648593535,PinName="PS",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_43 42DC685D432EA481873DBBB414F36184,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_42" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_42'"
   Begin Object Class=/Script/Engine.MaterialExpressionAdd Name="MaterialExpressionAdd_3" ExportPath="/Script/Engine.MaterialExpressionAdd'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_42.MaterialExpressionAdd_3'"
   End Object
   Begin Object Name="MaterialExpressionAdd_3" ExportPath="/Script/Engine.MaterialExpressionAdd'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_42.MaterialExpressionAdd_3'"
      A=(Expression="/Script/Engine.MaterialExpressionConstant3Vector'MaterialGraphNode_1.MaterialExpressionConstant3Vector_0'",Mask=1,MaskR=1,MaskG=1,MaskB=1)
      B=(Expression="/Script/Engine.MaterialExpressionMultiply'MaterialGraphNode_43.MaterialExpressionMultiply_0'")
      MaterialExpressionEditorX=1024
      MaterialExpressionEditorY=-544
      MaterialExpressionGuid=72A8C8FE4443A88A72B3579D529AE1B9
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionAdd'MaterialExpressionAdd_3'"
   NodePosX=1024
   NodePosY=-544
   NodeGuid=72C9F37240956CAD8CE1E4AC5E4465D3
   CustomProperties Pin (PinId=70AB43564198A863B0FCD4B9F291912C,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_1 597429E44A337F8EFF998AA7539751D0,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=6AE0647042ADD7552D1D6BA4A42B0F76,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="1.0",LinkedTo=(MaterialGraphNode_43 243E82F74CF983BE8A996299DA54D423,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=638E8D69403BED61E274A8B4B591B5B2,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_0 156D96F34497F69979397E8818DDAA80,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_43" ExportPath="/Script/UnrealEd.MaterialGraphNode'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_43'"
   Begin Object Class=/Script/Engine.MaterialExpressionMultiply Name="MaterialExpressionMultiply_0" ExportPath="/Script/Engine.MaterialExpressionMultiply'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_43.MaterialExpressionMultiply_0'"
   End Object
   Begin Object Name="MaterialExpressionMultiply_0" ExportPath="/Script/Engine.MaterialExpressionMultiply'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_43.MaterialExpressionMultiply_0'"
      A=(Expression="/Script/Engine.MaterialExpressionVertexInterpolator'MaterialGraphNode_22.MaterialExpressionVertexInterpolator_0'")
      ConstB=4.000000
      MaterialExpressionEditorX=896
      MaterialExpressionEditorY=-448
      MaterialExpressionGuid=91EAE26B4DC685CFE1FCBAAFADA19F37
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionMultiply'MaterialExpressionMultiply_0'"
   NodePosX=896
   NodePosY=-448
   NodeGuid=24CB389746259EA32100D5BD4251841F
   CustomProperties Pin (PinId=42DC685D432EA481873DBBB414F36184,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="0.0",LinkedTo=(MaterialGraphNode_22 C10995E94398941AA6EAF29648593535,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=F2CEFE6C4E40FDE7C8F68EA69B782BC5,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="red",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,DefaultValue="4.0",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
   CustomProperties Pin (PinId=243E82F74CF983BE8A996299DA54D423,PinName="Output",PinFriendlyName=NSLOCTEXT("MaterialGraphNode", "Space", " "),Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_42 6AE0647042ADD7552D1D6BA4A42B0F76,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_0" ExportPath="/Script/UnrealEd.MaterialGraphNode_Comment'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Comment_0'"
   Begin Object Class=/Script/Engine.MaterialExpressionComment Name="MaterialExpressionComment_0" ExportPath="/Script/Engine.MaterialExpressionComment'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Comment_0.MaterialExpressionComment_0'"
   End Object
   Begin Object Name="MaterialExpressionComment_0" ExportPath="/Script/Engine.MaterialExpressionComment'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Comment_0.MaterialExpressionComment_0'"
      SizeX=752
      SizeY=256
      Text="バウンディングMin位置基準のローカル頂点座標"
      CommentColor=(R=0.150000,G=0.150000,B=0.150000,A=0.500000)
      MaterialExpressionEditorX=-2432
      MaterialExpressionEditorY=-816
      MaterialExpressionGuid=0EBC033440E9F4ABF76695A0D74D7320
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpressionComment="/Script/Engine.MaterialExpressionComment'MaterialExpressionComment_0'"
   CommentColor=(R=0.150000,G=0.150000,B=0.150000,A=0.500000)
   bCommentBubbleVisible_InDetailsPanel=False
   NodePosX=-2432
   NodePosY=-816
   NodeWidth=752
   NodeHeight=256
   bCommentBubblePinned=False
   bCommentBubbleVisible=False
   NodeComment="バウンディングMin位置基準のローカル頂点座標"
   NodeGuid=11F243C04D08D30F3502E382BE3A65CF
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_1" ExportPath="/Script/UnrealEd.MaterialGraphNode_Comment'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Comment_1'"
   Begin Object Class=/Script/Engine.MaterialExpressionComment Name="MaterialExpressionComment_1" ExportPath="/Script/Engine.MaterialExpressionComment'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Comment_1.MaterialExpressionComment_1'"
   End Object
   Begin Object Name="MaterialExpressionComment_1" ExportPath="/Script/Engine.MaterialExpressionComment'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Comment_1.MaterialExpressionComment_1'"
      SizeX=624
      SizeY=432
      Text="Boundingサイズぴったりの頂点がLatticeに含まれないためBoundingのサイズを若干バイアス"
      CommentColor=(R=0.150000,G=0.150000,B=0.150000,A=0.500000)
      MaterialExpressionEditorX=-2992
      MaterialExpressionEditorY=-528
      MaterialExpressionGuid=0AFC249F4128B6A353DFD98BB97A1C5B
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpressionComment="/Script/Engine.MaterialExpressionComment'MaterialExpressionComment_1'"
   CommentColor=(R=0.150000,G=0.150000,B=0.150000,A=0.500000)
   bCommentBubbleVisible_InDetailsPanel=False
   NodePosX=-2992
   NodePosY=-528
   NodeWidth=624
   NodeHeight=432
   bCommentBubblePinned=False
   bCommentBubbleVisible=False
   NodeComment="Boundingサイズぴったりの頂点がLatticeに含まれないためBoundingのサイズを若干バイアス"
   NodeGuid=2384E8E640C68B2C42D1DCB392B8DCB8
End Object
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_2" ExportPath="/Script/UnrealEd.MaterialGraphNode_Comment'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Comment_2'"
   Begin Object Class=/Script/Engine.MaterialExpressionComment Name="MaterialExpressionComment_2" ExportPath="/Script/Engine.MaterialExpressionComment'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Comment_2.MaterialExpressionComment_2'"
   End Object
   Begin Object Name="MaterialExpressionComment_2" ExportPath="/Script/Engine.MaterialExpressionComment'/Engine/Transient.M_DynamicLatticeDeform:MaterialGraph_0.MaterialGraphNode_Comment_2.MaterialExpressionComment_2'"
      SizeX=403
      SizeY=300
      Text="変位を適当にスケール"
      CommentColor=(R=0.150000,G=0.150000,B=0.150000,A=0.500000)
      MaterialExpressionEditorX=336
      MaterialExpressionEditorY=-64
      MaterialExpressionGuid=2C8BE47F4C25F4036AD03E9F262198ED
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.M_DynamicLatticeDeform'"
   End Object
   MaterialExpressionComment="/Script/Engine.MaterialExpressionComment'MaterialExpressionComment_2'"
   CommentColor=(R=0.150000,G=0.150000,B=0.150000,A=0.500000)
   bCommentBubbleVisible_InDetailsPanel=False
   NodePosX=336
   NodePosY=-64
   NodeWidth=403
   NodeHeight=300
   bCommentBubblePinned=False
   bCommentBubbleVisible=False
   NodeComment="変位を適当にスケール"
   NodeGuid=6C8309484C008F0F7DBFFAA45B57778E
End Object
Member
Initial Vtx Setup
TransformVtxNormalizeToWorld
TransformVtxWorldToNormalize
VtxIndexToCellPosition
UpdateLatticeVtxTexture

BP


UEマテリアルネタ帳

雑多なネタを書いてあとで探しやすくするためのページ.
役に立ったらイイネや紹介してね☆(ゝω・)vキャピ

Simplex頂点に任意の乱数を利用できるSimplex Noise

nagakagachi.hatenablog.com


入力ベクトルの主要軸と第二主要軸を抽出する

ベクトルのコンポーネントについて絶対値が大きい順で第一位(Dominant), 第二位(Secondary)の軸の情報を抽出する.
軸インデックス:x=0, y=1, z=2

軸マスクベクトル (1, 0, 0), (0, 1, 0), (0, 0, 1)
を返す.
もっとシンプルな記述ができそうなので後でアップデートするかも.

const float3 abs_dir = abs(in_dir);

const int3 comp0 = abs_dir.xyz > abs_dir.yzx;
const int3 comp1 = abs_dir.xyz > abs_dir.zxy;
const int3 rank = comp0+comp1;

out_dominant_axis_index = 0;
out_secondary_axis_index = 0;
out_dominant_axis_mask_vec = float3(0.0, 0.0, 0.0);
out_secondary_axis_mask_vec = float3(0.0, 0.0, 0.0);
for(int i = 0; i < 3; ++i)
{
  if(2 == rank[i])
  {
    out_dominant_axis_index = i;
  }
  if(1 == rank[i])
  {
    out_secondary_axis_index = i;
  }
}
out_dominant_axis_mask_vec[out_dominant_axis_index] = 1.0;
out_secondary_axis_mask_vec[out_secondary_axis_index] = 1.0;

return out_dominant_axis_mask_vec;