Announcement

Collapse
No announcement yet.

POM material

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    If you want multiple POM layers, you need to do the parallax for each layer using its own heightmap. Technically even the alpha needs to have parallax to be correct but it is impossible to do that for landscape layers. In general as long as the base alpha is somewhat blurry that part should not be noticeable.

    Click image for larger version

Name:	POM_Blend_01.JPG
Views:	1
Size:	58.2 KB
ID:	1082630

    Click image for larger version

Name:	POM_Blend_012.JPG
Views:	1
Size:	112.1 KB
ID:	1082631

    The custom nodes on the left are simple "SampleGrad" nodes that fix some bad mips from sampling with parallax UVs.

    The code for that node is:

    Code:
    return Tex.SampleGrad(TexSampler,UV,InDDX,InDDY)
    Ryan Brucks
    Principal Technical Artist, Epic Games

    Comment


      So I have the shader working without silhouette, but when I apply it to terrain it totally flips out.
      Similarly, if I apply it to an object that has uv coordinates pelted, it crashes the editor or may even crash the machine.

      Comment


        Is there any place that discusses the different rendering constraints for decals and terrain? When I apply my parallax shader to terrain it goes crazy.

        Comment


          I was able to put a POM material on terrain with no issue. Are you using UVs or WorldCoords for the UV input? If you are using UVs most likely what is happening is the landscape coords are not in alignment with the worldposition axes... try swapping to UVs instead of worldposition or try rotating your terrain 90 degrees.

          The issue with pelt mapping is strange. I have no idea what might cause that. I have tested on a variety of meshes and never seen different behavior on different meshes. If you can send me the mesh (just upload it somewhere) I can try to reproduce it.
          Ryan Brucks
          Principal Technical Artist, Epic Games

          Comment


            I don't seem to get it to work properly in 4.9Pre. Anyone has maybe an example Material?

            Comment


              Originally posted by RyanB View Post
              hmm that actually works? I will have to try it. I thought the fact that was an option was a bug since t3d used to be an old bsp export format.

              *edit* I dont really see the point in t3d since you still have to copy the text from the t3d file. There is no import t3d ability from the content browser that I can see.
              Try this I guess. You probably want to do the matfunction first but even so it probably will have to be reconnected to all the pins.

              material:
              Code:
              Begin Object Class=Material Name="M_Parallax_Cheap"
                 Begin Object Class=MaterialExpressionAbs Name="MaterialExpressionAbs_21"
                 End Object
                 Begin Object Class=MaterialExpressionAdd Name="MaterialExpressionAdd_0"
                 End Object
                 Begin Object Class=MaterialExpressionAdd Name="MaterialExpressionAdd_1"
                 End Object
                 Begin Object Class=MaterialExpressionAdd Name="MaterialExpressionAdd_2"
                 End Object
                 Begin Object Class=MaterialExpressionAdd Name="MaterialExpressionAdd_4"
                 End Object
                 Begin Object Class=MaterialExpressionAdd Name="MaterialExpressionAdd_6"
                 End Object
                 Begin Object Class=MaterialExpressionAdd Name="MaterialExpressionAdd_7"
                 End Object
                 Begin Object Class=MaterialExpressionAppendVector Name="MaterialExpressionAppendVector_0"
                 End Object
                 Begin Object Class=MaterialExpressionCameraVectorWS Name="MaterialExpressionCameraVectorWS_0"
                 End Object
                 Begin Object Class=MaterialExpressionCameraVectorWS Name="MaterialExpressionCameraVectorWS_22"
                 End Object
                 Begin Object Class=MaterialExpressionCameraVectorWS Name="MaterialExpressionCameraVectorWS_23"
                 End Object
                 Begin Object Class=MaterialExpressionClamp Name="MaterialExpressionClamp_0"
                 End Object
                 Begin Object Class=MaterialExpressionClamp Name="MaterialExpressionClamp_1"
                 End Object
                 Begin Object Class=MaterialExpressionClamp Name="MaterialExpressionClamp_7"
                 End Object
                 Begin Object Class=MaterialExpressionCollectionParameter Name="MaterialExpressionCollectionParameter_0"
                 End Object
                 Begin Object Class=MaterialExpressionComment Name="MaterialExpressionComment_2"
                 End Object
                 Begin Object Class=MaterialExpressionComment Name="MaterialExpressionComment_5"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_1"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_11"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_12"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_2"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_26"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_27"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_53"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_1"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_13"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_32"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_5"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_8"
                 End Object
                 Begin Object Class=MaterialExpressionConstant3Vector Name="MaterialExpressionConstant3Vector_1"
                 End Object
                 Begin Object Class=MaterialExpressionCustom Name="MaterialExpressionCustom_11"
                 End Object
                 Begin Object Class=MaterialExpressionDDX Name="MaterialExpressionDDX_21"
                 End Object
                 Begin Object Class=MaterialExpressionDDY Name="MaterialExpressionDDY_21"
                 End Object
                 Begin Object Class=MaterialExpressionDistance Name="MaterialExpressionDistance_16"
                 End Object
                 Begin Object Class=MaterialExpressionDistance Name="MaterialExpressionDistance_4"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_1"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_11"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_37"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_38"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_9"
                 End Object
                 Begin Object Class=MaterialExpressionDotProduct Name="MaterialExpressionDotProduct_11"
                 End Object
                 Begin Object Class=MaterialExpressionDotProduct Name="MaterialExpressionDotProduct_8"
                 End Object
                 Begin Object Class=MaterialExpressionFloor Name="MaterialExpressionFloor_11"
                 End Object
                 Begin Object Class=MaterialExpressionLinearInterpolate Name="MaterialExpressionLinearInterpolate_11"
                 End Object
                 Begin Object Class=MaterialExpressionLinearInterpolate Name="MaterialExpressionLinearInterpolate_2"
                 End Object
                 Begin Object Class=MaterialExpressionLinearInterpolate Name="MaterialExpressionLinearInterpolate_3"
                 End Object
                 Begin Object Class=MaterialExpressionLinearInterpolate Name="MaterialExpressionLinearInterpolate_9"
                 End Object
                 Begin Object Class=MaterialExpressionMaterialFunctionCall Name="MaterialExpressionMaterialFunctionCall_25"
                 End Object
                 Begin Object Class=MaterialExpressionMaterialFunctionCall Name="MaterialExpressionMaterialFunctionCall_32"
                 End Object
                 Begin Object Class=MaterialExpressionMin Name="MaterialExpressionMin_0"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_0"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_1"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_10"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_11"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_18"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_19"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_20"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_21"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_22"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_3"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_4"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_41"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_42"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_43"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_48"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_5"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_57"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_7"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_8"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_9"
                 End Object
                 Begin Object Class=MaterialExpressionNormalize Name="MaterialExpressionNormalize_11"
                 End Object
                 Begin Object Class=MaterialExpressionNormalize Name="MaterialExpressionNormalize_5"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_0"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_1"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_12"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_13"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_14"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_16"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_17"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_20"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_21"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_3"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_4"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_40"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_5"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_6"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_7"
                 End Object
                 Begin Object Class=MaterialExpressionStaticBool Name="MaterialExpressionStaticBool_2"
                 End Object
                 Begin Object Class=MaterialExpressionStaticBoolParameter Name="MaterialExpressionStaticBoolParameter_0"
                 End Object
                 Begin Object Class=MaterialExpressionStaticSwitchParameter Name="MaterialExpressionStaticSwitchParameter_0"
                 End Object
                 Begin Object Class=MaterialExpressionSubtract Name="MaterialExpressionSubtract_2"
                 End Object
                 Begin Object Class=MaterialExpressionSubtract Name="MaterialExpressionSubtract_4"
                 End Object
                 Begin Object Class=MaterialExpressionTextureCoordinate Name="MaterialExpressionTextureCoordinate_0"
                 End Object
                 Begin Object Class=MaterialExpressionTextureCoordinate Name="MaterialExpressionTextureCoordinate_1"
                 End Object
                 Begin Object Class=MaterialExpressionTextureCoordinate Name="MaterialExpressionTextureCoordinate_11"
                 End Object
                 Begin Object Class=MaterialExpressionTextureCoordinate Name="MaterialExpressionTextureCoordinate_13"
                 End Object
                 Begin Object Class=MaterialExpressionTextureCoordinate Name="MaterialExpressionTextureCoordinate_20"
                 End Object
                 Begin Object Class=MaterialExpressionTextureCoordinate Name="MaterialExpressionTextureCoordinate_4"
                 End Object
                 Begin Object Class=MaterialExpressionTextureObject Name="MaterialExpressionTextureObject_7"
                 End Object
                 Begin Object Class=MaterialExpressionTextureObjectParameter Name="MaterialExpressionTextureObjectParameter_7"
                 End Object
                 Begin Object Class=MaterialExpressionTextureSample Name="MaterialExpressionTextureSample_0"
                 End Object
                 Begin Object Class=MaterialExpressionTextureSampleParameter2D Name="MaterialExpressionTextureSampleParameter2D_0"
                 End Object
                 Begin Object Class=MaterialExpressionTextureSampleParameter2D Name="MaterialExpressionTextureSampleParameter2D_1"
                 End Object
                 Begin Object Class=MaterialExpressionTransform Name="MaterialExpressionTransform_0"
                 End Object
                 Begin Object Class=MaterialExpressionTransform Name="MaterialExpressionTransform_11"
                 End Object
                 Begin Object Class=MaterialExpressionVectorParameter Name="MaterialExpressionVectorParameter_0"
                 End Object
                 Begin Object Class=MaterialExpressionVectorParameter Name="MaterialExpressionVectorParameter_1"
                 End Object
                 Begin Object Class=MaterialExpressionVertexNormalWS Name="MaterialExpressionVertexNormalWS_11"
                 End Object
                 Begin Object Class=SceneThumbnailInfoWithPrimitive Name="SceneThumbnailInfoWithPrimitive_0"
                 End Object
                 Begin Object Name="MaterialExpressionAbs_21"
                    Input=(Expression=MaterialExpressionDotProduct'M_Parallax_Cheap:MaterialExpressionDotProduct_11')
                    MaterialExpressionEditorX=280
                    MaterialExpressionEditorY=3927
                    MaterialExpressionGuid=C957298A4F025B1E0437F5B65C5C04BC
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionAdd_0"
                    A=(Expression=MaterialExpressionVectorParameter'M_Parallax_Cheap:MaterialExpressionVectorParameter_0',Mask=1,MaskR=1,MaskG=1,MaskB=1)
                    B=(Expression=MaterialExpressionMaterialFunctionCall'M_Parallax_Cheap:MaterialExpressionMaterialFunctionCall_25',OutputIndex=2)
                    MaterialExpressionEditorX=768
                    MaterialExpressionEditorY=1184
                    MaterialExpressionGuid=C521F08042D306E582F8BA9EB2DBFBE0
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionAdd_1"
                    A=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_1')
                    B=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_4')
                    MaterialExpressionEditorX=544
                    MaterialExpressionEditorY=752
                    MaterialExpressionGuid=C0FE351A484966DB6848328B6A5CE3C8
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionAdd_2"
                    A=(Expression=MaterialExpressionTextureCoordinate'M_Parallax_Cheap:MaterialExpressionTextureCoordinate_13')
                    B=(Expression=MaterialExpressionCustom'M_Parallax_Cheap:MaterialExpressionCustom_11')
                    MaterialExpressionEditorX=1960
                    MaterialExpressionEditorY=3879
                    MaterialExpressionGuid=477AE34D4027CF9277A057876C852ED8
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionAdd_4"
                    A=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_5')
                    B=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_5')
                    MaterialExpressionEditorX=2096
                    MaterialExpressionEditorY=3392
                    MaterialExpressionGuid=0BD70CE44725E5CE87698A99D814A8AA
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionAdd_6"
                    A=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_5')
                    B=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_9')
                    MaterialExpressionEditorX=1840
                    MaterialExpressionEditorY=3328
                    MaterialExpressionGuid=7373FEB04C746BD3B5DCC185C4BB4A92
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionAdd_7"
                    A=(Expression=MaterialExpressionTextureCoordinate'M_Parallax_Cheap:MaterialExpressionTextureCoordinate_1')
                    B=(Expression=MaterialExpressionComponentMask'M_Parallax_Cheap:MaterialExpressionComponentMask_2')
                    MaterialExpressionEditorX=1248
                    MaterialExpressionEditorY=2672
                    MaterialExpressionGuid=A46ECB5D47863527FF8CFCB172347BC4
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionAppendVector_0"
                    A=(Expression=MaterialExpressionVectorParameter'M_Parallax_Cheap:MaterialExpressionVectorParameter_1',Mask=1,MaskR=1,MaskG=1,MaskB=1)
                    B=(Expression=MaterialExpressionVectorParameter'M_Parallax_Cheap:MaterialExpressionVectorParameter_1',OutputIndex=4,Mask=1,MaskA=1)
                    MaterialExpressionEditorX=-752
                    MaterialExpressionEditorY=1536
                    MaterialExpressionGuid=653B1A07491B9BC9DDD1569FCB8C7974
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionCameraVectorWS_0"
                    MaterialExpressionEditorX=-464
                    MaterialExpressionEditorY=2992
                    MaterialExpressionGuid=F5994B5641FFC610379F199E884D2F66
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionCameraVectorWS_22"
                    MaterialExpressionEditorX=-56
                    MaterialExpressionEditorY=3879
                    MaterialExpressionGuid=171DD6904AF05619E9F790A04CA036B3
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionCameraVectorWS_23"
                    MaterialExpressionEditorX=-264
                    MaterialExpressionEditorY=4311
                    MaterialExpressionGuid=AE2564C14E5AD1E55F6521B7DD55FE53
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionClamp_0"
                    Input=(Expression=MaterialExpressionSubtract'M_Parallax_Cheap:MaterialExpressionSubtract_2')
                    MaterialExpressionEditorX=1216
                    MaterialExpressionEditorY=3232
                    MaterialExpressionGuid=A5B9DFD84EED749B3907598EB19A08BB
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionClamp_1"
                    Input=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_7')
                    MaterialExpressionEditorX=1472
                    MaterialExpressionEditorY=2432
                    MaterialExpressionGuid=E8A9021B436EB3EFC711BFAA86EE8155
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionClamp_7"
                    Input=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_18')
                    MaterialExpressionEditorX=576
                    MaterialExpressionEditorY=1584
                    MaterialExpressionGuid=999A173D4AAF520FFD5F5F94F0DCB202
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionCollectionParameter_0"
                    Collection=MaterialParameterCollection'/Game/Developers/ryanbrucks/materials/MPC/MPC_GlobalParam_Test.MPC_GlobalParam_Test'
                    ParameterName="LightVector"
                    ParameterId=0141A73B423CA04D01F2F19CCC3EE0CC
                    MaterialExpressionEditorX=-960
                    MaterialExpressionEditorY=1760
                    MaterialExpressionGuid=2BFEF7BF41E265E3E459758B8BAC3787
                    Material=Material'M_Parallax_Cheap'
                    bCollapsed=True
                 End Object
                 Begin Object Name="MaterialExpressionComment_2"
                    SizeX=680
                    SizeY=485
                    Text="UV mask, no good"
                    MaterialExpressionEditorX=1038
                    MaterialExpressionEditorY=-34
                    MaterialExpressionGuid=C710329C486580FCFAD112A1989EA59E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionComment_5"
                    SizeX=2480
                    SizeY=928
                    Text="old test"
                    MaterialExpressionEditorX=-320
                    MaterialExpressionEditorY=3600
                    MaterialExpressionGuid=3716AF7748640343116F62A39F7BB9BA
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_1"
                    Input=(Expression=MaterialExpressionTextureCoordinate'M_Parallax_Cheap:MaterialExpressionTextureCoordinate_0')
                    G=True
                    MaterialExpressionEditorX=781
                    MaterialExpressionEditorY=3232
                    MaterialExpressionGuid=64ED10604093362AA4BC3F986437CC9D
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_11"
                    Input=(Expression=MaterialExpressionTransform'M_Parallax_Cheap:MaterialExpressionTransform_0')
                    R=True
                    G=True
                    MaterialExpressionEditorX=-112
                    MaterialExpressionEditorY=2944
                    MaterialExpressionGuid=2803DD6B445CD339E8EA63ACC98A4C08
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_12"
                    Input=(Expression=MaterialExpressionTransform'M_Parallax_Cheap:MaterialExpressionTransform_0')
                    B=True
                    MaterialExpressionEditorX=-16
                    MaterialExpressionEditorY=3088
                    MaterialExpressionGuid=2803DD6B445CD339E8EA63ACC98A4C08
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_2"
                    Input=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_11')
                    R=True
                    G=True
                    MaterialExpressionEditorX=1036
                    MaterialExpressionEditorY=2760
                    MaterialExpressionGuid=DD4EDCB14F561E13B114E5AAB4D4A715
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_26"
                    Input=(Expression=MaterialExpressionTransform'M_Parallax_Cheap:MaterialExpressionTransform_11')
                    R=True
                    G=True
                    MaterialExpressionEditorX=152
                    MaterialExpressionEditorY=4247
                    MaterialExpressionGuid=2803DD6B445CD339E8EA63ACC98A4C08
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_27"
                    Input=(Expression=MaterialExpressionTransform'M_Parallax_Cheap:MaterialExpressionTransform_11')
                    B=True
                    MaterialExpressionEditorX=168
                    MaterialExpressionEditorY=4407
                    MaterialExpressionGuid=2803DD6B445CD339E8EA63ACC98A4C08
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_53"
                    Input=(Expression=MaterialExpressionCollectionParameter'M_Parallax_Cheap:MaterialExpressionCollectionParameter_0')
                    R=True
                    G=True
                    B=True
                    MaterialExpressionEditorX=-752
                    MaterialExpressionEditorY=1760
                    MaterialExpressionGuid=32DA4B024337BA82332DA483DBEF78EC
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_1"
                    MaterialExpressionEditorX=1552
                    MaterialExpressionEditorY=1072
                    MaterialExpressionGuid=D0B19FF44E62B557D857E3947CC3B3DA
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_13"
                    MaterialExpressionEditorX=1408
                    MaterialExpressionEditorY=1840
                    MaterialExpressionGuid=FA60325640884D70F82C50B82BB52F02
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_32"
                    MaterialExpressionEditorX=280
                    MaterialExpressionEditorY=4327
                    MaterialExpressionGuid=0689E626441DE928CBCE5594DC62A018
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_5"
                    R=1.000000
                    MaterialExpressionEditorX=992
                    MaterialExpressionEditorY=1104
                    MaterialExpressionGuid=36654AE24E37A602CCDF5CAC1F1BE557
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_8"
                    MaterialExpressionEditorX=16
                    MaterialExpressionEditorY=3024
                    MaterialExpressionGuid=0689E626441DE928CBCE5594DC62A018
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionConstant3Vector_1"
                    Constant=(R=0.000000,G=0.000000,B=1.000000,A=0.000000)
                    MaterialExpressionEditorX=1744
                    MaterialExpressionEditorY=2608
                    MaterialExpressionGuid=86B290324AFDC0F32145249F22265012
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionCustom_11"
                    Code="float rayheight=1;\r\nfloat oldray=1;\r\nfloat2 offset=0;\r\nfloat oldtex=1;\r\nfloat texatray;\r\nfloat2 lastoffset=0;\r\nint i;\r\n\r\nwhile (i<MaxSteps+1)\r\n{\r\nfloat texatray=Tex.SampleGrad(TexSampler,UV+offset,InDDX,InDDY);\r\n\r\n//float texatray=Texture2DSampleLevel(Tex,TexSampler,UV+offset,Mip_Level);\r\n\r\nif (texatray > rayheight)\r\n{\r\nfloat xintersect = (oldray-oldtex)+(texatray-rayheight);\r\nxintersect=1-(texatray-rayheight)/xintersect;\r\noffset=lerp(lastoffset, offset, xintersect);\r\nbreak;\r\n}\r\n\r\noldray=rayheight;\r\nrayheight-=stepsize;\r\nlastoffset=offset;\r\noffset+=UVDist*stepsize;\r\noldtex=texatray;\r\n\r\ni++;\r\n}\r\n//float3 output;\r\n//output.xy=offset;\r\n//output.z=1-rayheight;\r\n//return output;\r\nreturn offset;\r\n\r\n\r\n\r\n"
                    OutputType=CMOT_Float2
                    Inputs(0)=(InputName="Tex",Input=(Expression=MaterialExpressionTextureObject'M_Parallax_Cheap:MaterialExpressionTextureObject_7'))
                    Inputs(1)=(InputName="UV",Input=(Expression=MaterialExpressionTextureCoordinate'M_Parallax_Cheap:MaterialExpressionTextureCoordinate_20'))
                    Inputs(2)=(InputName="MaxSteps",Input=(Expression=MaterialExpressionFloor'M_Parallax_Cheap:MaterialExpressionFloor_11'))
                    Inputs(3)=(InputName="stepsize",Input=(Expression=MaterialExpressionDivide'M_Parallax_Cheap:MaterialExpressionDivide_37'))
                    Inputs(4)=(InputName="UVDist",Input=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_43'))
                    Inputs(5)=(InputName="InDDX",Input=(Expression=MaterialExpressionDDX'M_Parallax_Cheap:MaterialExpressionDDX_21'))
                    Inputs(6)=(InputName="InDDY",Input=(Expression=MaterialExpressionDDY'M_Parallax_Cheap:MaterialExpressionDDY_21'))
                    MaterialExpressionEditorX=1656
                    MaterialExpressionEditorY=3927
                    MaterialExpressionGuid=DC87119C4C026BA942E14CAB4130F280
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionDDX_21"
                    Value=(Expression=MaterialExpressionTextureCoordinate'M_Parallax_Cheap:MaterialExpressionTextureCoordinate_20')
                    MaterialExpressionEditorX=1560
                    MaterialExpressionEditorY=4279
                    MaterialExpressionGuid=87C683F34B184A3D0612909BEF3C2F91
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionDDY_21"
                    Value=(Expression=MaterialExpressionTextureCoordinate'M_Parallax_Cheap:MaterialExpressionTextureCoordinate_20')
                    MaterialExpressionEditorX=1560
                    MaterialExpressionEditorY=4343
                    MaterialExpressionGuid=3EB3139E43F0E9625365739D9201CD1E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionDistance_16"
                    A=(Expression=MaterialExpressionComponentMask'M_Parallax_Cheap:MaterialExpressionComponentMask_26')
                    B=(Expression=MaterialExpressionConstant'M_Parallax_Cheap:MaterialExpressionConstant_32')
                    MaterialExpressionEditorX=424
                    MaterialExpressionEditorY=4295
                    MaterialExpressionGuid=DB0A48004C8E5026A8EFC88FD81FA14E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionDistance_4"
                    A=(Expression=MaterialExpressionComponentMask'M_Parallax_Cheap:MaterialExpressionComponentMask_11')
                    B=(Expression=MaterialExpressionConstant'M_Parallax_Cheap:MaterialExpressionConstant_8')
                    MaterialExpressionEditorX=160
                    MaterialExpressionEditorY=2992
                    MaterialExpressionGuid=DB0A48004C8E5026A8EFC88FD81FA14E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_1"
                    A=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_0')
                    ConstB=1.000000
                    MaterialExpressionEditorX=208
                    MaterialExpressionEditorY=768
                    MaterialExpressionGuid=2BB10ABB4AC825F07F4A9AAB7C5914CD
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_11"
                    A=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_7')
                    B=(Expression=MaterialExpressionComponentMask'M_Parallax_Cheap:MaterialExpressionComponentMask_12')
                    MaterialExpressionEditorX=368
                    MaterialExpressionEditorY=2864
                    MaterialExpressionGuid=641FD6E14DE374BE2EEF3C8A59A64A24
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_37"
                    B=(Expression=MaterialExpressionFloor'M_Parallax_Cheap:MaterialExpressionFloor_11')
                    MaterialExpressionEditorX=840
                    MaterialExpressionEditorY=3927
                    MaterialExpressionGuid=4DBC8A43477445FCF8AB4297D05208F7
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_38"
                    A=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_41')
                    B=(Expression=MaterialExpressionComponentMask'M_Parallax_Cheap:MaterialExpressionComponentMask_27')
                    ConstB=1.000000
                    MaterialExpressionEditorX=728
                    MaterialExpressionEditorY=4375
                    MaterialExpressionGuid=B490B4AA41DF6570DA3DC69D1B04458C
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_9"
                    A=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_21')
                    B=(Expression=MaterialExpressionComponentMask'M_Parallax_Cheap:MaterialExpressionComponentMask_12')
                    ConstB=1.000000
                    MaterialExpressionEditorX=464
                    MaterialExpressionEditorY=3072
                    MaterialExpressionGuid=B490B4AA41DF6570DA3DC69D1B04458C
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionDotProduct_11"
                    A=(Expression=MaterialExpressionCameraVectorWS'M_Parallax_Cheap:MaterialExpressionCameraVectorWS_22')
                    B=(Expression=MaterialExpressionVertexNormalWS'M_Parallax_Cheap:MaterialExpressionVertexNormalWS_11')
                    MaterialExpressionEditorX=136
                    MaterialExpressionEditorY=3927
                    MaterialExpressionGuid=FEF645B241FE6B1B7D53468EFE69E068
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionDotProduct_8"
                    A=(Expression=MaterialExpressionTextureSampleParameter2D'M_Parallax_Cheap:MaterialExpressionTextureSampleParameter2D_0',Mask=1,MaskR=1,MaskG=1,MaskB=1)
                    B=(Expression=MaterialExpressionMaterialFunctionCall'M_Parallax_Cheap:MaterialExpressionMaterialFunctionCall_25',OutputIndex=5)
                    MaterialExpressionEditorX=272
                    MaterialExpressionEditorY=1584
                    MaterialExpressionGuid=CDF793A1486DC67B532554ABD72C6605
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionFloor_11"
                    Input=(Expression=MaterialExpressionLinearInterpolate'M_Parallax_Cheap:MaterialExpressionLinearInterpolate_11')
                    MaterialExpressionEditorX=680
                    MaterialExpressionEditorY=3831
                    MaterialExpressionGuid=A7AC9114474AE1B39C1EB9A2176B4E13
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionLinearInterpolate_11"
                    Alpha=(Expression=MaterialExpressionAbs'M_Parallax_Cheap:MaterialExpressionAbs_21')
                    MaterialExpressionEditorX=488
                    MaterialExpressionEditorY=3767
                    MaterialExpressionGuid=21FEBF264E5CC37E2D470592DEC756BF
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionLinearInterpolate_2"
                    B=(Expression=MaterialExpressionTextureSample'M_Parallax_Cheap:MaterialExpressionTextureSample_0',Mask=1,MaskR=1,MaskG=1,MaskB=1)
                    Alpha=(Expression=MaterialExpressionClamp'M_Parallax_Cheap:MaterialExpressionClamp_1')
                    MaterialExpressionEditorX=1936
                    MaterialExpressionEditorY=2320
                    MaterialExpressionGuid=A665D72B417CEE712A269EB7B62C8F7F
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionLinearInterpolate_3"
                    A=(Mask=1,MaskR=1,MaskG=1,MaskB=1)
                    B=(Expression=MaterialExpressionConstant3Vector'M_Parallax_Cheap:MaterialExpressionConstant3Vector_1')
                    Alpha=(Expression=MaterialExpressionClamp'M_Parallax_Cheap:MaterialExpressionClamp_1')
                    MaterialExpressionEditorX=1904
                    MaterialExpressionEditorY=2432
                    MaterialExpressionGuid=A665D72B417CEE712A269EB7B62C8F7F
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionLinearInterpolate_9"
                    B=(Expression=MaterialExpressionVectorParameter'M_Parallax_Cheap:MaterialExpressionVectorParameter_0',Mask=1,MaskR=1,MaskG=1,MaskB=1)
                    Alpha=(Expression=MaterialExpressionClamp'M_Parallax_Cheap:MaterialExpressionClamp_7')
                    ConstA=1.000000
                    MaterialExpressionEditorX=608
                    MaterialExpressionEditorY=1120
                    MaterialExpressionGuid=27CB2A064C08C4D64314B8AAA7CBC9DD
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMaterialFunctionCall_25"
                    MaterialFunction=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions01/Texturing/ParallaxOcclusionMapping.ParallaxOcclusionMapping'
                    FunctionInputs(0)=(ExpressionInputId=D3CD700647D7EF6A57FF4EB239783FD9,Input=(Expression=MaterialExpressionTextureObjectParameter'M_Parallax_Cheap:MaterialExpressionTextureObjectParameter_7',InputName="Heightmap Texture"))
                    FunctionInputs(1)=(ExpressionInputId=87508BD245D6CCD2972534BB5478DF07,Input=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_13',InputName="Height Ratio"))
                    FunctionInputs(2)=(ExpressionInputId=C6EB5A304CEDCCB94B51698214927D75,Input=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_14',InputName="Min Steps"))
                    FunctionInputs(3)=(ExpressionInputId=38DC91194340C3172D478F8134871AAC,Input=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_12',InputName="Max Steps"))
                    FunctionInputs(4)=(ExpressionInputId=5DD7ACAE4E3F667915F3AFB368F146B7,Input=(Expression=MaterialExpressionTextureCoordinate'M_Parallax_Cheap:MaterialExpressionTextureCoordinate_11',InputName="UVs"))
                    FunctionInputs(5)=(ExpressionInputId=9AC5B0694B7F9A6A4A7A4EB4AC2E4AD8,Input=(Expression=MaterialExpressionAppendVector'M_Parallax_Cheap:MaterialExpressionAppendVector_0',InputName="Heightmap Channel"))
                    FunctionInputs(6)=(ExpressionInputId=ED8CD290413B44C28DA13AB9277D307B,Input=(OutputIndex=-1,InputName="-----------------------------"))
                    FunctionInputs(7)=(ExpressionInputId=FD746ECC45EE787213C5DEA274BD2906,Input=(Expression=MaterialExpressionStaticBool'M_Parallax_Cheap:MaterialExpressionStaticBool_2',InputName="Specify Manual Texture Size"))
                    FunctionInputs(8)=(ExpressionInputId=E33AB7C14CCCC01624FE409E7479A4A5,Input=(InputName="Manual Texture Size"))
                    FunctionInputs(9)=(ExpressionInputId=3AFFFA8E44372B48C9EEDCA807C10DB9,Input=(OutputIndex=-1,InputName="------------------------------"))
                    FunctionInputs(10)=(ExpressionInputId=742B79554E19CE37969C35B9BF7A13E5,Input=(Expression=MaterialExpressionStaticBoolParameter'M_Parallax_Cheap:MaterialExpressionStaticBoolParameter_0',InputName="Render Shadows (Occlusion Mapping)"))
                    FunctionInputs(11)=(ExpressionInputId=B312F88640D8CD07BA718987D2F68798,Input=(Expression=MaterialExpressionComponentMask'M_Parallax_Cheap:MaterialExpressionComponentMask_53',InputName="Light Vector"))
                    FunctionInputs(12)=(ExpressionInputId=3FE0DA4A4B2DE19C9C9672AD9653A18F,Input=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_20',InputName="Shadow Steps"))
                    FunctionInputs(13)=(ExpressionInputId=0DD23D2047334724A697448DB16DAA07,Input=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_21',InputName="Shadow Penumbra"))
                    FunctionOutputs(0)=(ExpressionOutputId=4ADDA7A84E423550062B76AE7C6E11CB,Output=(OutputName="Parallax UVs"))
                    FunctionOutputs(1)=(ExpressionOutputId=8258927B4F3A106ACC7FAA9AC9C32CAE,Output=(OutputName="Offset Only"))
                    FunctionOutputs(2)=(ExpressionOutputId=0D45CD6D49F3025A6699408D7CB08A5F,Output=(OutputName="Shadow"))
                    FunctionOutputs(3)=(ExpressionOutputId=E3AD423344E244638874F9AF6D79749D,Output=(OutputName="Pixel Depth Offset"))
                    FunctionOutputs(4)=(ExpressionOutputId=994E0D0A4904AABAE4E7AFAA8A55B61F,Output=(OutputName="Z Offset"))
                    FunctionOutputs(5)=(ExpressionOutputId=0422E21C46F047C08010108CE9080F67,Output=(OutputName="Tangent Light Vector"))
                    FunctionOutputs(6)=(ExpressionOutputId=94349DAC4478EF16DDD1109EC23B0DED,Output=(OutputName="Material Complexity - Steps Debug"))
                    MaterialExpressionEditorX=-336
                    MaterialExpressionEditorY=1344
                    MaterialExpressionGuid=004817A44DBC551F4AAC59B95F531E7C
                    Material=Material'M_Parallax_Cheap'
                    Outputs(0)=(OutputName="Parallax UVs")
                    Outputs(1)=(OutputName="Offset Only")
                    Outputs(2)=(OutputName="Shadow")
                    Outputs(3)=(OutputName="Pixel Depth Offset")
                    Outputs(4)=(OutputName="Z Offset")
                    Outputs(5)=(OutputName="Tangent Light Vector")
                    Outputs(6)=(OutputName="Material Complexity - Steps Debug")
                 End Object
                 Begin Object Name="MaterialExpressionMaterialFunctionCall_32"
                    MaterialFunction=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/DebugFloat3Values.DebugFloat3Values'
                    FunctionInputs(0)=(ExpressionInputId=721A12104920C4AD0DD08A92C96648A0,Input=(Expression=MaterialExpressionComponentMask'M_Parallax_Cheap:MaterialExpressionComponentMask_53',InputName="Vector3"))
                    FunctionInputs(1)=(ExpressionInputId=63D24A3C40E96A8F649C348239E47980,Input=(OutputIndex=-1,InputName="MaximumNumberOfDigits"))
                    FunctionInputs(2)=(ExpressionInputId=8DA5C5D343F5E1A2FD581F8C1557C291,Input=(OutputIndex=-1,InputName="UVs"))
                    FunctionInputs(3)=(ExpressionInputId=32D8A9B84F8FAD10A2E754BE0C0CEAF3,Input=(OutputIndex=-1,InputName="DebugTextLocation RG_UpperRight BA_LowerLeft"))
                    FunctionOutputs(0)=(ExpressionOutputId=9E5DEB5A462E9F9A44E92CA95E973B03,Output=(OutputName="ColorCodedOutput"))
                    FunctionOutputs(1)=(ExpressionOutputId=4A04CC0144D1770DE257CBB1BC2C6CA3,Output=(OutputName="GreyScaleOutput"))
                    MaterialExpressionEditorX=-529
                    MaterialExpressionEditorY=2071
                    MaterialExpressionGuid=9079D7AB43997CFD8E3F039E33AEF899
                    Material=Material'M_Parallax_Cheap'
                    Outputs(0)=(OutputName="ColorCodedOutput")
                    Outputs(1)=(OutputName="GreyScaleOutput")
                 End Object
                 Begin Object Name="MaterialExpressionMin_0"
                    A=(Expression=MaterialExpressionAdd'M_Parallax_Cheap:MaterialExpressionAdd_0')
                    MaterialExpressionEditorX=976
                    MaterialExpressionEditorY=1248
                    MaterialExpressionGuid=1205A18644020B9732190C8C1D70F89E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_0"
                    A=(Expression=MaterialExpressionTextureSampleParameter2D'M_Parallax_Cheap:MaterialExpressionTextureSampleParameter2D_1',Mask=1,MaskR=1,MaskG=1,MaskB=1)
                    B=(Expression=MaterialExpressionConstant'M_Parallax_Cheap:MaterialExpressionConstant_5')
                    MaterialExpressionEditorX=1104
                    MaterialExpressionEditorY=1024
                    MaterialExpressionGuid=8A3FFEF049FE15EB4270B18913BAF1C7
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_1"
                    A=(Expression=MaterialExpressionTextureCoordinate'M_Parallax_Cheap:MaterialExpressionTextureCoordinate_4')
                    B=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_0')
                    MaterialExpressionEditorX=320
                    MaterialExpressionEditorY=672
                    MaterialExpressionGuid=DECC9D59485D6CC8C446C08AF9FDC8C8
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_10"
                    A=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_7')
                    B=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_22')
                    MaterialExpressionEditorX=672
                    MaterialExpressionEditorY=2736
                    MaterialExpressionGuid=3341DA224217681F61529A8E7C7B987C
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_11"
                    A=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_10')
                    B=(Expression=MaterialExpressionClamp'M_Parallax_Cheap:MaterialExpressionClamp_0')
                    MaterialExpressionEditorX=912
                    MaterialExpressionEditorY=2752
                    MaterialExpressionGuid=243304C140F8B7D0523EC495B953E440
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_18"
                    A=(Expression=MaterialExpressionDotProduct'M_Parallax_Cheap:MaterialExpressionDotProduct_8')
                    B=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_16')
                    ConstB=50.000000
                    MaterialExpressionEditorX=416
                    MaterialExpressionEditorY=1648
                    MaterialExpressionGuid=56A1C4BB42DC9D7B685820BB5EAC5F9D
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_19"
                    A=(Expression=MaterialExpressionMaterialFunctionCall'M_Parallax_Cheap:MaterialExpressionMaterialFunctionCall_25',OutputIndex=3)
                    B=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_17')
                    MaterialExpressionEditorX=1087
                    MaterialExpressionEditorY=1691
                    MaterialExpressionGuid=6385E3914B62CD1816F3CEABF7591D55
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_20"
                    A=(Expression=MaterialExpressionAdd'M_Parallax_Cheap:MaterialExpressionAdd_0')
                    ConstB=0.500000
                    MaterialExpressionEditorX=1584
                    MaterialExpressionEditorY=1392
                    MaterialExpressionGuid=20D08F3043CC6CDD2B44EB9B0D421D14
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_21"
                    A=(Expression=MaterialExpressionDistance'M_Parallax_Cheap:MaterialExpressionDistance_4')
                    ConstB=-1.000000
                    MaterialExpressionEditorX=304
                    MaterialExpressionEditorY=3008
                    MaterialExpressionGuid=4355BFF64EA97D8E9E4BE396C197076E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_22"
                    A=(Expression=MaterialExpressionNormalize'M_Parallax_Cheap:MaterialExpressionNormalize_5')
                    B=(Expression=MaterialExpressionDivide'M_Parallax_Cheap:MaterialExpressionDivide_9')
                    MaterialExpressionEditorX=608
                    MaterialExpressionEditorY=2960
                    MaterialExpressionGuid=29789F1F49E7947AAD9A99AD06A98E97
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_3"
                    A=(Expression=MaterialExpressionComponentMask'M_Parallax_Cheap:MaterialExpressionComponentMask_1')
                    MaterialExpressionEditorX=909
                    MaterialExpressionEditorY=3240
                    MaterialExpressionGuid=E198E0B54A9E098FF5BCA4810E1DD9BD
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_4"
                    A=(Expression=MaterialExpressionDivide'M_Parallax_Cheap:MaterialExpressionDivide_1')
                    B=(Expression=MaterialExpressionMaterialFunctionCall'M_Parallax_Cheap:MaterialExpressionMaterialFunctionCall_25',OutputIndex=1)
                    ConstB=16.000000
                    MaterialExpressionEditorX=400
                    MaterialExpressionEditorY=816
                    MaterialExpressionGuid=4E32FBDE49BFE971F195E69952B37663
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_41"
                    A=(Expression=MaterialExpressionDistance'M_Parallax_Cheap:MaterialExpressionDistance_16')
                    ConstB=-1.000000
                    MaterialExpressionEditorX=568
                    MaterialExpressionEditorY=4311
                    MaterialExpressionGuid=4355BFF64EA97D8E9E4BE396C197076E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_42"
                    A=(Expression=MaterialExpressionNormalize'M_Parallax_Cheap:MaterialExpressionNormalize_11')
                    B=(Expression=MaterialExpressionDivide'M_Parallax_Cheap:MaterialExpressionDivide_38')
                    MaterialExpressionEditorX=872
                    MaterialExpressionEditorY=4263
                    MaterialExpressionGuid=29789F1F49E7947AAD9A99AD06A98E97
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_43"
                    B=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_42')
                    MaterialExpressionEditorX=1032
                    MaterialExpressionEditorY=4167
                    MaterialExpressionGuid=2DAC62864CEED314F2594DAC203CFA4E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_48"
                    A=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_0')
                    B=(Expression=MaterialExpressionMin'M_Parallax_Cheap:MaterialExpressionMin_0')
                    ConstB=0.100000
                    MaterialExpressionEditorX=1168
                    MaterialExpressionEditorY=1184
                    MaterialExpressionGuid=8877D8F94831B5DFFB9259ACBE3B7803
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_5"
                    A=(Expression=MaterialExpressionClamp'M_Parallax_Cheap:MaterialExpressionClamp_0')
                    B=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_3')
                    MaterialExpressionEditorX=1584
                    MaterialExpressionEditorY=3328
                    MaterialExpressionGuid=4247BDE946CA3ADE32C9D09C6DD11D0E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_57"
                    A=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_48')
                    B=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_1')
                    ConstB=0.100000
                    MaterialExpressionEditorX=1456
                    MaterialExpressionEditorY=1296
                    MaterialExpressionGuid=C2E1D3A54DC0194E3355C0AF7A99A7AD
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_7"
                    A=(Expression=MaterialExpressionSubtract'M_Parallax_Cheap:MaterialExpressionSubtract_4')
                    B=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_4')
                    ConstB=10.000000
                    MaterialExpressionEditorX=1328
                    MaterialExpressionEditorY=2416
                    MaterialExpressionGuid=12F02BE84564D69EC5E5B29FF0104F64
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_8"
                    MaterialExpressionEditorX=1968
                    MaterialExpressionEditorY=2592
                    MaterialExpressionGuid=3AA6E0864BCC0499C967C0BE4D11FB83
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_9"
                    A=(Expression=MaterialExpressionTextureSample'M_Parallax_Cheap:MaterialExpressionTextureSample_0',OutputIndex=4,Mask=1,MaskA=1)
                    B=(Expression=MaterialExpressionScalarParameter'M_Parallax_Cheap:MaterialExpressionScalarParameter_6')
                    MaterialExpressionEditorX=1808
                    MaterialExpressionEditorY=3488
                    MaterialExpressionGuid=D5BF20DD4110B1525CD12186A979844B
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionNormalize_11"
                    VectorInput=(Expression=MaterialExpressionComponentMask'M_Parallax_Cheap:MaterialExpressionComponentMask_26')
                    MaterialExpressionEditorX=440
                    MaterialExpressionEditorY=4215
                    MaterialExpressionGuid=A7BCA88B4823E24B07BC87B6BB7023C9
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionNormalize_5"
                    VectorInput=(Expression=MaterialExpressionComponentMask'M_Parallax_Cheap:MaterialExpressionComponentMask_11')
                    MaterialExpressionEditorX=176
                    MaterialExpressionEditorY=2912
                    MaterialExpressionGuid=A7BCA88B4823E24B07BC87B6BB7023C9
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_0"
                    DefaultValue=16.000000
                    ParameterName="T2Tiling"
                    ExpressionGUID=48BDC64F412A52043CBED383AF62D695
                    MaterialExpressionEditorX=16
                    MaterialExpressionEditorY=688
                    MaterialExpressionGuid=C44A85984ED4A3FB0C4EF5AAA14CA1E0
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_1"
                    DefaultValue=0.100000
                    ParameterName="BaseColor Brightness"
                    ExpressionGUID=AD3F814A431B049D028CAF8F83B2A814
                    MaterialExpressionEditorX=1248
                    MaterialExpressionEditorY=1328
                    MaterialExpressionGuid=243049F34C4AEFE44742EF9E80725B2F
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_12"
                    DefaultValue=64.000000
                    ParameterName="MaxSteps"
                    ExpressionGUID=77B31801432FD20F9801048E580016EF
                    MaterialExpressionEditorX=-736
                    MaterialExpressionEditorY=1376
                    MaterialExpressionGuid=D4CC15BE4F1D5CC3C14DC8B41EC9160E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_13"
                    DefaultValue=0.100000
                    ParameterName="Height of Texture"
                    ExpressionGUID=7E7F8839449CB5AD7B8EDEA886ABFC66
                    MaterialExpressionEditorX=-752
                    MaterialExpressionEditorY=1216
                    MaterialExpressionGuid=8BA97A8A4DAC16D0C6F1E4905043FA20
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_14"
                    DefaultValue=64.000000
                    ParameterName="MinSteps"
                    ExpressionGUID=D81145D348CEE1EC7BC94F94BB350631
                    MaterialExpressionEditorX=-736
                    MaterialExpressionEditorY=1296
                    MaterialExpressionGuid=D4CC15BE4F1D5CC3C14DC8B41EC9160E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_16"
                    DefaultValue=32.000000
                    ParameterName="DotRemove"
                    ExpressionGUID=16BECE0B4D15864BCA1FF0A6C2D7C3B6
                    MaterialExpressionEditorX=240
                    MaterialExpressionEditorY=1696
                    MaterialExpressionGuid=0DAC4534443FB6BD44DB848BCB9784CC
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_17"
                    DefaultValue=1.000000
                    ParameterName="PDO"
                    ExpressionGUID=E30E21DD424846256F555E8A52C1CEB0
                    MaterialExpressionEditorX=976
                    MaterialExpressionEditorY=1760
                    MaterialExpressionGuid=03EAE36F4A9834805DE86DBF643602C1
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_20"
                    DefaultValue=8.000000
                    ParameterName="ST"
                    ExpressionGUID=14CA66204147E53C97F3499A6B74166E
                    MaterialExpressionEditorX=-576
                    MaterialExpressionEditorY=1792
                    MaterialExpressionGuid=6AE119D546F3BE04254048A714920623
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_21"
                    DefaultValue=2.000000
                    ParameterName="K"
                    ExpressionGUID=D710469E44F6703F341D4491851A118D
                    MaterialExpressionEditorX=-562
                    MaterialExpressionEditorY=1886
                    MaterialExpressionGuid=2BCE58A14A6DB7240BBCFCAC6CD26A78
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_3"
                    DefaultValue=128.000000
                    ParameterName="Depth"
                    ExpressionGUID=E38652C64A22A2E7CAE314AD2DF22815
                    MaterialExpressionEditorX=1392
                    MaterialExpressionEditorY=3440
                    MaterialExpressionGuid=0B5C5F534D6F11F65F5E9FB885427BA0
                    Material=Material'M_Parallax_Cheap'
                    bCollapsed=False
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_4"
                    DefaultValue=0.100000
                    ParameterName="Sharpness"
                    ExpressionGUID=EAABFDE74B284075A4DF3EB1E8C37EC2
                    MaterialExpressionEditorX=1195
                    MaterialExpressionEditorY=2532
                    MaterialExpressionGuid=DF79327C4C2E753ACF13898647747E3E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_40"
                    DefaultValue=0.200000
                    ParameterName="R"
                    ExpressionGUID=3848CA2E4F0D43EEA1D8569A844BF4D8
                    MaterialExpressionEditorX=1312
                    MaterialExpressionEditorY=1520
                    MaterialExpressionGuid=D802BF544DFB0F3A07838C92858359FD
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_5"
                    DefaultValue=-8.000000
                    ParameterName="RockOffset"
                    ExpressionGUID=BD77E6394F70CA4389EF60B2B6DBAA02
                    MaterialExpressionEditorX=1936
                    MaterialExpressionEditorY=3472
                    MaterialExpressionGuid=DB58AEB744C9FB7F1128488850D27825
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_6"
                    DefaultValue=-64.000000
                    ParameterName="HMA"
                    ExpressionGUID=049F3E564173876E658697B522A0B6D2
                    MaterialExpressionEditorX=1664
                    MaterialExpressionEditorY=3568
                    MaterialExpressionGuid=808CA1484A1397AF25409989BC249C98
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_7"
                    DefaultValue=0.100000
                    ParameterName="BumpHeight"
                    ExpressionGUID=08A8330740A4CB63A047B2AA64E7BB43
                    MaterialExpressionEditorX=304
                    MaterialExpressionEditorY=2768
                    MaterialExpressionGuid=ECFB47004C9EEBE8147020974954109A
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionStaticBool_2"
                    MaterialExpressionEditorX=-624
                    MaterialExpressionEditorY=1600
                    MaterialExpressionGuid=30CDC59342C0E12AA41DD7A89B7225AD
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionStaticBoolParameter_0"
                    ParameterName="Shadows"
                    ExpressionGUID=ED5B0493488A5CCE1367F4A010A47D25
                    MaterialExpressionEditorX=-800
                    MaterialExpressionEditorY=1664
                    MaterialExpressionGuid=D390EC1D453D05E316050AB5BA6A9907
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionStaticSwitchParameter_0"
                    A=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_19')
                    B=(Expression=MaterialExpressionConstant'M_Parallax_Cheap:MaterialExpressionConstant_13')
                    ParameterName="Use PDO"
                    ExpressionGUID=0B9803EC43BEA21046D05985F0184818
                    MaterialExpressionEditorX=1562
                    MaterialExpressionEditorY=1791
                    MaterialExpressionGuid=7F6F4B444A5CAE4D22F797B141218345
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionSubtract_2"
                    A=(Expression=MaterialExpressionMultiply'M_Parallax_Cheap:MaterialExpressionMultiply_3')
                    ConstB=1.500000
                    MaterialExpressionEditorX=1056
                    MaterialExpressionEditorY=3216
                    MaterialExpressionGuid=8A3A601A49C3DF69B553069F2E92C31F
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionSubtract_4"
                    A=(OutputIndex=4)
                    B=(Expression=MaterialExpressionAdd'M_Parallax_Cheap:MaterialExpressionAdd_4')
                    MaterialExpressionEditorX=1184
                    MaterialExpressionEditorY=2336
                    MaterialExpressionGuid=C3EFC93945DA8D43CE188FAAF50B0713
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionTextureCoordinate_0"
                    UTiling=4.000000
                    VTiling=4.000000
                    MaterialExpressionEditorX=608
                    MaterialExpressionEditorY=3248
                    MaterialExpressionGuid=F5EBD77F43029D679ABD0D814D5E26EB
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionTextureCoordinate_1"
                    MaterialExpressionEditorX=784
                    MaterialExpressionEditorY=2624
                    MaterialExpressionGuid=6AB8C61749DD634CA169AE90C1A1CE4E
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionTextureCoordinate_11"
                    MaterialExpressionEditorX=-720
                    MaterialExpressionEditorY=1456
                    MaterialExpressionGuid=64BB2DF944B68513B275FF8183ABEC67
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionTextureCoordinate_13"
                    MaterialExpressionEditorX=1848
                    MaterialExpressionEditorY=3847
                    MaterialExpressionGuid=4970508C43B1BAE9C084418420771C83
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionTextureCoordinate_20"
                    MaterialExpressionEditorX=1080
                    MaterialExpressionEditorY=3863
                    MaterialExpressionGuid=F00EEB244461707BA6284DA51F161068
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionTextureCoordinate_4"
                    MaterialExpressionEditorX=160
                    MaterialExpressionEditorY=608
                    MaterialExpressionGuid=84D7F30A44710887B18E04BAF79DA3DB
                    Material=Material'M_Parallax_Cheap'
                    Desc="16"
                 End Object
                 Begin Object Name="MaterialExpressionTextureObject_7"
                    Texture=Texture2D'/Engine/Functions/Engine_MaterialFunctions02/ExampleContent/Textures/SphereRenderHeightMap.SphereRenderHeightMap'
                    SamplerType=SAMPLERTYPE_LinearColor
                    MaterialExpressionEditorX=1016
                    MaterialExpressionEditorY=3655
                    MaterialExpressionGuid=206882AF4AA1EB82B2EEAFB6D4528F2F
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionTextureObjectParameter_7"
                    ParameterName="Height"
                    ExpressionGUID=F59AFFE5416F354CDDB3938C7B2A5190
                    Texture=Texture2D'/Game/MaterialTestCases/ParallaxOcclusionMapping/Textures/POM_v4.POM_v4'
                    SamplerType=SAMPLERTYPE_LinearColor
                    MaterialExpressionEditorX=-752
                    MaterialExpressionEditorY=1056
                    MaterialExpressionGuid=B0BA9B974A8FCF1E59C34EA58D4B761A
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionTextureSample_0"
                    Coordinates=(Expression=MaterialExpressionAdd'M_Parallax_Cheap:MaterialExpressionAdd_7')
                    Texture=Texture2D'/Game/MaterialTestCases/ParallaxOcclusionMapping/Textures/T_GDC_TilingRocks_02_D.T_GDC_TilingRocks_02_D'
                    MaterialExpressionEditorX=1344
                    MaterialExpressionEditorY=2736
                    MaterialExpressionGuid=357D6E8043D157C738A61FA17C0B2DFB
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionTextureSampleParameter2D_0"
                    ParameterName="Normal"
                    ExpressionGUID=03CAE31542F73E5CE1B422837EF6FA83
                    Coordinates=(Expression=MaterialExpressionMaterialFunctionCall'M_Parallax_Cheap:MaterialExpressionMaterialFunctionCall_25')
                    Texture=Texture2D'/Game/MaterialTestCases/ParallaxOcclusionMapping/Textures/POM_N.POM_N'
                    SamplerType=SAMPLERTYPE_Normal
                    MaterialExpressionEditorX=896
                    MaterialExpressionEditorY=1536
                    MaterialExpressionGuid=4966F8994F41027C37F235A837B67A10
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionTextureSampleParameter2D_1"
                    ParameterName="BaseColor"
                    ExpressionGUID=AB80949A467B7BC71011E9A1EB6952D6
                    Coordinates=(Expression=MaterialExpressionAdd'M_Parallax_Cheap:MaterialExpressionAdd_1')
                    Texture=Texture2D'/Engine/EngineMaterials/DefaultWhiteGrid.DefaultWhiteGrid'
                    MaterialExpressionEditorX=752
                    MaterialExpressionEditorY=944
                    MaterialExpressionGuid=FA60D9424B6471F0150B9CAFFF8066A7
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionTransform_0"
                    Input=(Expression=MaterialExpressionCameraVectorWS'M_Parallax_Cheap:MaterialExpressionCameraVectorWS_0')
                    TransformSourceType=TRANSFORMSOURCE_World
                    TransformType=TRANSFORM_Tangent
                    MaterialExpressionEditorX=-297
                    MaterialExpressionEditorY=3001
                    MaterialExpressionGuid=A67FFF4142EC139A9A35368994721DCA
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionTransform_11"
                    Input=(Expression=MaterialExpressionCameraVectorWS'M_Parallax_Cheap:MaterialExpressionCameraVectorWS_23')
                    TransformSourceType=TRANSFORMSOURCE_World
                    TransformType=TRANSFORM_Tangent
                    MaterialExpressionEditorX=-72
                    MaterialExpressionEditorY=4311
                    MaterialExpressionGuid=03BC57864C8B91CEE4A40F90B8E6633C
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionVectorParameter_0"
                    ParameterName="S"
                    ExpressionGUID=38F33C6E401D69D8A8C1EEAFBEDDE04B
                    MaterialExpressionEditorX=368
                    MaterialExpressionEditorY=1072
                    MaterialExpressionGuid=C6A5E95248F906E1EAC4B7B07EFB2E85
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionVectorParameter_1"
                    DefaultValue=(R=1.000000,G=0.000000,B=0.000000,A=0.000000)
                    ParameterName="Channel"
                    ExpressionGUID=7C096DAE4C760661AE7B37AD59D2745B
                    MaterialExpressionEditorX=-960
                    MaterialExpressionEditorY=1504
                    MaterialExpressionGuid=ACE24EC243C7CA78B0BC30B0312E372A
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="MaterialExpressionVertexNormalWS_11"
                    MaterialExpressionEditorX=-56
                    MaterialExpressionEditorY=3975
                    MaterialExpressionGuid=CA2991DB45FD44CA446AB6A34E160F33
                    Material=Material'M_Parallax_Cheap'
                 End Object
                 Begin Object Name="SceneThumbnailInfoWithPrimitive_0"
                 End Object
                 BaseColor=(Expression=MaterialExpressionMultiply'MaterialExpressionMultiply_57')
                 Specular=(Expression=MaterialExpressionMultiply'MaterialExpressionMultiply_20')
                 Roughness=(Expression=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_40')
                 Normal=(Expression=MaterialExpressionTextureSampleParameter2D'MaterialExpressionTextureSampleParameter2D_0',Mask=1,MaskR=1,MaskG=1,MaskB=1)
                 PixelDepthOffset=(Expression=MaterialExpressionStaticSwitchParameter'MaterialExpressionStaticSwitchParameter_0')
                 bUsedWithStaticLighting=True
                 EditorX=1920
                 EditorY=1328
                 Expressions(0)=MaterialExpressionMultiply'MaterialExpressionMultiply_57'
                 Expressions(1)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_40'
                 Expressions(2)=MaterialExpressionTextureSampleParameter2D'MaterialExpressionTextureSampleParameter2D_0'
                 Expressions(3)=MaterialExpressionStaticSwitchParameter'MaterialExpressionStaticSwitchParameter_0'
                 Expressions(4)=MaterialExpressionLinearInterpolate'MaterialExpressionLinearInterpolate_2'
                 Expressions(5)=MaterialExpressionLinearInterpolate'MaterialExpressionLinearInterpolate_3'
                 Expressions(6)=MaterialExpressionClamp'MaterialExpressionClamp_0'
                 Expressions(7)=MaterialExpressionTextureSample'MaterialExpressionTextureSample_0'
                 Expressions(8)=MaterialExpressionMultiply'MaterialExpressionMultiply_19'
                 Expressions(9)=MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_25'
                 Expressions(10)=MaterialExpressionMultiply'MaterialExpressionMultiply_48'
                 Expressions(11)=MaterialExpressionMultiply'MaterialExpressionMultiply_0'
                 Expressions(12)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_12'
                 Expressions(13)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_13'
                 Expressions(14)=MaterialExpressionTextureCoordinate'MaterialExpressionTextureCoordinate_4'
                 Expressions(15)=MaterialExpressionAdd'MaterialExpressionAdd_1'
                 Expressions(16)=MaterialExpressionMultiply'MaterialExpressionMultiply_4'
                 Expressions(17)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_14'
                 Expressions(18)=MaterialExpressionConstant'MaterialExpressionConstant_5'
                 Expressions(19)=MaterialExpressionDivide'MaterialExpressionDivide_1'
                 Expressions(20)=MaterialExpressionTextureObjectParameter'MaterialExpressionTextureObjectParameter_7'
                 Expressions(21)=MaterialExpressionTextureCoordinate'MaterialExpressionTextureCoordinate_11'
                 Expressions(22)=MaterialExpressionAdd'MaterialExpressionAdd_2'
                 Expressions(23)=MaterialExpressionTextureCoordinate'MaterialExpressionTextureCoordinate_13'
                 Expressions(24)=MaterialExpressionCustom'MaterialExpressionCustom_11'
                 Expressions(25)=MaterialExpressionTextureCoordinate'MaterialExpressionTextureCoordinate_20'
                 Expressions(26)=MaterialExpressionDotProduct'MaterialExpressionDotProduct_11'
                 Expressions(27)=MaterialExpressionCameraVectorWS'MaterialExpressionCameraVectorWS_22'
                 Expressions(28)=MaterialExpressionVertexNormalWS'MaterialExpressionVertexNormalWS_11'
                 Expressions(29)=MaterialExpressionLinearInterpolate'MaterialExpressionLinearInterpolate_11'
                 Expressions(30)=MaterialExpressionDivide'MaterialExpressionDivide_37'
                 Expressions(31)=MaterialExpressionAbs'MaterialExpressionAbs_21'
                 Expressions(32)=MaterialExpressionCameraVectorWS'MaterialExpressionCameraVectorWS_23'
                 Expressions(33)=MaterialExpressionTransform'MaterialExpressionTransform_11'
                 Expressions(34)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_26'
                 Expressions(35)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_27'
                 Expressions(36)=MaterialExpressionDistance'MaterialExpressionDistance_16'
                 Expressions(37)=MaterialExpressionConstant'MaterialExpressionConstant_32'
                 Expressions(38)=MaterialExpressionMultiply'MaterialExpressionMultiply_41'
                 Expressions(39)=MaterialExpressionDivide'MaterialExpressionDivide_38'
                 Expressions(40)=MaterialExpressionNormalize'MaterialExpressionNormalize_11'
                 Expressions(41)=MaterialExpressionMultiply'MaterialExpressionMultiply_42'
                 Expressions(42)=MaterialExpressionMultiply'MaterialExpressionMultiply_43'
                 Expressions(43)=MaterialExpressionFloor'MaterialExpressionFloor_11'
                 Expressions(44)=MaterialExpressionDDX'MaterialExpressionDDX_21'
                 Expressions(45)=MaterialExpressionDDY'MaterialExpressionDDY_21'
                 Expressions(46)=MaterialExpressionTextureObject'MaterialExpressionTextureObject_7'
                 Expressions(47)=MaterialExpressionCollectionParameter'MaterialExpressionCollectionParameter_0'
                 Expressions(48)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_53'
                 Expressions(49)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_20'
                 Expressions(50)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_21'
                 Expressions(51)=MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_32'
                 Expressions(52)=MaterialExpressionAdd'MaterialExpressionAdd_0'
                 Expressions(53)=MaterialExpressionVectorParameter'MaterialExpressionVectorParameter_0'
                 Expressions(54)=MaterialExpressionConstant'MaterialExpressionConstant_1'
                 Expressions(55)=MaterialExpressionMultiply'MaterialExpressionMultiply_1'
                 Expressions(56)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_0'
                 Expressions(57)=MaterialExpressionTextureSampleParameter2D'MaterialExpressionTextureSampleParameter2D_1'
                 Expressions(58)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_1'
                 Expressions(59)=MaterialExpressionDotProduct'MaterialExpressionDotProduct_8'
                 Expressions(60)=MaterialExpressionClamp'MaterialExpressionClamp_7'
                 Expressions(61)=MaterialExpressionMultiply'MaterialExpressionMultiply_18'
                 Expressions(62)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_16'
                 Expressions(63)=MaterialExpressionLinearInterpolate'MaterialExpressionLinearInterpolate_9'
                 Expressions(64)=MaterialExpressionMin'MaterialExpressionMin_0'
                 Expressions(65)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_17'
                 Expressions(66)=MaterialExpressionVectorParameter'MaterialExpressionVectorParameter_1'
                 Expressions(67)=MaterialExpressionAppendVector'MaterialExpressionAppendVector_0'
                 Expressions(68)=MaterialExpressionStaticBool'MaterialExpressionStaticBool_2'
                 Expressions(69)=MaterialExpressionTextureCoordinate'MaterialExpressionTextureCoordinate_0'
                 Expressions(70)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_1'
                 Expressions(71)=MaterialExpressionMultiply'MaterialExpressionMultiply_3'
                 Expressions(72)=MaterialExpressionSubtract'MaterialExpressionSubtract_2'
                 Expressions(73)=MaterialExpressionMultiply'MaterialExpressionMultiply_5'
                 Expressions(74)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_3'
                 Expressions(75)=MaterialExpressionSubtract'MaterialExpressionSubtract_4'
                 Expressions(76)=MaterialExpressionMultiply'MaterialExpressionMultiply_7'
                 Expressions(77)=MaterialExpressionClamp'MaterialExpressionClamp_1'
                 Expressions(78)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_4'
                 Expressions(79)=MaterialExpressionMultiply'MaterialExpressionMultiply_8'
                 Expressions(80)=MaterialExpressionAdd'MaterialExpressionAdd_4'
                 Expressions(81)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_5'
                 Expressions(82)=MaterialExpressionMultiply'MaterialExpressionMultiply_9'
                 Expressions(83)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_6'
                 Expressions(84)=MaterialExpressionAdd'MaterialExpressionAdd_6'
                 Expressions(85)=MaterialExpressionTextureCoordinate'MaterialExpressionTextureCoordinate_1'
                 Expressions(86)=MaterialExpressionMultiply'MaterialExpressionMultiply_10'
                 Expressions(87)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_7'
                 Expressions(88)=MaterialExpressionStaticBoolParameter'MaterialExpressionStaticBoolParameter_0'
                 Expressions(89)=MaterialExpressionAdd'MaterialExpressionAdd_7'
                 Expressions(90)=MaterialExpressionCameraVectorWS'MaterialExpressionCameraVectorWS_0'
                 Expressions(91)=MaterialExpressionMultiply'MaterialExpressionMultiply_11'
                 Expressions(92)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_2'
                 Expressions(93)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_11'
                 Expressions(94)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_12'
                 Expressions(95)=MaterialExpressionDistance'MaterialExpressionDistance_4'
                 Expressions(96)=MaterialExpressionConstant'MaterialExpressionConstant_8'
                 Expressions(97)=MaterialExpressionMultiply'MaterialExpressionMultiply_21'
                 Expressions(98)=MaterialExpressionDivide'MaterialExpressionDivide_9'
                 Expressions(99)=MaterialExpressionNormalize'MaterialExpressionNormalize_5'
                 Expressions(100)=MaterialExpressionMultiply'MaterialExpressionMultiply_22'
                 Expressions(101)=MaterialExpressionTransform'MaterialExpressionTransform_0'
                 Expressions(102)=MaterialExpressionConstant3Vector'MaterialExpressionConstant3Vector_1'
                 Expressions(103)=MaterialExpressionDivide'MaterialExpressionDivide_11'
                 Expressions(104)=MaterialExpressionConstant'MaterialExpressionConstant_13'
                 Expressions(105)=MaterialExpressionMultiply'MaterialExpressionMultiply_20'
                 EditorComments(0)=MaterialExpressionComment'MaterialExpressionComment_2'
                 EditorComments(1)=MaterialExpressionComment'MaterialExpressionComment_5'
                 MaterialFunctionInfos(0)=(StateId=E1DD6EA84560E03345E2EE8EE3A181AD,Function=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions01/Texturing/ParallaxOcclusionMapping.ParallaxOcclusionMapping')
                 MaterialFunctionInfos(1)=(StateId=162D6D2B48CD8C456AA56F8E93FB317B,Function=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/VectorLength.VectorLength')
                 MaterialFunctionInfos(2)=(StateId=50EBF8C64FF5F3EFE9520A92C416A78F,Function=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/CameraDirectionVector.CameraDirectionVector')
                 MaterialFunctionInfos(3)=(StateId=12CC38F84E45A86E017B46ABA283BCF6,Function=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/DebugFloat3Values.DebugFloat3Values')
                 MaterialFunctionInfos(4)=(StateId=E47E7D6B466F913CC1497584EDB1DBD6,Function=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions01/Texturing/ComputeMipLevel.ComputeMipLevel')
                 MaterialFunctionInfos(5)=(StateId=A9CC16D54B37524336F3CF863EF27E55,Function=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions01/Texturing/TextureCropping.TextureCropping')
                 MaterialFunctionInfos(6)=(StateId=090EFC3145B6B4454A88D5939A8EC8E7,Function=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/DebugScalarValues.DebugScalarValues')
                 MaterialFunctionInfos(7)=(StateId=5B938C50440B6892955AD79FCD1A8337,Function=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/BreakOutFloat3Components.BreakOutFloat3Components')
                 MaterialFunctionInfos(8)=(StateId=127A25CC4BE0E6F90A2D99BF43C74E15,Function=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/BreakOutFloat4Components.BreakOutFloat4Components')
                 MaterialFunctionInfos(9)=(StateId=0EAE1DD343328B18AD61CCA66096BA80,Function=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/DebugFloat4Values.DebugFloat4Values')
                 MaterialParameterCollectionInfos(0)=(StateId=694CBE534B393A93FD826B86E93A6628,ParameterCollection=MaterialParameterCollection'/Game/Developers/ryanbrucks/materials/MPC/MPC_GlobalParam_Test.MPC_GlobalParam_Test')
                 bCanMaskedBeAssumedOpaque=True
                 StateId=6666519845D81E4245F1C483207D3383
                 ReferencedTextureGuids(0)=4AF241124E7C695B7D248282606E413A
                 ReferencedTextureGuids(1)=6C57D3794EE1501B1BED43A9EC77542A
                 ReferencedTextureGuids(2)=C3BCA45B493E6A8725495D8E6261997C
                 ThumbnailInfo=SceneThumbnailInfoWithPrimitive'SceneThumbnailInfoWithPrimitive_0'
                 LightingGuid=DA8980454733002AFE7588AA1CCC194A
              End Object
              matfunction:
              Code:
              Begin Object Class=MaterialFunction Name="ParallaxOcclusionMapping"
                 Begin Object Class=MaterialExpressionAbs Name="MaterialExpressionAbs_13"
                 End Object
                 Begin Object Class=MaterialExpressionAbs Name="MaterialExpressionAbs_14"
                 End Object
                 Begin Object Class=MaterialExpressionAbs Name="MaterialExpressionAbs_26"
                 End Object
                 Begin Object Class=MaterialExpressionAbs Name="MaterialExpressionAbs_4"
                 End Object
                 Begin Object Class=MaterialExpressionAdd Name="MaterialExpressionAdd_0"
                 End Object
                 Begin Object Class=MaterialExpressionAppendVector Name="MaterialExpressionAppendVector_0"
                 End Object
                 Begin Object Class=MaterialExpressionAppendVector Name="MaterialExpressionAppendVector_7"
                 End Object
                 Begin Object Class=MaterialExpressionCameraVectorWS Name="MaterialExpressionCameraVectorWS_28"
                 End Object
                 Begin Object Class=MaterialExpressionCameraVectorWS Name="MaterialExpressionCameraVectorWS_8"
                 End Object
                 Begin Object Class=MaterialExpressionCameraVectorWS Name="MaterialExpressionCameraVectorWS_9"
                 End Object
                 Begin Object Class=MaterialExpressionComment Name="MaterialExpressionComment_0"
                 End Object
                 Begin Object Class=MaterialExpressionComment Name="MaterialExpressionComment_3"
                 End Object
                 Begin Object Class=MaterialExpressionComment Name="MaterialExpressionComment_4"
                 End Object
                 Begin Object Class=MaterialExpressionComment Name="MaterialExpressionComment_6"
                 End Object
                 Begin Object Class=MaterialExpressionComment Name="MaterialExpressionComment_7"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_1"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_2"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_46"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_47"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_52"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_56"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_8"
                 End Object
                 Begin Object Class=MaterialExpressionComponentMask Name="MaterialExpressionComponentMask_9"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_14"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_20"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_22"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_33"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_36"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_37"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_38"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_39"
                 End Object
                 Begin Object Class=MaterialExpressionConstant Name="MaterialExpressionConstant_8"
                 End Object
                 Begin Object Class=MaterialExpressionCustom Name="MaterialExpressionCustom_20"
                 End Object
                 Begin Object Class=MaterialExpressionCustom Name="MaterialExpressionCustom_21"
                 End Object
                 Begin Object Class=MaterialExpressionCustom Name="MaterialExpressionCustom_5"
                 End Object
                 Begin Object Class=MaterialExpressionDDX Name="MaterialExpressionDDX_13"
                 End Object
                 Begin Object Class=MaterialExpressionDDX Name="MaterialExpressionDDX_14"
                 End Object
                 Begin Object Class=MaterialExpressionDDX Name="MaterialExpressionDDX_4"
                 End Object
                 Begin Object Class=MaterialExpressionDDY Name="MaterialExpressionDDY_13"
                 End Object
                 Begin Object Class=MaterialExpressionDDY Name="MaterialExpressionDDY_14"
                 End Object
                 Begin Object Class=MaterialExpressionDDY Name="MaterialExpressionDDY_4"
                 End Object
                 Begin Object Class=MaterialExpressionDistance Name="MaterialExpressionDistance_4"
                 End Object
                 Begin Object Class=MaterialExpressionDistance Name="MaterialExpressionDistance_9"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_18"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_19"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_2"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_3"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_39"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_46"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_48"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_49"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_53"
                 End Object
                 Begin Object Class=MaterialExpressionDivide Name="MaterialExpressionDivide_9"
                 End Object
                 Begin Object Class=MaterialExpressionDotProduct Name="MaterialExpressionDotProduct_16"
                 End Object
                 Begin Object Class=MaterialExpressionDotProduct Name="MaterialExpressionDotProduct_4"
                 End Object
                 Begin Object Class=MaterialExpressionFeatureLevelSwitch Name="MaterialExpressionFeatureLevelSwitch_0"
                 End Object
                 Begin Object Class=MaterialExpressionFeatureLevelSwitch Name="MaterialExpressionFeatureLevelSwitch_1"
                 End Object
                 Begin Object Class=MaterialExpressionFeatureLevelSwitch Name="MaterialExpressionFeatureLevelSwitch_4"
                 End Object
                 Begin Object Class=MaterialExpressionFeatureLevelSwitch Name="MaterialExpressionFeatureLevelSwitch_5"
                 End Object
                 Begin Object Class=MaterialExpressionFloor Name="MaterialExpressionFloor_12"
                 End Object
                 Begin Object Class=MaterialExpressionFloor Name="MaterialExpressionFloor_4"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_1"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_10"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_12"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_19"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_2"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_20"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_23"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_24"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_25"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_29"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_3"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_31"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_5"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionInput Name="MaterialExpressionFunctionInput_9"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionOutput Name="MaterialExpressionFunctionOutput_0"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionOutput Name="MaterialExpressionFunctionOutput_1"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionOutput Name="MaterialExpressionFunctionOutput_12"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionOutput Name="MaterialExpressionFunctionOutput_2"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionOutput Name="MaterialExpressionFunctionOutput_5"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionOutput Name="MaterialExpressionFunctionOutput_6"
                 End Object
                 Begin Object Class=MaterialExpressionFunctionOutput Name="MaterialExpressionFunctionOutput_9"
                 End Object
                 Begin Object Class=MaterialExpressionLinearInterpolate Name="MaterialExpressionLinearInterpolate_4"
                 End Object
                 Begin Object Class=MaterialExpressionMaterialFunctionCall Name="MaterialExpressionMaterialFunctionCall_20"
                 End Object
                 Begin Object Class=MaterialExpressionMaterialFunctionCall Name="MaterialExpressionMaterialFunctionCall_21"
                 End Object
                 Begin Object Class=MaterialExpressionMaterialFunctionCall Name="MaterialExpressionMaterialFunctionCall_22"
                 End Object
                 Begin Object Class=MaterialExpressionMaterialFunctionCall Name="MaterialExpressionMaterialFunctionCall_23"
                 End Object
                 Begin Object Class=MaterialExpressionMaterialFunctionCall Name="MaterialExpressionMaterialFunctionCall_31"
                 End Object
                 Begin Object Class=MaterialExpressionMax Name="MaterialExpressionMax_4"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_0"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_1"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_17"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_18"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_19"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_2"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_21"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_56"
                 End Object
                 Begin Object Class=MaterialExpressionMultiply Name="MaterialExpressionMultiply_59"
                 End Object
                 Begin Object Class=MaterialExpressionNormalize Name="MaterialExpressionNormalize_19"
                 End Object
                 Begin Object Class=MaterialExpressionNormalize Name="MaterialExpressionNormalize_4"
                 End Object
                 Begin Object Class=MaterialExpressionOneMinus Name="MaterialExpressionOneMinus_0"
                 End Object
                 Begin Object Class=MaterialExpressionQualitySwitch Name="MaterialExpressionQualitySwitch_11"
                 End Object
                 Begin Object Class=MaterialExpressionQualitySwitch Name="MaterialExpressionQualitySwitch_12"
                 End Object
                 Begin Object Class=MaterialExpressionQualitySwitch Name="MaterialExpressionQualitySwitch_5"
                 End Object
                 Begin Object Class=MaterialExpressionQualitySwitch Name="MaterialExpressionQualitySwitch_8"
                 End Object
                 Begin Object Class=MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_6"
                 End Object
                 Begin Object Class=MaterialExpressionStaticBool Name="MaterialExpressionStaticBool_6"
                 End Object
                 Begin Object Class=MaterialExpressionStaticBool Name="MaterialExpressionStaticBool_7"
                 End Object
                 Begin Object Class=MaterialExpressionStaticSwitch Name="MaterialExpressionStaticSwitch_2"
                 End Object
                 Begin Object Class=MaterialExpressionStaticSwitch Name="MaterialExpressionStaticSwitch_5"
                 End Object
                 Begin Object Class=MaterialExpressionStaticSwitch Name="MaterialExpressionStaticSwitch_6"
                 End Object
                 Begin Object Class=MaterialExpressionTextureCoordinate Name="MaterialExpressionTextureCoordinate_8"
                 End Object
                 Begin Object Class=MaterialExpressionTextureObject Name="MaterialExpressionTextureObject_0"
                 End Object
                 Begin Object Class=MaterialExpressionTransform Name="MaterialExpressionTransform_18"
                 End Object
                 Begin Object Class=MaterialExpressionTransform Name="MaterialExpressionTransform_4"
                 End Object
                 Begin Object Class=MaterialExpressionVertexNormalWS Name="MaterialExpressionVertexNormalWS_4"
                 End Object
                 Begin Object Class=MaterialExpressionWorldPosition Name="MaterialExpressionWorldPosition_4"
                 End Object
                 Begin Object Class=SceneThumbnailInfoWithPrimitive Name="SceneThumbnailInfoWithPrimitive_3"
                 End Object
                 Begin Object Name="MaterialExpressionAbs_13"
                    Input=(Expression=MaterialExpressionDDX'ParallaxOcclusionMapping:MaterialExpressionDDX_13')
                    MaterialExpressionEditorX=-480
                    MaterialExpressionEditorY=1456
                    MaterialExpressionGuid=03B919944D1C0016304C22B77D5A8BC4
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionAbs_14"
                    Input=(Expression=MaterialExpressionDDY'ParallaxOcclusionMapping:MaterialExpressionDDY_13')
                    MaterialExpressionEditorX=-480
                    MaterialExpressionEditorY=1552
                    MaterialExpressionGuid=3A50AE5943CB2FFE4652D89F226B22E7
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionAbs_26"
                    Input=(Expression=MaterialExpressionDotProduct'ParallaxOcclusionMapping:MaterialExpressionDotProduct_16')
                    MaterialExpressionEditorX=254
                    MaterialExpressionEditorY=1774
                    MaterialExpressionGuid=E1B7CF534327520FC9DD3FBCD00D6E0F
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionAbs_4"
                    Input=(Expression=MaterialExpressionDotProduct'ParallaxOcclusionMapping:MaterialExpressionDotProduct_4')
                    MaterialExpressionEditorX=-2544
                    MaterialExpressionEditorY=384
                    MaterialExpressionGuid=C957298A4F025B1E0437F5B65C5C04BC
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionAdd_0"
                    A=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_10')
                    B=(Expression=MaterialExpressionComponentMask'ParallaxOcclusionMapping:MaterialExpressionComponentMask_56')
                    MaterialExpressionEditorX=-96
                    MaterialExpressionEditorY=240
                    MaterialExpressionGuid=4F55C59E400D482D0DBC1396D73ED4F5
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionAppendVector_0"
                    A=(Expression=MaterialExpressionComponentMask'ParallaxOcclusionMapping:MaterialExpressionComponentMask_1')
                    B=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_0')
                    MaterialExpressionEditorX=480
                    MaterialExpressionEditorY=688
                    MaterialExpressionGuid=26E8E565497FF2BA9AE968A9E8463CAB
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionAppendVector_7"
                    A=(Expression=MaterialExpressionComponentMask'ParallaxOcclusionMapping:MaterialExpressionComponentMask_46')
                    B=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_46')
                    MaterialExpressionEditorX=-2304
                    MaterialExpressionEditorY=1264
                    MaterialExpressionGuid=1080D1FA43104515F1E6B989FDA93522
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionCameraVectorWS_28"
                    MaterialExpressionEditorX=-66
                    MaterialExpressionEditorY=1870
                    MaterialExpressionGuid=6E435155434376C17F787A86E533F608
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionCameraVectorWS_8"
                    MaterialExpressionEditorX=-2880
                    MaterialExpressionEditorY=336
                    MaterialExpressionGuid=171DD6904AF05619E9F790A04CA036B3
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionCameraVectorWS_9"
                    MaterialExpressionEditorX=-3278
                    MaterialExpressionEditorY=866
                    MaterialExpressionGuid=AE2564C14E5AD1E55F6521B7DD55FE53
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComment_0"
                    SizeX=1376
                    SizeY=576
                    Text="UV to World Ratio"
                    MaterialExpressionEditorX=-928
                    MaterialExpressionEditorY=1408
                    MaterialExpressionGuid=BC52298C45BD780DF2B520BCE8EDBCCA
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComment_3"
                    SizeX=388
                    SizeY=262
                    Text="PDO Texture size uses Pri 10-19"
                    MaterialExpressionEditorX=2142
                    MaterialExpressionEditorY=382
                    MaterialExpressionGuid=A991334344BCB95DF52B04B0C98779F8
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComment_4"
                    SizeX=388
                    SizeY=262
                    Text="Shadowing options Pri 20-29"
                    MaterialExpressionEditorX=2144
                    MaterialExpressionEditorY=752
                    MaterialExpressionGuid=A991334344BCB95DF52B04B0C98779F8
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComment_6"
                    SizeX=1283
                    SizeY=294
                    Text="Light Trace length"
                    MaterialExpressionEditorX=-3264
                    MaterialExpressionEditorY=1168
                    MaterialExpressionGuid=752CEF4941C80B56C07484B656FD0E20
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComment_7"
                    SizeX=1321
                    SizeY=347
                    Text="View Trace Length"
                    MaterialExpressionEditorX=-3328
                    MaterialExpressionEditorY=720
                    MaterialExpressionGuid=210CE51B4A1628ED5F9A958757E57E21
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_1"
                    Input=(Expression=MaterialExpressionStaticSwitch'ParallaxOcclusionMapping:MaterialExpressionStaticSwitch_5')
                    R=True
                    G=True
                    MaterialExpressionEditorX=-64
                    MaterialExpressionEditorY=592
                    MaterialExpressionGuid=755EC5AB441AB186CD0093A7B895307E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_2"
                    Input=(Expression=MaterialExpressionStaticSwitch'ParallaxOcclusionMapping:MaterialExpressionStaticSwitch_5')
                    B=True
                    MaterialExpressionEditorX=-16
                    MaterialExpressionEditorY=688
                    MaterialExpressionGuid=755EC5AB441AB186CD0093A7B895307E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_46"
                    Input=(Expression=MaterialExpressionTransform'ParallaxOcclusionMapping:MaterialExpressionTransform_18')
                    R=True
                    G=True
                    MaterialExpressionEditorX=-2624
                    MaterialExpressionEditorY=1232
                    MaterialExpressionGuid=2803DD6B445CD339E8EA63ACC98A4C08
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_47"
                    Input=(Expression=MaterialExpressionTransform'ParallaxOcclusionMapping:MaterialExpressionTransform_18')
                    B=True
                    MaterialExpressionEditorX=-2624
                    MaterialExpressionEditorY=1328
                    MaterialExpressionGuid=2803DD6B445CD339E8EA63ACC98A4C08
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_52"
                    Input=(Expression=MaterialExpressionCustom'ParallaxOcclusionMapping:MaterialExpressionCustom_21')
                    A=True
                    MaterialExpressionEditorX=-400
                    MaterialExpressionEditorY=880
                    MaterialExpressionGuid=755EC5AB441AB186CD0093A7B895307E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_56"
                    Input=(Expression=MaterialExpressionStaticSwitch'ParallaxOcclusionMapping:MaterialExpressionStaticSwitch_5')
                    R=True
                    G=True
                    MaterialExpressionEditorX=-256
                    MaterialExpressionEditorY=480
                    MaterialExpressionGuid=6880DAF4461C00B13B997CB7E45F5F13
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_8"
                    Input=(Expression=MaterialExpressionTransform'ParallaxOcclusionMapping:MaterialExpressionTransform_4')
                    R=True
                    G=True
                    MaterialExpressionEditorX=-2862
                    MaterialExpressionEditorY=802
                    MaterialExpressionGuid=2803DD6B445CD339E8EA63ACC98A4C08
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionComponentMask_9"
                    Input=(Expression=MaterialExpressionTransform'ParallaxOcclusionMapping:MaterialExpressionTransform_4')
                    B=True
                    MaterialExpressionEditorX=-2846
                    MaterialExpressionEditorY=962
                    MaterialExpressionGuid=2803DD6B445CD339E8EA63ACC98A4C08
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_14"
                    MaterialExpressionEditorX=704
                    MaterialExpressionEditorY=1040
                    MaterialExpressionGuid=2B6D812D46825AD4138C8286597EF0C1
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_20"
                    MaterialExpressionEditorX=1280
                    MaterialExpressionEditorY=704
                    MaterialExpressionGuid=25EB62364EB699D48EAFDBA2392E4435
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_22"
                    MaterialExpressionEditorX=1042
                    MaterialExpressionEditorY=634
                    MaterialExpressionGuid=2475BE6A441B8FC77D6ACE8CC1D13706
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_33"
                    R=1.000000
                    MaterialExpressionEditorX=-400
                    MaterialExpressionEditorY=960
                    MaterialExpressionGuid=253BC873477AC65876A9D2B716D0DF1F
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_36"
                    MaterialExpressionEditorX=1280
                    MaterialExpressionEditorY=1152
                    MaterialExpressionGuid=25EB62364EB699D48EAFDBA2392E4435
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_37"
                    MaterialExpressionEditorX=1120
                    MaterialExpressionEditorY=1072
                    MaterialExpressionGuid=25EB62364EB699D48EAFDBA2392E4435
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_38"
                    R=1.000000
                    MaterialExpressionEditorX=1280
                    MaterialExpressionEditorY=928
                    MaterialExpressionGuid=25EB62364EB699D48EAFDBA2392E4435
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_39"
                    R=1.000000
                    MaterialExpressionEditorX=1120
                    MaterialExpressionEditorY=848
                    MaterialExpressionGuid=25EB62364EB699D48EAFDBA2392E4435
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionConstant_8"
                    MaterialExpressionEditorX=-2734
                    MaterialExpressionEditorY=882
                    MaterialExpressionGuid=0689E626441DE928CBCE5594DC62A018
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionCustom_20"
                    Code="float rayheight=1;\r\nfloat oldray=1;\r\nfloat2 offset=0;\r\nfloat oldtex=1;\r\nfloat texatray;\r\nfloat yintersect;\r\nint i;\r\n\r\nwhile (i<MaxSteps+1)\r\n{\r\ntexatray=dot(HeightMapChannel, Tex.SampleGrad(TexSampler,UV+offset,InDDX,InDDY));\r\n\r\nif (rayheight < texatray)\r\n{\r\nfloat xintersect = (oldray-oldtex)+(texatray-rayheight);\r\nxintersect=(texatray-rayheight)/xintersect;\r\nyintersect=(oldray*(xintersect))+(rayheight*(1-xintersect));\r\noffset-=(xintersect*UVDist);\r\nbreak;\r\n}\r\n\r\noldray=rayheight;\r\nrayheight-=stepsize;\r\noffset+=UVDist;\r\noldtex=texatray;\r\n\r\n\r\ni++;\r\n}\r\n\r\nfloat3 output;\r\noutput.xy=offset;\r\noutput.z=yintersect;\r\nreturn output;"
                    Description="Parallax Only Mapping"
                    Inputs(0)=(InputName="Tex",Input=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_9'))
                    Inputs(1)=(InputName="UV",Input=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_10'))
                    Inputs(2)=(InputName="MaxSteps",Input=(Expression=MaterialExpressionFloor'ParallaxOcclusionMapping:MaterialExpressionFloor_4'))
                    Inputs(3)=(InputName="stepsize",Input=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_48'))
                    Inputs(4)=(InputName="UVDist",Input=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_1'))
                    Inputs(5)=(InputName="InDDX",Input=(Expression=MaterialExpressionDDX'ParallaxOcclusionMapping:MaterialExpressionDDX_4'))
                    Inputs(6)=(InputName="InDDY",Input=(Expression=MaterialExpressionDDY'ParallaxOcclusionMapping:MaterialExpressionDDY_4'))
                    Inputs(7)=(InputName="HeightMapChannel",Input=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_3'))
                    MaterialExpressionEditorX=-864
                    MaterialExpressionEditorY=336
                    MaterialExpressionGuid=DC87119C4C026BA942E14CAB4130F280
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionCustom_21"
                    Code="float rayheight=1;\r\nfloat oldray=1;\r\nfloat2 offset=0;\r\nfloat oldtex=1;\r\nfloat texatray;\r\nfloat yintersect;\r\n\r\nint i;\r\n\r\nwhile(i<MaxSteps+2)\r\n{\r\n\r\nfloat texatray=dot(HeightMapChannel, Tex.SampleGrad(TexSampler,UV+offset,InDDX, InDDY));\r\n\r\nif (rayheight < texatray)\r\n{\r\nfloat xintersect = (oldray-oldtex)+(texatray-rayheight);\r\nxintersect=(texatray-rayheight)/xintersect;\r\nyintersect=(oldray*(xintersect))+(rayheight*(1-xintersect));\r\noffset-=(xintersect*UVDist);\r\nbreak;\r\n}\r\n\r\noldray=rayheight;\r\nrayheight-=stepsize;\r\noffset+=UVDist;\r\noldtex=texatray;\r\n\r\ni++;\r\n}\r\n\r\n\r\nfloat2 saveoffset=offset;\r\nfloat shadow=1;\r\nfloat dist=0;\r\n\r\n\r\ntexatray=dot(HeightMapChannel, Tex.SampleGrad(TexSampler,UV+offset,InDDX, InDDY))+0.01;\r\nfloat finalrayz=yintersect;\r\n\r\nrayheight=texatray;\r\nfloat lightstepsize=1/ShadowSteps;\r\n\r\nint j=0;\r\nwhile(j<ShadowSteps)\r\n{\r\nif(rayheight < texatray)\r\n{\r\nshadow=0;\r\nbreak;\r\n}\r\nelse\r\n{\r\nshadow=min(shadow,(rayheight-texatray)*k/dist);\r\n}\r\n\r\noldray=rayheight;\r\nrayheight+=TangentLightVector.z*lightstepsize;\r\n\r\noffset+=TangentLightVector.xy*lightstepsize;\r\noldtex=texatray;\r\n\r\ntexatray=dot(HeightMapChannel, Tex.SampleGrad(TexSampler,UV+offset,InDDX, InDDY));\r\ndist+=lightstepsize;\r\nj++;\r\n}\r\n\r\n\r\nfloat4 finalout;\r\nfinalout.xy=saveoffset;\r\nfinalout.z=finalrayz;\r\nfinalout.w=shadow;\r\nreturn finalout;\r\n"
                    OutputType=CMOT_Float4
                    Description="Parallax Occlusion Mapping"
                    Inputs(0)=(InputName="Tex",Input=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_9'))
                    Inputs(1)=(InputName="UV",Input=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_10'))
                    Inputs(2)=(InputName="MaxSteps",Input=(Expression=MaterialExpressionFloor'ParallaxOcclusionMapping:MaterialExpressionFloor_4'))
                    Inputs(3)=(InputName="stepsize",Input=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_49'))
                    Inputs(4)=(InputName="UVDist",Input=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_2'))
                    Inputs(5)=(InputName="InDDX",Input=(Expression=MaterialExpressionDDX'ParallaxOcclusionMapping:MaterialExpressionDDX_4'))
                    Inputs(6)=(InputName="InDDY",Input=(Expression=MaterialExpressionDDY'ParallaxOcclusionMapping:MaterialExpressionDDY_4'))
                    Inputs(7)=(InputName="TexHeight",Input=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_12'))
                    Inputs(8)=(InputName="TangentLightVector",Input=(Expression=MaterialExpressionNormalize'ParallaxOcclusionMapping:MaterialExpressionNormalize_19'))
                    Inputs(9)=(InputName="ShadowSteps",Input=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_31'))
                    Inputs(10)=(InputName="k",Input=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_29'))
                    Inputs(11)=(InputName="HeightMapChannel",Input=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_3'))
                    MaterialExpressionEditorX=-912
                    MaterialExpressionEditorY=768
                    MaterialExpressionGuid=DC87119C4C026BA942E14CAB4130F280
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionCustom_5"
                    Code="float3 colors[10];\r\n\r\ncolors[0]=float3(0,1,0.127);\r\ncolors[1]=float3(0,1,0);\r\ncolors[2]=float3(0.046,0.52,0);\r\ncolors[3]=float3(0.215,0.215,0);\r\ncolors[4]=float3(0.52,0.046,0);\r\ncolors[5]=float3(0.7,0,0);\r\ncolors[6]=float3(1,0,0);\r\ncolors[7]=float3(1,0,0.5);\r\ncolors[8]=float3(1,0.9,0.9);\r\ncolors[9]=float3(1,1,1);\r\n\r\nSteps/=MaxSteps-1;\r\nSteps=saturate(Steps);\r\n\r\nfloat cindex = floor((Steps)*8);\r\nfloat cphase = frac((Steps)*8);\r\n\r\nreturn lerp(colors[cindex],colors[cindex+1],cphase);"
                    Description="ShaderComplexity"
                    Inputs(0)=(InputName="Steps",Input=(Expression=MaterialExpressionFloor'ParallaxOcclusionMapping:MaterialExpressionFloor_12'))
                    Inputs(1)=(InputName="MaxSteps",Input=(Expression=MaterialExpressionScalarParameter'ParallaxOcclusionMapping:MaterialExpressionScalarParameter_6'))
                    MaterialExpressionEditorX=208
                    MaterialExpressionEditorY=-112
                    MaterialExpressionGuid=D0AB8CC74D479A1410BB97BAD215F351
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDDX_13"
                    Value=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_10')
                    MaterialExpressionEditorX=-704
                    MaterialExpressionEditorY=1488
                    MaterialExpressionGuid=76AC4172422D8726D613E18429F00FBF
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDDX_14"
                    Value=(Expression=MaterialExpressionWorldPosition'ParallaxOcclusionMapping:MaterialExpressionWorldPosition_4')
                    MaterialExpressionEditorX=-592
                    MaterialExpressionEditorY=1712
                    MaterialExpressionGuid=67D839B2488B18A14D41E4A3BD8AAC8C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDDX_4"
                    Value=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_10')
                    MaterialExpressionEditorX=-1312
                    MaterialExpressionEditorY=608
                    MaterialExpressionGuid=87C683F34B184A3D0612909BEF3C2F91
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDDY_13"
                    Value=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_10')
                    MaterialExpressionEditorX=-704
                    MaterialExpressionEditorY=1584
                    MaterialExpressionGuid=614DE5A546AC0A1FA8FB179FBC81F2C2
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDDY_14"
                    Value=(Expression=MaterialExpressionWorldPosition'ParallaxOcclusionMapping:MaterialExpressionWorldPosition_4')
                    MaterialExpressionEditorX=-592
                    MaterialExpressionEditorY=1792
                    MaterialExpressionGuid=69C4ED874D3EEB468B55459E389A758C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDDY_4"
                    Value=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_10')
                    MaterialExpressionEditorX=-1312
                    MaterialExpressionEditorY=672
                    MaterialExpressionGuid=3EB3139E43F0E9625365739D9201CD1E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDistance_4"
                    A=(Expression=MaterialExpressionComponentMask'ParallaxOcclusionMapping:MaterialExpressionComponentMask_8')
                    B=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_8')
                    MaterialExpressionEditorX=-2590
                    MaterialExpressionEditorY=850
                    MaterialExpressionGuid=DB0A48004C8E5026A8EFC88FD81FA14E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDistance_9"
                    A=(Expression=MaterialExpressionAppendVector'ParallaxOcclusionMapping:MaterialExpressionAppendVector_0')
                    B=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_14')
                    MaterialExpressionEditorX=816
                    MaterialExpressionEditorY=960
                    MaterialExpressionGuid=DA15BB4942BBB4BAC4563DBF6213319B
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_18"
                    A=(Expression=MaterialExpressionMaterialFunctionCall'ParallaxOcclusionMapping:MaterialExpressionMaterialFunctionCall_22')
                    B=(Expression=MaterialExpressionMaterialFunctionCall'ParallaxOcclusionMapping:MaterialExpressionMaterialFunctionCall_20',OutputIndex=1)
                    MaterialExpressionEditorY=1520
                    MaterialExpressionGuid=451865284A14D0321F7AB28682EF58CA
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_19"
                    A=(Expression=MaterialExpressionMaterialFunctionCall'ParallaxOcclusionMapping:MaterialExpressionMaterialFunctionCall_23')
                    B=(Expression=MaterialExpressionMaterialFunctionCall'ParallaxOcclusionMapping:MaterialExpressionMaterialFunctionCall_21',OutputIndex=1)
                    MaterialExpressionEditorX=16
                    MaterialExpressionEditorY=1648
                    MaterialExpressionGuid=106887B149C3BD45E4E5B8B7511FE273
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_2"
                    A=(Expression=MaterialExpressionDistance'ParallaxOcclusionMapping:MaterialExpressionDistance_9')
                    B=(Expression=MaterialExpressionStaticSwitch'ParallaxOcclusionMapping:MaterialExpressionStaticSwitch_2')
                    ConstB=1.000000
                    MaterialExpressionEditorX=960
                    MaterialExpressionEditorY=1088
                    MaterialExpressionGuid=12A2AEE343DC8AEA8619D6AE061EBFCC
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_3"
                    A=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_0')
                    B=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_39')
                    ConstB=1.000000
                    MaterialExpressionEditorX=848
                    MaterialExpressionEditorY=1408
                    MaterialExpressionGuid=12A2AEE343DC8AEA8619D6AE061EBFCC
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_39"
                    A=(Expression=MaterialExpressionMax'ParallaxOcclusionMapping:MaterialExpressionMax_4')
                    B=(Expression=MaterialExpressionAbs'ParallaxOcclusionMapping:MaterialExpressionAbs_26')
                    MaterialExpressionEditorX=368
                    MaterialExpressionEditorY=1648
                    MaterialExpressionGuid=7BA37C054797AE8A7EA1689C6A7CEE18
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_46"
                    A=(Expression=MaterialExpressionComponentMask'ParallaxOcclusionMapping:MaterialExpressionComponentMask_47')
                    B=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_12')
                    MaterialExpressionEditorX=-2432
                    MaterialExpressionEditorY=1328
                    MaterialExpressionGuid=AED49098409FB24C75E82F848F82CC94
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_48"
                    B=(Expression=MaterialExpressionFloor'ParallaxOcclusionMapping:MaterialExpressionFloor_4')
                    MaterialExpressionEditorX=-2016
                    MaterialExpressionEditorY=304
                    MaterialExpressionGuid=4DBC8A43477445FCF8AB4297D05208F7
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_49"
                    B=(Expression=MaterialExpressionLinearInterpolate'ParallaxOcclusionMapping:MaterialExpressionLinearInterpolate_4')
                    MaterialExpressionEditorX=-2032
                    MaterialExpressionEditorY=400
                    MaterialExpressionGuid=4DBC8A43477445FCF8AB4297D05208F7
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_53"
                    A=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_0')
                    B=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_12')
                    MaterialExpressionEditorX=-496
                    MaterialExpressionEditorY=160
                    MaterialExpressionGuid=7F51D1864585CF9F08026F89BEC01E8D
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDivide_9"
                    A=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_17')
                    B=(Expression=MaterialExpressionComponentMask'ParallaxOcclusionMapping:MaterialExpressionComponentMask_9')
                    ConstB=1.000000
                    MaterialExpressionEditorX=-2286
                    MaterialExpressionEditorY=930
                    MaterialExpressionGuid=B490B4AA41DF6570DA3DC69D1B04458C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDotProduct_16"
                    A=(Expression=MaterialExpressionMaterialFunctionCall'ParallaxOcclusionMapping:MaterialExpressionMaterialFunctionCall_31')
                    B=(Expression=MaterialExpressionCameraVectorWS'ParallaxOcclusionMapping:MaterialExpressionCameraVectorWS_28')
                    MaterialExpressionEditorX=110
                    MaterialExpressionEditorY=1806
                    MaterialExpressionGuid=4AD72DE049AEB85601A981ACACB94D26
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionDotProduct_4"
                    A=(Expression=MaterialExpressionCameraVectorWS'ParallaxOcclusionMapping:MaterialExpressionCameraVectorWS_8')
                    B=(Expression=MaterialExpressionVertexNormalWS'ParallaxOcclusionMapping:MaterialExpressionVertexNormalWS_4')
                    MaterialExpressionEditorX=-2688
                    MaterialExpressionEditorY=384
                    MaterialExpressionGuid=FEF645B241FE6B1B7D53468EFE69E068
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFeatureLevelSwitch_0"
                    Default=(Expression=MaterialExpressionQualitySwitch'ParallaxOcclusionMapping:MaterialExpressionQualitySwitch_5')
                    Inputs(0)=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_21')
                    Inputs(1)=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_21')
                    Inputs(2)=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_21')
                    MaterialExpressionEditorX=1408
                    MaterialExpressionEditorY=400
                    MaterialExpressionGuid=FD7B276E4CA6AAED227E74A36CFCCAF3
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFeatureLevelSwitch_1"
                    Default=(Expression=MaterialExpressionQualitySwitch'ParallaxOcclusionMapping:MaterialExpressionQualitySwitch_8')
                    Inputs(0)=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_20')
                    Inputs(1)=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_20')
                    Inputs(2)=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_20')
                    MaterialExpressionEditorX=1408
                    MaterialExpressionEditorY=640
                    MaterialExpressionGuid=5B875F694539AE01F3A026AF339AF9FA
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFeatureLevelSwitch_4"
                    Default=(Expression=MaterialExpressionQualitySwitch'ParallaxOcclusionMapping:MaterialExpressionQualitySwitch_11')
                    Inputs(0)=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_36')
                    Inputs(1)=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_36')
                    Inputs(2)=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_36')
                    MaterialExpressionEditorX=1408
                    MaterialExpressionEditorY=1088
                    MaterialExpressionGuid=FAB8E5D549287B010429EA8751DE1671
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFeatureLevelSwitch_5"
                    Default=(Expression=MaterialExpressionQualitySwitch'ParallaxOcclusionMapping:MaterialExpressionQualitySwitch_12')
                    Inputs(0)=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_38')
                    Inputs(1)=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_38')
                    Inputs(2)=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_38')
                    MaterialExpressionEditorX=1408
                    MaterialExpressionEditorY=864
                    MaterialExpressionGuid=FAB8E5D549287B010429EA8751DE1671
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFloor_12"
                    Input=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_59')
                    MaterialExpressionEditorX=-112
                    MaterialExpressionEditorY=80
                    MaterialExpressionGuid=82D363A54F50CA7B56FAA2BA2F1E6192
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFloor_4"
                    Input=(Expression=MaterialExpressionLinearInterpolate'ParallaxOcclusionMapping:MaterialExpressionLinearInterpolate_4')
                    MaterialExpressionEditorX=-2096
                    MaterialExpressionEditorY=208
                    MaterialExpressionGuid=A7AC9114474AE1B39C1EB9A2176B4E13
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_1"
                    InputName="Light Vector"
                    Description="For the occlusion pass, the light vector needs to be specified. It is suggested to use a Material Parameter Collection to define the vector using a simple level or actor blueprint."
                    Id=B312F88640D8CD07BA718987D2F68798
                    PreviewValue=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000)
                    bUsePreviewValueAsDefault=True
                    SortPriority=22
                    MaterialExpressionEditorX=-3214
                    MaterialExpressionEditorY=1250
                    MaterialExpressionGuid=E928593D47FFC53B302026BCAB5CC22C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_10"
                    Preview=(Expression=MaterialExpressionTextureCoordinate'ParallaxOcclusionMapping:MaterialExpressionTextureCoordinate_8')
                    InputName="UVs"
                    Description="The coordinates to use for mapping. Can be used with worldposition V2 values as well."
                    Id=5DD7ACAE4E3F667915F3AFB368F146B7
                    InputType=FunctionInput_Vector2
                    bUsePreviewValueAsDefault=True
                    SortPriority=4
                    MaterialExpressionEditorX=-1600
                    MaterialExpressionEditorY=320
                    MaterialExpressionGuid=393B489344030745FA42168A90400AE8
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_12"
                    InputName="Height Ratio"
                    Description="This is how \'deep\' the heightmap is in relation to its width. Typical values are between 0.05 and 0.1."
                    Id=87508BD245D6CCD2972534BB5478DF07
                    InputType=FunctionInput_Scalar
                    PreviewValue=(X=0.075000,Y=0.000000,Z=0.000000,W=1.000000)
                    bUsePreviewValueAsDefault=True
                    SortPriority=1
                    MaterialExpressionEditorX=-2416
                    MaterialExpressionEditorY=464
                    MaterialExpressionGuid=DC3C62364D4A0C05CD8397965781860E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_19"
                    InputName="-----------------------------"
                    Description="Blank spacer input does nothing"
                    Id=ED8CD290413B44C28DA13AB9277D307B
                    InputType=FunctionInput_StaticBool
                    bUsePreviewValueAsDefault=True
                    SortPriority=10
                    MaterialExpressionEditorX=2192
                    MaterialExpressionEditorY=448
                    MaterialExpressionGuid=DC3C62364D4A0C05CD8397965781860E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_2"
                    InputName="Min Steps"
                    Description="The Min steps is how many steps will be used when looking downward at the material. Typically fewer steps are required when looking down since there is less resulting offset."
                    Id=C6EB5A304CEDCCB94B51698214927D75
                    InputType=FunctionInput_Scalar
                    PreviewValue=(X=8.000000,Y=0.000000,Z=0.000000,W=1.000000)
                    bUsePreviewValueAsDefault=True
                    SortPriority=2
                    MaterialExpressionEditorX=-2592
                    MaterialExpressionGuid=DC3C62364D4A0C05CD8397965781860E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_20"
                    InputName="------------------------------"
                    Description="Blank spacer input does nothing"
                    Id=3AFFFA8E44372B48C9EEDCA807C10DB9
                    InputType=FunctionInput_StaticBool
                    bUsePreviewValueAsDefault=True
                    SortPriority=20
                    MaterialExpressionEditorX=2192
                    MaterialExpressionEditorY=816
                    MaterialExpressionGuid=DC3C62364D4A0C05CD8397965781860E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_23"
                    Preview=(Expression=MaterialExpressionStaticBool'ParallaxOcclusionMapping:MaterialExpressionStaticBool_6')
                    InputName="Specify Manual Texture Size"
                    Description="Only used for Pixel Depth Offset. This lets you manually specify the World Size of your texture to skip some expensive instructions that are normally used to determine the UV to World Size.Defaults to False."
                    Id=FD746ECC45EE787213C5DEA274BD2906
                    InputType=FunctionInput_StaticBool
                    bUsePreviewValueAsDefault=True
                    SortPriority=11
                    MaterialExpressionEditorX=80
                    MaterialExpressionEditorY=1040
                    MaterialExpressionGuid=E928593D47FFC53B302026BCAB5CC22C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_24"
                    InputName="Manual Texture Size"
                    Description="Only used for Pixel Depth Offset. This lets you manually specify the World Size of your texture to skip some expensive instructions that are normally used to determine the UV to World Size."
                    Id=E33AB7C14CCCC01624FE409E7479A4A5
                    InputType=FunctionInput_Scalar
                    PreviewValue=(X=1024.000000,Y=0.000000,Z=0.000000,W=1.000000)
                    bUsePreviewValueAsDefault=True
                    SortPriority=12
                    MaterialExpressionEditorX=96
                    MaterialExpressionEditorY=1216
                    MaterialExpressionGuid=E928593D47FFC53B302026BCAB5CC22C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_25"
                    Preview=(Expression=MaterialExpressionStaticBool'ParallaxOcclusionMapping:MaterialExpressionStaticBool_7')
                    InputName="Render Shadows (Occlusion Mapping)"
                    Description="By default Shadows are disabled for performance. This allows static switching to make the Parallax Only case much cheaper. Occlusion mapping always runs 1 extra step in order to fix an artifact caused by using variable View steps with Fixed shadow steps."
                    Id=742B79554E19CE37969C35B9BF7A13E5
                    InputType=FunctionInput_StaticBool
                    bUsePreviewValueAsDefault=True
                    SortPriority=21
                    MaterialExpressionEditorX=-880
                    MaterialExpressionEditorY=656
                    MaterialExpressionGuid=E928593D47FFC53B302026BCAB5CC22C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                    bCollapsed=True
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_29"
                    InputName="Shadow Penumbra"
                    Description="Defines how hard or soft the shadows are. The number is not in degrees since that would cost slightly more to convert to degrees."
                    Id=0DD23D2047334724A697448DB16DAA07
                    InputType=FunctionInput_Scalar
                    PreviewValue=(X=1.000000,Y=0.000000,Z=0.000000,W=1.000000)
                    bUsePreviewValueAsDefault=True
                    SortPriority=24
                    MaterialExpressionEditorX=-1440
                    MaterialExpressionEditorY=1136
                    MaterialExpressionGuid=E928593D47FFC53B302026BCAB5CC22C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                    bCollapsed=True
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_3"
                    InputName="Heightmap Channel"
                    Description="Which Channel your heightmap texture uses. Uses Alpha channel by Default."
                    Id=9AC5B0694B7F9A6A4A7A4EB4AC2E4AD8
                    InputType=FunctionInput_Vector4
                    bUsePreviewValueAsDefault=True
                    SortPriority=9
                    MaterialExpressionEditorX=-1328
                    MaterialExpressionEditorY=1296
                    MaterialExpressionGuid=E928593D47FFC53B302026BCAB5CC22C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_31"
                    InputName="Shadow Steps"
                    Description="How many steps to use for the shadow occlusion pass."
                    Id=3FE0DA4A4B2DE19C9C9672AD9653A18F
                    InputType=FunctionInput_Scalar
                    PreviewValue=(X=16.000000,Y=0.000000,Z=0.000000,W=1.000000)
                    bUsePreviewValueAsDefault=True
                    SortPriority=23
                    MaterialExpressionEditorX=-1424
                    MaterialExpressionEditorY=1040
                    MaterialExpressionGuid=E928593D47FFC53B302026BCAB5CC22C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                    bCollapsed=True
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_5"
                    InputName="Max Steps"
                    Description="The Max Steps is how many steps will be performed at glancing angles where more steps are typically necessary."
                    Id=38DC91194340C3172D478F8134871AAC
                    InputType=FunctionInput_Scalar
                    PreviewValue=(X=32.000000,Y=0.000000,Z=0.000000,W=1.000000)
                    bUsePreviewValueAsDefault=True
                    SortPriority=3
                    MaterialExpressionEditorX=-2592
                    MaterialExpressionEditorY=176
                    MaterialExpressionGuid=DC3C62364D4A0C05CD8397965781860E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionInput_9"
                    Preview=(Expression=MaterialExpressionTextureObject'ParallaxOcclusionMapping:MaterialExpressionTextureObject_0')
                    InputName="Heightmap Texture"
                    Description="The Texture Object containing your Heightmap"
                    Id=D3CD700647D7EF6A57FF4EB239783FD9
                    InputType=FunctionInput_Texture2D
                    MaterialExpressionEditorX=-1616
                    MaterialExpressionEditorY=112
                    MaterialExpressionGuid=393B489344030745FA42168A90400AE8
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionOutput_0"
                    OutputName="Tangent Light Vector"
                    Description="The Light Vector Transformed into Tangent Space. Useful for custom effects using the lighting."
                    SortPriority=5
                    A=(Expression=MaterialExpressionTransform'ParallaxOcclusionMapping:MaterialExpressionTransform_18')
                    Id=0422E21C46F047C08010108CE9080F67
                    MaterialExpressionEditorX=-2120
                    MaterialExpressionEditorY=1620
                    MaterialExpressionGuid=5777E71B43165C0C8BEAF9A6D8619E50
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionOutput_1"
                    OutputName="Pixel Depth Offset"
                    Description="Pixel Depth Offset is used to give accurate intersection with other meshes as well as shadows cast by other meshes. Will cause a problem with Dynamic Shadows since the original depths will shadow the new offset depths."
                    SortPriority=3
                    A=(Expression=MaterialExpressionFeatureLevelSwitch'ParallaxOcclusionMapping:MaterialExpressionFeatureLevelSwitch_4')
                    bLastPreviewed=True
                    Id=E3AD423344E244638874F9AF6D79749D
                    MaterialExpressionEditorX=1680
                    MaterialExpressionEditorY=1088
                    MaterialExpressionGuid=2FCC783B471B4B06006F019CCA463AFB
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionOutput_12"
                    OutputName="Material Complexity - Steps Debug"
                    Description="Pixel Depth Offset is used to give accurate intersection with other meshes as well as shadows cast by other meshes. Will cause a problem with Dynamic Shadows since the original depths will shadow the new offset depths."
                    SortPriority=6
                    A=(Expression=MaterialExpressionCustom'ParallaxOcclusionMapping:MaterialExpressionCustom_5')
                    bLastPreviewed=True
                    Id=94349DAC4478EF16DDD1109EC23B0DED
                    MaterialExpressionEditorX=512
                    MaterialExpressionEditorY=-16
                    MaterialExpressionGuid=2FCC783B471B4B06006F019CCA463AFB
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionOutput_2"
                    OutputName="Z Offset"
                    Description="Z length. Can be used to map virtual worldposition textures by subtracting this Z value as the vertex normal (or 0,0,1 for a floor)."
                    SortPriority=4
                    A=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_3')
                    bLastPreviewed=True
                    Id=994E0D0A4904AABAE4E7AFAA8A55B61F
                    MaterialExpressionEditorX=1120
                    MaterialExpressionEditorY=1344
                    MaterialExpressionGuid=2FCC783B471B4B06006F019CCA463AFB
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionOutput_5"
                    OutputName="Parallax UVs"
                    Description="This returns the input UVs with Parallax Offset. "
                    A=(Expression=MaterialExpressionFeatureLevelSwitch'ParallaxOcclusionMapping:MaterialExpressionFeatureLevelSwitch_0')
                    bLastPreviewed=True
                    Id=4ADDA7A84E423550062B76AE7C6E11CB
                    MaterialExpressionEditorX=1744
                    MaterialExpressionEditorY=368
                    MaterialExpressionGuid=2FCC783B471B4B06006F019CCA463AFB
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionOutput_6"
                    OutputName="Offset Only"
                    Description="Use this when you want to use t he offsets with textures that need a different tiling factor than the heightmap.\r\n\r\nYou need to multiply the offset by the tiling ratio between the surfaces. Ie, if the Heightmap had a tiling of 1, and a second overlay detail texture had a tiling factor of 8, you need to multiply this Offset value by 8 before adding it to the UVs of the detail texture."
                    SortPriority=1
                    A=(Expression=MaterialExpressionFeatureLevelSwitch'ParallaxOcclusionMapping:MaterialExpressionFeatureLevelSwitch_1')
                    bLastPreviewed=True
                    Id=8258927B4F3A106ACC7FAA9AC9C32CAE
                    MaterialExpressionEditorX=1728
                    MaterialExpressionEditorY=640
                    MaterialExpressionGuid=2FCC783B471B4B06006F019CCA463AFB
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionFunctionOutput_9"
                    OutputName="Shadow"
                    Description="This is the shadow from the specified light vector. The color is black; to colorize add a color and clamp to 1 before multiplying by your basecolor. This shadow method will be obsolete once pixel depth offset works in the main dynamic shadow pass."
                    SortPriority=2
                    A=(Expression=MaterialExpressionFeatureLevelSwitch'ParallaxOcclusionMapping:MaterialExpressionFeatureLevelSwitch_5')
                    bLastPreviewed=True
                    Id=0D45CD6D49F3025A6699408D7CB08A5F
                    MaterialExpressionEditorX=1712
                    MaterialExpressionEditorY=864
                    MaterialExpressionGuid=2FCC783B471B4B06006F019CCA463AFB
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionLinearInterpolate_4"
                    A=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_5')
                    B=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_2')
                    Alpha=(Expression=MaterialExpressionAbs'ParallaxOcclusionMapping:MaterialExpressionAbs_4')
                    MaterialExpressionEditorX=-2272
                    MaterialExpressionEditorY=192
                    MaterialExpressionGuid=21FEBF264E5CC37E2D470592DEC756BF
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionMaterialFunctionCall_20"
                    MaterialFunction=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/VectorLength.VectorLength'
                    FunctionInputs(0)=(ExpressionInputId=E06081AD4255F67C6D398889E3CE73BA,Input=(InputName="Vector 2"))
                    FunctionInputs(1)=(ExpressionInputId=1F411C544AE4A9ACC5F5F8A2A099B309,Input=(Expression=MaterialExpressionDDX'ParallaxOcclusionMapping:MaterialExpressionDDX_14',InputName="Vector 3"))
                    FunctionOutputs(0)=(ExpressionOutputId=3C53F2D54FE1029372151E82C85F7755,Output=(OutputName="V2 Length"))
                    FunctionOutputs(1)=(ExpressionOutputId=F186F43445EF47104CD650A242DEAECE,Output=(OutputName="V3 Length"))
                    MaterialExpressionEditorX=-384
                    MaterialExpressionEditorY=1696
                    MaterialExpressionGuid=A6B34C944924E958CAE9798F3C188B11
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                    Outputs(0)=(OutputName="V2 Length")
                    Outputs(1)=(OutputName="V3 Length")
                 End Object
                 Begin Object Name="MaterialExpressionMaterialFunctionCall_21"
                    MaterialFunction=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/VectorLength.VectorLength'
                    FunctionInputs(0)=(ExpressionInputId=E06081AD4255F67C6D398889E3CE73BA,Input=(InputName="Vector 2"))
                    FunctionInputs(1)=(ExpressionInputId=1F411C544AE4A9ACC5F5F8A2A099B309,Input=(Expression=MaterialExpressionDDY'ParallaxOcclusionMapping:MaterialExpressionDDY_14',InputName="Vector 3"))
                    FunctionOutputs(0)=(ExpressionOutputId=3C53F2D54FE1029372151E82C85F7755,Output=(OutputName="V2 Length"))
                    FunctionOutputs(1)=(ExpressionOutputId=F186F43445EF47104CD650A242DEAECE,Output=(OutputName="V3 Length"))
                    MaterialExpressionEditorX=-384
                    MaterialExpressionEditorY=1792
                    MaterialExpressionGuid=08F0A8C04F63D8A5AD516CA9537F97CA
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                    Outputs(0)=(OutputName="V2 Length")
                    Outputs(1)=(OutputName="V3 Length")
                 End Object
                 Begin Object Name="MaterialExpressionMaterialFunctionCall_22"
                    MaterialFunction=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/VectorLength.VectorLength'
                    FunctionInputs(0)=(ExpressionInputId=E06081AD4255F67C6D398889E3CE73BA,Input=(Expression=MaterialExpressionAbs'ParallaxOcclusionMapping:MaterialExpressionAbs_13',InputName="Vector 2"))
                    FunctionInputs(1)=(ExpressionInputId=1F411C544AE4A9ACC5F5F8A2A099B309,Input=(InputName="Vector 3"))
                    FunctionOutputs(0)=(ExpressionOutputId=3C53F2D54FE1029372151E82C85F7755,Output=(OutputName="V2 Length"))
                    FunctionOutputs(1)=(ExpressionOutputId=F186F43445EF47104CD650A242DEAECE,Output=(OutputName="V3 Length"))
                    MaterialExpressionEditorX=-368
                    MaterialExpressionEditorY=1440
                    MaterialExpressionGuid=A6B34C944924E958CAE9798F3C188B11
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                    Outputs(0)=(OutputName="V2 Length")
                    Outputs(1)=(OutputName="V3 Length")
                 End Object
                 Begin Object Name="MaterialExpressionMaterialFunctionCall_23"
                    MaterialFunction=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/VectorLength.VectorLength'
                    FunctionInputs(0)=(ExpressionInputId=E06081AD4255F67C6D398889E3CE73BA,Input=(Expression=MaterialExpressionAbs'ParallaxOcclusionMapping:MaterialExpressionAbs_14',InputName="Vector 2"))
                    FunctionInputs(1)=(ExpressionInputId=1F411C544AE4A9ACC5F5F8A2A099B309,Input=(InputName="Vector 3"))
                    FunctionOutputs(0)=(ExpressionOutputId=3C53F2D54FE1029372151E82C85F7755,Output=(OutputName="V2 Length"))
                    FunctionOutputs(1)=(ExpressionOutputId=F186F43445EF47104CD650A242DEAECE,Output=(OutputName="V3 Length"))
                    MaterialExpressionEditorX=-368
                    MaterialExpressionEditorY=1568
                    MaterialExpressionGuid=08F0A8C04F63D8A5AD516CA9537F97CA
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                    Outputs(0)=(OutputName="V2 Length")
                    Outputs(1)=(OutputName="V3 Length")
                 End Object
                 Begin Object Name="MaterialExpressionMaterialFunctionCall_31"
                    MaterialFunction=MaterialFunction'/Engine/Functions/Engine_MaterialFunctions02/Utility/CameraDirectionVector.CameraDirectionVector'
                    FunctionOutputs(0)=(ExpressionOutputId=B8DC55274CB0C18F86B060A5EED9FCD3,Output=(OutputName="Result"))
                    MaterialExpressionEditorX=-98
                    MaterialExpressionEditorY=1806
                    MaterialExpressionGuid=8F9CE49B4AF3BC5CC2F9B98D691FE5DB
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                    Outputs(0)=(OutputName="Result")
                 End Object
                 Begin Object Name="MaterialExpressionMax_4"
                    A=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_18')
                    B=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_19')
                    MaterialExpressionEditorX=192
                    MaterialExpressionEditorY=1584
                    MaterialExpressionGuid=8F13E29E49BE45014DBABDA68DE9FD1E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_0"
                    A=(Expression=MaterialExpressionOneMinus'ParallaxOcclusionMapping:MaterialExpressionOneMinus_0')
                    B=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_12')
                    MaterialExpressionEditorX=272
                    MaterialExpressionEditorY=736
                    MaterialExpressionGuid=7E281632497629478FFCBA88202B18E3
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_1"
                    A=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_48')
                    B=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_19')
                    MaterialExpressionEditorX=-1680
                    MaterialExpressionEditorY=480
                    MaterialExpressionGuid=24A8777B4770222EED24D983363DCE2C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_17"
                    A=(Expression=MaterialExpressionDistance'ParallaxOcclusionMapping:MaterialExpressionDistance_4')
                    ConstB=-1.000000
                    MaterialExpressionEditorX=-2446
                    MaterialExpressionEditorY=866
                    MaterialExpressionGuid=4355BFF64EA97D8E9E4BE396C197076E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_18"
                    A=(Expression=MaterialExpressionNormalize'ParallaxOcclusionMapping:MaterialExpressionNormalize_4')
                    B=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_9')
                    MaterialExpressionEditorX=-2142
                    MaterialExpressionEditorY=818
                    MaterialExpressionGuid=29789F1F49E7947AAD9A99AD06A98E97
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_19"
                    A=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_12')
                    B=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_18')
                    MaterialExpressionEditorX=-1968
                    MaterialExpressionEditorY=720
                    MaterialExpressionGuid=2DAC62864CEED314F2594DAC203CFA4E
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_2"
                    A=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_19')
                    B=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_49')
                    MaterialExpressionEditorX=-1680
                    MaterialExpressionEditorY=576
                    MaterialExpressionGuid=8D4EEE3745E59EBF5C061A81CE9BCBD4
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_21"
                    A=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_10')
                    MaterialExpressionEditorX=1040
                    MaterialExpressionEditorY=304
                    MaterialExpressionGuid=7105DFE74A5402C6655095BAD10B37C7
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_56"
                    A=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_1')
                    ConstB=-1.000000
                    MaterialExpressionEditorX=-2976
                    MaterialExpressionEditorY=1264
                    MaterialExpressionGuid=DE8E1975459C3E1A46B4DAA7E63EAB2D
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionMultiply_59"
                    A=(Expression=MaterialExpressionFloor'ParallaxOcclusionMapping:MaterialExpressionFloor_4')
                    B=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_53')
                    MaterialExpressionEditorX=-304
                    MaterialExpressionEditorY=48
                    MaterialExpressionGuid=451C38EC4FE749DCE5E441AA05946080
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionNormalize_19"
                    VectorInput=(Expression=MaterialExpressionAppendVector'ParallaxOcclusionMapping:MaterialExpressionAppendVector_7')
                    MaterialExpressionEditorX=-2160
                    MaterialExpressionEditorY=1280
                    MaterialExpressionGuid=5C2865CC42FBCF8A39A673886C1664FA
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionNormalize_4"
                    VectorInput=(Expression=MaterialExpressionComponentMask'ParallaxOcclusionMapping:MaterialExpressionComponentMask_8')
                    MaterialExpressionEditorX=-2574
                    MaterialExpressionEditorY=770
                    MaterialExpressionGuid=A7BCA88B4823E24B07BC87B6BB7023C9
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionOneMinus_0"
                    Input=(Expression=MaterialExpressionComponentMask'ParallaxOcclusionMapping:MaterialExpressionComponentMask_2')
                    MaterialExpressionEditorX=128
                    MaterialExpressionEditorY=704
                    MaterialExpressionGuid=74E495784A0C6B01821431A468165EB9
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionQualitySwitch_11"
                    Default=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_2')
                    Inputs(0)=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_37')
                    Inputs(1)=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_2')
                    MaterialExpressionEditorX=1216
                    MaterialExpressionEditorY=1040
                    MaterialExpressionGuid=8311E0264362E614B166C0BC4F0A5766
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionQualitySwitch_12"
                    Default=(Expression=MaterialExpressionStaticSwitch'ParallaxOcclusionMapping:MaterialExpressionStaticSwitch_6')
                    Inputs(0)=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_39')
                    MaterialExpressionEditorX=1216
                    MaterialExpressionEditorY=816
                    MaterialExpressionGuid=8311E0264362E614B166C0BC4F0A5766
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionQualitySwitch_5"
                    Default=(Expression=MaterialExpressionAdd'ParallaxOcclusionMapping:MaterialExpressionAdd_0')
                    Inputs(0)=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_21')
                    MaterialExpressionEditorX=1184
                    MaterialExpressionEditorY=400
                    MaterialExpressionGuid=8311E0264362E614B166C0BC4F0A5766
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionQualitySwitch_8"
                    Default=(Expression=MaterialExpressionComponentMask'ParallaxOcclusionMapping:MaterialExpressionComponentMask_56')
                    Inputs(0)=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_22')
                    MaterialExpressionEditorX=1184
                    MaterialExpressionEditorY=608
                    MaterialExpressionGuid=8311E0264362E614B166C0BC4F0A5766
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionScalarParameter_6"
                    DefaultValue=32.000000
                    ParameterName="Max Expensive Steps Debug Color"
                    ExpressionGUID=80AB74E0489030C79AFE19878BD020D9
                    MaterialExpressionEditorX=-224
                    MaterialExpressionEditorY=-112
                    MaterialExpressionGuid=44B35E1E491670DA25029DAA0F3CEDEF
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionStaticBool_6"
                    MaterialExpressionEditorX=-144
                    MaterialExpressionEditorY=1040
                    MaterialExpressionGuid=F1182773433AB98BA460138856E2B8E0
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionStaticBool_7"
                    Value=True
                    MaterialExpressionEditorX=-1040
                    MaterialExpressionEditorY=656
                    MaterialExpressionGuid=F1182773433AB98BA460138856E2B8E0
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionStaticSwitch_2"
                    A=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_24')
                    B=(Expression=MaterialExpressionDivide'ParallaxOcclusionMapping:MaterialExpressionDivide_39')
                    Value=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_23')
                    MaterialExpressionEditorX=768
                    MaterialExpressionEditorY=1200
                    MaterialExpressionGuid=8D69547A441565CEF2CFCB857D152A57
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionStaticSwitch_5"
                    A=(Expression=MaterialExpressionCustom'ParallaxOcclusionMapping:MaterialExpressionCustom_21')
                    B=(Expression=MaterialExpressionCustom'ParallaxOcclusionMapping:MaterialExpressionCustom_20')
                    Value=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_25')
                    MaterialExpressionEditorX=-480
                    MaterialExpressionEditorY=560
                    MaterialExpressionGuid=8D69547A441565CEF2CFCB857D152A57
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionStaticSwitch_6"
                    A=(Expression=MaterialExpressionComponentMask'ParallaxOcclusionMapping:MaterialExpressionComponentMask_52')
                    B=(Expression=MaterialExpressionConstant'ParallaxOcclusionMapping:MaterialExpressionConstant_33')
                    Value=(Expression=MaterialExpressionFunctionInput'ParallaxOcclusionMapping:MaterialExpressionFunctionInput_25')
                    MaterialExpressionEditorX=-224
                    MaterialExpressionEditorY=944
                    MaterialExpressionGuid=8D69547A441565CEF2CFCB857D152A57
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionTextureCoordinate_8"
                    MaterialExpressionEditorX=-1744
                    MaterialExpressionEditorY=320
                    MaterialExpressionGuid=F00EEB244461707BA6284DA51F161068
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionTextureObject_0"
                    Texture=Texture2D'/Engine/EngineVolumetrics/Fogsheet/Materials/T_EV_BlankWhite_01.T_EV_BlankWhite_01'
                    MaterialExpressionEditorX=-1808
                    MaterialExpressionEditorY=112
                    MaterialExpressionGuid=206882AF4AA1EB82B2EEAFB6D4528F2F
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionTransform_18"
                    Input=(Expression=MaterialExpressionMultiply'ParallaxOcclusionMapping:MaterialExpressionMultiply_56')
                    TransformSourceType=TRANSFORMSOURCE_World
                    TransformType=TRANSFORM_Tangent
                    MaterialExpressionEditorX=-2832
                    MaterialExpressionEditorY=1264
                    MaterialExpressionGuid=03BC57864C8B91CEE4A40F90B8E6633C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionTransform_4"
                    Input=(Expression=MaterialExpressionCameraVectorWS'ParallaxOcclusionMapping:MaterialExpressionCameraVectorWS_9')
                    TransformSourceType=TRANSFORMSOURCE_World
                    TransformType=TRANSFORM_Tangent
                    MaterialExpressionEditorX=-3086
                    MaterialExpressionEditorY=866
                    MaterialExpressionGuid=03BC57864C8B91CEE4A40F90B8E6633C
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionVertexNormalWS_4"
                    MaterialExpressionEditorX=-2880
                    MaterialExpressionEditorY=432
                    MaterialExpressionGuid=CA2991DB45FD44CA446AB6A34E160F33
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="MaterialExpressionWorldPosition_4"
                    MaterialExpressionEditorX=-880
                    MaterialExpressionEditorY=1728
                    MaterialExpressionGuid=A274F34648631637C4AEBC853FE2EBC4
                    Function=MaterialFunction'ParallaxOcclusionMapping'
                 End Object
                 Begin Object Name="SceneThumbnailInfoWithPrimitive_3"
                 End Object
                 StateId=E1DD6EA84560E03345E2EE8EE3A181AD
                 Description="Parallax Occlusion Mapping uses Ray Tracing to find the correct offsets at each point. Keep in mind that the material cost will not be easily trackable using the instruction count or shader complexity view due to the nature of the loops involved. Use the debug emissive colors to get an idea of expense based on your specified Min and Max Step sizes."
                 bExposeToLibrary=True
                 LibraryCategories(0)="Texturing"
                 FunctionExpressions(0)=MaterialExpressionFunctionOutput'MaterialExpressionFunctionOutput_5'
                 FunctionExpressions(1)=MaterialExpressionCustom'MaterialExpressionCustom_20'
                 FunctionExpressions(2)=MaterialExpressionTextureCoordinate'MaterialExpressionTextureCoordinate_8'
                 FunctionExpressions(3)=MaterialExpressionDotProduct'MaterialExpressionDotProduct_4'
                 FunctionExpressions(4)=MaterialExpressionCameraVectorWS'MaterialExpressionCameraVectorWS_8'
                 FunctionExpressions(5)=MaterialExpressionVertexNormalWS'MaterialExpressionVertexNormalWS_4'
                 FunctionExpressions(6)=MaterialExpressionLinearInterpolate'MaterialExpressionLinearInterpolate_4'
                 FunctionExpressions(7)=MaterialExpressionDivide'MaterialExpressionDivide_48'
                 FunctionExpressions(8)=MaterialExpressionAbs'MaterialExpressionAbs_4'
                 FunctionExpressions(9)=MaterialExpressionCameraVectorWS'MaterialExpressionCameraVectorWS_9'
                 FunctionExpressions(10)=MaterialExpressionTransform'MaterialExpressionTransform_4'
                 FunctionExpressions(11)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_8'
                 FunctionExpressions(12)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_9'
                 FunctionExpressions(13)=MaterialExpressionDistance'MaterialExpressionDistance_4'
                 FunctionExpressions(14)=MaterialExpressionConstant'MaterialExpressionConstant_8'
                 FunctionExpressions(15)=MaterialExpressionMultiply'MaterialExpressionMultiply_17'
                 FunctionExpressions(16)=MaterialExpressionDivide'MaterialExpressionDivide_9'
                 FunctionExpressions(17)=MaterialExpressionNormalize'MaterialExpressionNormalize_4'
                 FunctionExpressions(18)=MaterialExpressionMultiply'MaterialExpressionMultiply_18'
                 FunctionExpressions(19)=MaterialExpressionMultiply'MaterialExpressionMultiply_19'
                 FunctionExpressions(20)=MaterialExpressionFloor'MaterialExpressionFloor_4'
                 FunctionExpressions(21)=MaterialExpressionDDX'MaterialExpressionDDX_4'
                 FunctionExpressions(22)=MaterialExpressionDDY'MaterialExpressionDDY_4'
                 FunctionExpressions(23)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_2'
                 FunctionExpressions(24)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_5'
                 FunctionExpressions(25)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_12'
                 FunctionExpressions(26)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_9'
                 FunctionExpressions(27)=MaterialExpressionTextureObject'MaterialExpressionTextureObject_0'
                 FunctionExpressions(28)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_10'
                 FunctionExpressions(29)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_56'
                 FunctionExpressions(30)=MaterialExpressionDDX'MaterialExpressionDDX_13'
                 FunctionExpressions(31)=MaterialExpressionDDY'MaterialExpressionDDY_13'
                 FunctionExpressions(32)=MaterialExpressionDDX'MaterialExpressionDDX_14'
                 FunctionExpressions(33)=MaterialExpressionDDY'MaterialExpressionDDY_14'
                 FunctionExpressions(34)=MaterialExpressionWorldPosition'MaterialExpressionWorldPosition_4'
                 FunctionExpressions(35)=MaterialExpressionDivide'MaterialExpressionDivide_18'
                 FunctionExpressions(36)=MaterialExpressionDivide'MaterialExpressionDivide_19'
                 FunctionExpressions(37)=MaterialExpressionMax'MaterialExpressionMax_4'
                 FunctionExpressions(38)=MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_20'
                 FunctionExpressions(39)=MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_21'
                 FunctionExpressions(40)=MaterialExpressionAbs'MaterialExpressionAbs_13'
                 FunctionExpressions(41)=MaterialExpressionAbs'MaterialExpressionAbs_14'
                 FunctionExpressions(42)=MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_22'
                 FunctionExpressions(43)=MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_23'
                 FunctionExpressions(44)=MaterialExpressionDistance'MaterialExpressionDistance_9'
                 FunctionExpressions(45)=MaterialExpressionConstant'MaterialExpressionConstant_14'
                 FunctionExpressions(46)=MaterialExpressionDivide'MaterialExpressionDivide_2'
                 FunctionExpressions(47)=MaterialExpressionFunctionOutput'MaterialExpressionFunctionOutput_1'
                 FunctionExpressions(48)=MaterialExpressionAdd'MaterialExpressionAdd_0'
                 FunctionExpressions(49)=MaterialExpressionFunctionOutput'MaterialExpressionFunctionOutput_6'
                 FunctionExpressions(50)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_19'
                 FunctionExpressions(51)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_23'
                 FunctionExpressions(52)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_24'
                 FunctionExpressions(53)=MaterialExpressionStaticSwitch'MaterialExpressionStaticSwitch_2'
                 FunctionExpressions(54)=MaterialExpressionFeatureLevelSwitch'MaterialExpressionFeatureLevelSwitch_0'
                 FunctionExpressions(55)=MaterialExpressionFeatureLevelSwitch'MaterialExpressionFeatureLevelSwitch_1'
                 FunctionExpressions(56)=MaterialExpressionFeatureLevelSwitch'MaterialExpressionFeatureLevelSwitch_4'
                 FunctionExpressions(57)=MaterialExpressionConstant'MaterialExpressionConstant_36'
                 FunctionExpressions(58)=MaterialExpressionConstant'MaterialExpressionConstant_20'
                 FunctionExpressions(59)=MaterialExpressionMultiply'MaterialExpressionMultiply_21'
                 FunctionExpressions(60)=MaterialExpressionQualitySwitch'MaterialExpressionQualitySwitch_5'
                 FunctionExpressions(61)=MaterialExpressionQualitySwitch'MaterialExpressionQualitySwitch_8'
                 FunctionExpressions(62)=MaterialExpressionConstant'MaterialExpressionConstant_22'
                 FunctionExpressions(63)=MaterialExpressionQualitySwitch'MaterialExpressionQualitySwitch_11'
                 FunctionExpressions(64)=MaterialExpressionConstant'MaterialExpressionConstant_37'
                 FunctionExpressions(65)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_20'
                 FunctionExpressions(66)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_25'
                 FunctionExpressions(67)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_31'
                 FunctionExpressions(68)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_29'
                 FunctionExpressions(69)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_1'
                 FunctionExpressions(70)=MaterialExpressionStaticBool'MaterialExpressionStaticBool_6'
                 FunctionExpressions(71)=MaterialExpressionStaticBool'MaterialExpressionStaticBool_7'
                 FunctionExpressions(72)=MaterialExpressionDotProduct'MaterialExpressionDotProduct_16'
                 FunctionExpressions(73)=MaterialExpressionCameraVectorWS'MaterialExpressionCameraVectorWS_28'
                 FunctionExpressions(74)=MaterialExpressionMaterialFunctionCall'MaterialExpressionMaterialFunctionCall_31'
                 FunctionExpressions(75)=MaterialExpressionAbs'MaterialExpressionAbs_26'
                 FunctionExpressions(76)=MaterialExpressionDivide'MaterialExpressionDivide_39'
                 FunctionExpressions(77)=MaterialExpressionCustom'MaterialExpressionCustom_21'
                 FunctionExpressions(78)=MaterialExpressionTransform'MaterialExpressionTransform_18'
                 FunctionExpressions(79)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_46'
                 FunctionExpressions(80)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_47'
                 FunctionExpressions(81)=MaterialExpressionAppendVector'MaterialExpressionAppendVector_7'
                 FunctionExpressions(82)=MaterialExpressionNormalize'MaterialExpressionNormalize_19'
                 FunctionExpressions(83)=MaterialExpressionDivide'MaterialExpressionDivide_46'
                 FunctionExpressions(84)=MaterialExpressionMultiply'MaterialExpressionMultiply_56'
                 FunctionExpressions(85)=MaterialExpressionDivide'MaterialExpressionDivide_49'
                 FunctionExpressions(86)=MaterialExpressionStaticSwitch'MaterialExpressionStaticSwitch_5'
                 FunctionExpressions(87)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_1'
                 FunctionExpressions(88)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_52'
                 FunctionExpressions(89)=MaterialExpressionStaticSwitch'MaterialExpressionStaticSwitch_6'
                 FunctionExpressions(90)=MaterialExpressionConstant'MaterialExpressionConstant_33'
                 FunctionExpressions(91)=MaterialExpressionFunctionOutput'MaterialExpressionFunctionOutput_9'
                 FunctionExpressions(92)=MaterialExpressionFeatureLevelSwitch'MaterialExpressionFeatureLevelSwitch_5'
                 FunctionExpressions(93)=MaterialExpressionConstant'MaterialExpressionConstant_38'
                 FunctionExpressions(94)=MaterialExpressionQualitySwitch'MaterialExpressionQualitySwitch_12'
                 FunctionExpressions(95)=MaterialExpressionConstant'MaterialExpressionConstant_39'
                 FunctionExpressions(96)=MaterialExpressionFunctionOutput'MaterialExpressionFunctionOutput_12'
                 FunctionExpressions(97)=MaterialExpressionMultiply'MaterialExpressionMultiply_59'
                 FunctionExpressions(98)=MaterialExpressionFloor'MaterialExpressionFloor_12'
                 FunctionExpressions(99)=MaterialExpressionDivide'MaterialExpressionDivide_53'
                 FunctionExpressions(100)=MaterialExpressionCustom'MaterialExpressionCustom_5'
                 FunctionExpressions(101)=MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_6'
                 FunctionExpressions(102)=MaterialExpressionComponentMask'MaterialExpressionComponentMask_2'
                 FunctionExpressions(103)=MaterialExpressionOneMinus'MaterialExpressionOneMinus_0'
                 FunctionExpressions(104)=MaterialExpressionMultiply'MaterialExpressionMultiply_0'
                 FunctionExpressions(105)=MaterialExpressionAppendVector'MaterialExpressionAppendVector_0'
                 FunctionExpressions(106)=MaterialExpressionFunctionOutput'MaterialExpressionFunctionOutput_0'
                 FunctionExpressions(107)=MaterialExpressionFunctionInput'MaterialExpressionFunctionInput_3'
                 FunctionExpressions(108)=MaterialExpressionMultiply'MaterialExpressionMultiply_1'
                 FunctionExpressions(109)=MaterialExpressionMultiply'MaterialExpressionMultiply_2'
                 FunctionExpressions(110)=MaterialExpressionFunctionOutput'MaterialExpressionFunctionOutput_2'
                 FunctionExpressions(111)=MaterialExpressionDivide'MaterialExpressionDivide_3'
                 FunctionEditorComments(0)=MaterialExpressionComment'MaterialExpressionComment_0'
                 FunctionEditorComments(1)=MaterialExpressionComment'MaterialExpressionComment_3'
                 FunctionEditorComments(2)=MaterialExpressionComment'MaterialExpressionComment_4'
                 FunctionEditorComments(3)=MaterialExpressionComment'MaterialExpressionComment_6'
                 FunctionEditorComments(4)=MaterialExpressionComment'MaterialExpressionComment_7'
                 CombinedInputTypes=95
                 CombinedOutputTypes=15
                 ThumbnailInfo=SceneThumbnailInfoWithPrimitive'SceneThumbnailInfoWithPrimitive_3'
              End Object
              Where do I have to paste it?

              Comment


                Yo, anyone got this working on 4.8 and up? I'm running 8.3 and copy pasting the MatFunc code into a materialfunction results in an engine crash, the pure material code refuses to be copy pasted into the material at all.

                Comment


                  Hey Ryan,

                  I modified the MatLayerBlend_Standard to also pass the pixel depth so I could make two material functions...one with rock and one with soil/earth, both using parallax occlusion for a Landscape Material. Without pixel depth...its not really usable since everything appears to be floating.

                  So when I just use that and choose material attribute only input in the material, pixel depth should get past, but its not visible. When I however switch back to standard material pin mode and break after the material layer blend to connect pixel depth, I get a crash that says:

                  "Fatal error: [File:\BuildFarm\buildmachine_++depot+UE4-Releases+4.8\Engine\Source\Runtime\Engine\Private\Materials\MaterialShared.cpp] [Line: 2171]
                  We should never need the IO index of the MaterialAttriubtes property.
                  "
                  So material function blending is not possible right now. When I connect just one of the functions output of pixel depth manually, it works just fine.

                  Is this something you guys are aware of? (btw...I am using 4.8.3)

                  Besides that, great work on the node! Loving it so far

                  Cheers!
                  Check out UNREAL 4 Lighting Academy
                  https://forums.unrealengine.com/show...ng-like-that-)

                  Comment


                    I just recreated that setup and was unable to get that crash. So hopefully that means it is fixed already in code.

                    I am not exactly sure how you are using pixel depth offset to fix the floating blend. That may just make both layers have pixel depth offset that is correct in-and-of-themselves, but I can't see it fixing the floating blend. But I am interested to hear your solution since I have been thinking of making a separate version of the POM node that is intended to work with multiple layers.

                    The method that I thought of to make this work nicely involves passing a 'mask' texture object input into the POM node but it would involve a double-texture lookup at every loop iteration and wouldn't easily work on landscape since you cannot sample the blending mask at offset locations.
                    Ryan Brucks
                    Principal Technical Artist, Epic Games

                    Comment


                      Ryan, could you tell me how your POM compares to the displacement shader CryEngine uses (pixel accurate displacement mapping)? Of course only if you can and want to.

                      It's nice to see some more advanced features coming, since it looks like UE4 is "leaving" out a few in comparison to CE3 (I still think the best choice I made so far was to switch to UE4 ), but I'm not sure if that's really the case, it might be just my impression. (One example out of my head would be volumetric fog, which Crytek recently implemented)
                      Last edited by Netrve; 08-11-2015, 02:16 PM.

                      Comment


                        As far as I know, PADM uses mesh curvature to bend the ray as it passes through the surface. I am not sure how they come up with the curvature map. I am guessing it is done in code under the hood and pre-baked to UVs. If I can ever get to the point where I have this clean curvature data pre-baked in a way like that, it will be fairly easy to do.

                        In fact I have already been prototyping it in a purely dynamic way, but the math is incomplete. I was able to use DDX/DDY to estimate mesh curvature, but it treats curvature in all direction equally. If you were you look 'down the barrel' of this cylinder, it would appear to vanish as if it curved like a sphere. The only reason it doesn't look so bad in the example below is that I also used fresnel as a curvature mask which isn't really correct, more of hack.

                        When I try to actually solve the curvature as a proper Normal Curvature, facets appear which make the effect have seams at the polygon borders. So I will instead need to find a way to pre-compute the curvature maps. Ideally it would be the type of thing where you just right click in the content browser and select "Bake Curvature map to UV 3 and 4" or something, so you do not have to use an external program.

                        Without curvature estimate (assumption is that the heightfield is locally planar)
                        Click image for larger version

Name:	POM_sil1.JPG
Views:	2
Size:	54.2 KB
ID:	1083624

                        With Curvature:
                        Click image for larger version

Name:	POM_sil2.JPG
Views:	2
Size:	50.0 KB
ID:	1083625


                        And to be honest solving the proper normal curvature gets really confusing since it involves these crazy Tensor Matrices. The not-so-basic idea is explained here:

                        http://gfx.cs.princeton.edu/pubs/_20.../curvpaper.pdf

                        Click image for larger version

Name:	Kn.JPG
Views:	1
Size:	77.5 KB
ID:	1083626

                        There is an alternate way of handling it as well. Basically instead of bre-baked curvature data, you bake out a tangent map texture. Then you pass the tangent map as an object reference to the POM, and it has to look up that second texture sample at every loop iteration. While this version is basically trivial for me to implement, the cost is going to be *way* higher than the above approach, and it requires a separate texture for every mesh so it would never be as plug and play. I am not sure which version crytek uses. It may be possible to render these tangent maps using a build process automatically, but that seems like an unlikely solution since it would require touching a lot of code to do a very narrow effect that is doable in more elegant ways.

                        The idea with the first approach is to precompute curvature, then once (outside of the loop), solve the problem "How much does this ray escape the surface with a Z offset at every step". So you only pass a single new scalar into the loop once you know how much the ray curves along the surface curvature.
                        Last edited by RyanB; 08-11-2015, 04:30 PM.
                        Ryan Brucks
                        Principal Technical Artist, Epic Games

                        Comment


                          Thank you so much Ryan for this detailed explanation! Also thanks for putting so much work and effort into our requests.
                          (I'm still trying to comprehend all the information you gave in your post, so I don't really know what to say/add now)

                          Comment


                            Originally posted by RyanB View Post
                            I just recreated that setup and was unable to get that crash. So hopefully that means it is fixed already in code.

                            I am not exactly sure how you are using pixel depth offset to fix the floating blend. That may just make both layers have pixel depth offset that is correct in-and-of-themselves, but I can't see it fixing the floating blend. But I am interested to hear your solution since I have been thinking of making a separate version of the POM node that is intended to work with multiple layers.

                            The method that I thought of to make this work nicely involves passing a 'mask' texture object input into the POM node but it would involve a double-texture lookup at every loop iteration and wouldn't easily work on landscape since you cannot sample the blending mask at offset locations.
                            Hey Ryan,

                            thanks for your reply. I will try to explain better what I did and whats is not working.

                            So first of all I have a material function for rock and one for soil/forestground. Both functions use the pom and output pixel depth offset from your pom node into the according pin in "make material attributes"
                            I then added another lerp node inside of a copy of MaterialLayerBlend_Standard and hooked up pixel depth there as well.

                            So what I want in the end is basically this behavior for both layers in my material (and even more than these two in the end:

                            Click image for larger version

Name:	05.JPG
Views:	1
Size:	110.9 KB
ID:	1083629

                            I made my material like this:

                            Click image for larger version

Name:	03.JPG
Views:	1
Size:	161.2 KB
ID:	1083630

                            But then it only looks like this:

                            Click image for larger version

Name:	04.JPG
Views:	1
Size:	131.9 KB
ID:	1083631

                            so for some reason, even though I pass the lerped pixel depth values from the two functions via the material attributes, it seems they are ignored in the end.

                            When I hook it up like this, it works for that one function that I use of course:

                            Click image for larger version

Name:	01.JPG
Views:	1
Size:	163.1 KB
ID:	1083632

                            And when I try to kinda force it by connection it after breaking it, I get an instant crash with the line I wrote above:

                            Click image for larger version

Name:	02.JPG
Views:	1
Size:	162.9 KB
ID:	1083633

                            So thats basically what I am trying to do. I havent yet even touched the look of the blending of the layers with pixel depth since I never got that far


                            Hope this helps a bit more to reproduce the issue!

                            Thanks and cheers!


                            EDIT: I dont know what your take on this is, but I initially wanted to use tessellation for all this landscape material stuff, but even with a distance fade on the multiplier, results are super slow and not very clean cause of limited landscape base resolution.
                            Last edited by Daedalus51; 08-11-2015, 03:57 PM.
                            Check out UNREAL 4 Lighting Academy
                            https://forums.unrealengine.com/show...ng-like-that-)

                            Comment


                              There was a bug where certain shader states caused a PDO crash. To test if you still have that same crash, try hooking up a constant '0' to PDO. If that crashes, then most likely the fix that fixed that also fixed the problem you are seeing.

                              Your material setup seems sound.

                              Looks like you were talking about a different floating issue. As long as both separate POM materials exist in very similar height ranges, the floating should not be that bad. I still need to think of a solution that actually works nicely on landscape.

                              EDIT: I dont know what your take on this is, but I initially wanted to use tessellation for all this landscape material stuff, but even with a distance fade on the multiplier, results are super slow and not very clean cause of limited landscape base resolution.
                              Yes, tessellation is absurdly slow on landscape even if you set the factor to 0. I talked to our rendering guys and apparently the implementation is very naive with lots of room for improvement. Sadly I am not sure when it will be worked on.
                              Last edited by RyanB; 08-11-2015, 04:25 PM.
                              Ryan Brucks
                              Principal Technical Artist, Epic Games

                              Comment


                                Originally posted by RyanB View Post
                                There was a bug where certain shader states caused a PDO crash. To test if you still have that same crash, try hooking up a constant '0' to PDO. If that crashes, then most likely the fix that fixed that also fixed the problem you are seeing.

                                Your material setup seems sound.

                                Looks like you were talking about a different floating issue. As long as both separate POM materials exist in very similar height ranges, the floating should not be that bad. I still need to think of a solution that actually works nicely on landscape.



                                Yes, tessellation is absurdly slow on landscape even if you set the factor to 0. I talked to our rendering guys and apparently the implementation is very naive with lots of room for improvement. Sadly I am not sure when it will be worked on.

                                Hey Ryan,

                                thanks a lot! I will try that out later. Regarding tessellation, thats still good to hear! I read a couple of papers about frostbite and how they do landscape stuff, and I always wondered, how can they pull off all this, even on consoles (Dragon Age and Battlefront have some sweet stuff going on!^^)
                                So yeah....its very great to hear that indeed there is quite some room for improvements!

                                Thanks again and cheers!
                                Check out UNREAL 4 Lighting Academy
                                https://forums.unrealengine.com/show...ng-like-that-)

                                Comment

                                Working...
                                X