Skip to main content
Texture Bombing
preview · 1 / 3

Description

A node group that kills visible tiling on large surfaces. It samples a texture several times with a per-cell random offset and blends the results, so a repeating texture stops reading as a grid. Great for landscapes, floors, terrain, walls and any big surface where the repeat gives the game away.

material graph

Preview only · open in editor for full material editing

Want this graph on your blog or forum?

0 comments

Sign in to join the discussion.

No comments yet. Be the first.

source
View T3D source (18 KB)expand
Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_0"
   Begin Object Class=/Script/Engine.MaterialExpressionComment Name="MaterialExpressionComment_C0"
   End Object
   Begin Object Name="MaterialExpressionComment_C0"
      SizeX=540
      SizeY=480
      Text="Texture Bombing"
      CommentColor=(R=0.104616,G=0.327778,B=0.665387,A=1.000000)
      MaterialExpressionEditorX=-1300
      MaterialExpressionEditorY=-560
      MaterialExpressionGuid=A0F44F6ACCB99648D69D248413C63A91
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.Pasted_material'"
   End Object
   MaterialExpressionComment="/Script/Engine.MaterialExpressionComment'MaterialExpressionComment_C0'"
   CommentColor=(R=0.104616,G=0.327778,B=0.665387,A=1.000000)
   NodePosX=-1300
   NodePosY=-560
   NodeWidth=540
   NodeHeight=480
   NodeComment="Texture Bombing"
   NodeGuid=7FEAB73DE2B8B3BF3C3F2E9BE21F13C1
End Object

Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Comment Name="MaterialGraphNode_Comment_1"
   Begin Object Class=/Script/Engine.MaterialExpressionComment Name="MaterialExpressionComment_C1"
   End Object
   Begin Object Name="MaterialExpressionComment_C1"
      SizeX=520
      SizeY=640
      Text="Result → Base Color (or any input)"
      CommentColor=(R=0.162029,G=0.417885,B=0.063010,A=1.000000)
      MaterialExpressionEditorX=-470
      MaterialExpressionEditorY=-60
      MaterialExpressionGuid=522887A2119D7363A0FAE4603EC04895
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.Pasted_material'"
   End Object
   MaterialExpressionComment="/Script/Engine.MaterialExpressionComment'MaterialExpressionComment_C1'"
   CommentColor=(R=0.162029,G=0.417885,B=0.063010,A=1.000000)
   NodePosX=-470
   NodePosY=-60
   NodeWidth=520
   NodeHeight=640
   NodeComment="Result → Base Color (or any input)"
   NodeGuid=5E7152EA36560018C8DFAFC328197BF6
End Object

Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_2"
   Begin Object Class=/Script/Engine.MaterialExpressionTextureObjectParameter Name="MaterialExpressionTextureObjectParameter_2"
   End Object
   Begin Object Name="MaterialExpressionTextureObjectParameter_2"
      ParameterName="Texture"
      Group="Texture Bombing"
      SortPriority=0
      Texture=Texture2D'/Engine/EngineResources/DefaultTexture.DefaultTexture'
      Desc="Tiling texture to de-tile. Sampled four times per area with random per-cell offsets."
      MaterialExpressionEditorX=-1260
      MaterialExpressionEditorY=-460
      MaterialExpressionGuid=54F1CA6B771D74FA54CEE523B7885C66
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.Pasted_material'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionTextureObjectParameter'MaterialExpressionTextureObjectParameter_2'"
   NodePosX=-1260
   NodePosY=-460
   NodeGuid=FD6EDC1815F7A15EA3D394AC10BA2B48
   CustomProperties Pin (PinId=3F91D13E9C4782CFFBA1E7BCDD71A4E7,PinName="UVs",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
   CustomProperties Pin (PinId=93C7ABB48163E9F2A6E5B268FCFAF425,PinName="ApplyViewMipBias",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
   CustomProperties Pin (PinId=1DB608BD6DC0F562AE86C3CB5D1330D6,PinName="Output",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_7 95E80F2948C96E385C21C109C582BAD9,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
End Object

Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_3"
   Begin Object Class=/Script/Engine.MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_3"
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_3"
      ParameterName="Tiling"
      DefaultValue=8
      SliderMin=1
      SliderMax=64
      Group="Texture Bombing"
      SortPriority=1
      Desc="How many times the texture repeats across the mesh UVs. Higher = more repeats / smaller bombing cells."
      MaterialExpressionEditorX=-1260
      MaterialExpressionEditorY=-280
      MaterialExpressionGuid=41A0860EE546F813978715547FFC6AA9
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.Pasted_material'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_3'"
   NodePosX=-1260
   NodePosY=-280
   NodeGuid=A543DEF0388D79ECC774C126768D826A
   CustomProperties Pin (PinId=A876DF9B1C22AAD08EBEE9D5ADB588D7,PinName="Output",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_6 C5706C79B9937E01DCA7A8A2372C7B1F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
End Object

Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_4"
   Begin Object Class=/Script/Engine.MaterialExpressionScalarParameter Name="MaterialExpressionScalarParameter_4"
   End Object
   Begin Object Name="MaterialExpressionScalarParameter_4"
      ParameterName="Randomness"
      DefaultValue=1
      SliderMin=0
      SliderMax=1
      Group="Texture Bombing"
      SortPriority=2
      Desc="Strength of the per-cell random offset. 0 = plain tiling, 1 = fully randomised. Lower it if blended transitions look ghosted on high-contrast textures."
      MaterialExpressionEditorX=-1260
      MaterialExpressionEditorY=-100
      MaterialExpressionGuid=849D6EB56C3989A2578FED3459CE952F
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.Pasted_material'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionScalarParameter'MaterialExpressionScalarParameter_4'"
   NodePosX=-1260
   NodePosY=-100
   NodeGuid=87D7708B9AE8301BB84F59F7EBE24ABE
   CustomProperties Pin (PinId=4E43DE97EF1FA16C07D253F00F47EA40,PinName="Output",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_7 E4337DB18C0C04EDA674A6D27755E703,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
End Object

Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_5"
   Begin Object Class=/Script/Engine.MaterialExpressionTextureCoordinate Name="MaterialExpressionTextureCoordinate_5"
   End Object
   Begin Object Name="MaterialExpressionTextureCoordinate_5"
      CoordinateIndex=0
      UTiling=1
      VTiling=1
      MaterialExpressionEditorX=-1260
      MaterialExpressionEditorY=160
      MaterialExpressionGuid=BF6CBC9FFCA6056A60F902A9892696FF
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.Pasted_material'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionTextureCoordinate'MaterialExpressionTextureCoordinate_5'"
   NodePosX=-1260
   NodePosY=160
   NodeGuid=DD13300B63B159B4D40565058A6EE203
   CustomProperties Pin (PinId=94990DF8F736F27951A58CC4F8D86FE4,PinName="Output",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_6 8F1B02AF5D3AA87EC1372C4777447BDE,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
End Object

Begin Object Class=/Script/UnrealEd.MaterialGraphNode Name="MaterialGraphNode_6"
   Begin Object Class=/Script/Engine.MaterialExpressionMultiply Name="MaterialExpressionMultiply_6"
   End Object
   Begin Object Name="MaterialExpressionMultiply_6"
      A=(Expression="/Script/Engine.MaterialExpressionTextureCoordinate'MaterialGraphNode_5.MaterialExpressionTextureCoordinate_5'")
      B=(Expression="/Script/Engine.MaterialExpressionScalarParameter'MaterialGraphNode_3.MaterialExpressionScalarParameter_3'")
      MaterialExpressionEditorX=-900
      MaterialExpressionEditorY=200
      MaterialExpressionGuid=AACD87A9EDDC12F5A98E070129BCB6DE
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.Pasted_material'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionMultiply'MaterialExpressionMultiply_6'"
   NodePosX=-900
   NodePosY=200
   NodeGuid=056CC0047875A373E3F3FCBE61602320
   CustomProperties Pin (PinId=8F1B02AF5D3AA87EC1372C4777447BDE,PinName="A",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_5 94990DF8F736F27951A58CC4F8D86FE4,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
   CustomProperties Pin (PinId=C5706C79B9937E01DCA7A8A2372C7B1F,PinName="B",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_3 A876DF9B1C22AAD08EBEE9D5ADB588D7,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
   CustomProperties Pin (PinId=14C4D9EBCB88BE5B5109403ED6FA1733,PinName="Output",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_7 F9DAFBCF7FCDF13BFAA2388FFAE8F8DA,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
End Object

Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Custom Name="MaterialGraphNode_Custom_7"
   Begin Object Class=/Script/Engine.MaterialExpressionCustom Name="MaterialExpressionCustom_7"
   End Object
   Begin Object Name="MaterialExpressionCustom_7"
      Code="// 4-tap stochastic texture bombing: hides tiling by sampling with a\r\n// per-cell random offset and bilinearly blending the four nearest cells.\r\nfloat2 cell = floor(UV);\r\nfloat2 f = frac(UV);\r\nfloat2 w = f * f * (3.0 - 2.0 * f);\r\nfloat3 col = 0;\r\n[unroll] for (int j = 0; j < 2; j++)\r\n[unroll] for (int i = 0; i < 2; i++)\r\n{\r\n    float2 corner = cell + float2(i, j);\r\n    float2 rnd = frac(sin(float2(dot(corner, float2(127.1, 311.7)), dot(corner, float2(269.5, 183.3)))) * 43758.5453);\r\n    float wt = (i ? w.x : 1.0 - w.x) * (j ? w.y : 1.0 - w.y);\r\n    col += Texture2DSample(Tex, TexSampler, UV + rnd * Randomness).rgb * wt;\r\n}\r\nreturn col;\r\n"
      OutputType=CMOT_Float3
      Description="TextureBombing"
      ShowCode=True
      bShowOutputNameOnPin=True
      Inputs(0)=(InputName="UV",Input=(Expression="/Script/Engine.MaterialExpressionMultiply'MaterialGraphNode_6.MaterialExpressionMultiply_6'"))
      Inputs(1)=(InputName="Tex",Input=(Expression="/Script/Engine.MaterialExpressionTextureObjectParameter'MaterialGraphNode_2.MaterialExpressionTextureObjectParameter_2'"))
      Inputs(2)=(InputName="Randomness",Input=(Expression="/Script/Engine.MaterialExpressionScalarParameter'MaterialGraphNode_4.MaterialExpressionScalarParameter_4'"))
      Desc="Stochastic 4-tap texture bombing — per-cell random offset + bilinear blend to break visible tiling. Outputs RGB."
      MaterialExpressionEditorX=-420
      MaterialExpressionEditorY=40
      MaterialExpressionGuid=8AD5E3889A2E8B20B0CE9EE8E283CBF2
      Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.Pasted_material'"
   End Object
   MaterialExpression="/Script/Engine.MaterialExpressionCustom'MaterialExpressionCustom_7'"
   NodePosX=-420
   NodePosY=40
   NodeGuid=79994A72615289CFC07AA3E965E6CF72
   CustomProperties Pin (PinId=F9DAFBCF7FCDF13BFAA2388FFAE8F8DA,PinName="UV",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_6 14C4D9EBCB88BE5B5109403ED6FA1733,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
   CustomProperties Pin (PinId=95E80F2948C96E385C21C109C582BAD9,PinName="Tex",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_2 1DB608BD6DC0F562AE86C3CB5D1330D6,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
   CustomProperties Pin (PinId=E4337DB18C0C04EDA674A6D27755E703,PinName="Randomness",PinType.PinCategory="optional",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_4 4E43DE97EF1FA16C07D253F00F47EA40,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
   CustomProperties Pin (PinId=A22EC200462C8B36539AA47F9FD9F275,PinName="Output",Direction="EGPD_Output",PinType.PinCategory="",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Root_8 A60536E96E1FE4D6F5C73E0C83FC1388,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
End Object

Begin Object Class=/Script/UnrealEd.MaterialGraphNode_Root Name="MaterialGraphNode_Root_8"
   Material="/Script/UnrealEd.PreviewMaterial'/Engine/Transient.Pasted_material'"
   NodePosX=250
   NodePosY=-132
   NodeGuid=2E09E23A5566A0D8103BAA6E66449F07
   CustomProperties Pin (PinId=A60536E96E1FE4D6F5C73E0C83FC1388,PinName="Base Color",PinType.PinCategory="materialinput",PinType.PinSubCategory="rgba",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(MaterialGraphNode_Custom_7 A22EC200462C8B36539AA47F9FD9F275,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False)
End Object

Nodes: Comment (x2), ScalarParameter (x2), Custom, Material, Multiply, TextureCoordinate, TextureObjectParameter

more from @hazesee all

Water Puddle

@hazeUE 5.7

Caustics (Light Function)

@hazeUE 5.5+

Holographic Signs

@hazeUE 5.6+

More like this

UV Transform - Node Group

@staticUE 5.6+

World-Aligned Triplanar

@hazeUE 5.6+

Object-Aligned Triplanar

@hazeUE 5.6+

Texture Bombing

@hazefounder
UE 5.6

21
license

CC0 1.0: Public Domain

Public domain: use it however you like, no credit required.

dependencies

Zero dependencies

Pastes and works in any UE 5.3+ project. No textures, no material functions, no MPCs.

ue compatibility
UE 5.3UE 5.4UE 5.5UE 5.6UE 5.7

Details

Last update
11 days ago
Published
11 days ago
Nodes
9