Garry's Mod Wiki


  surface.SetMaterial( IMaterial material )


Sets the material to be used in all upcoming draw operations using the surface library.

Not to be confused with render.SetMaterial.

If you need to unset the texture, use the draw.NoTexture convenience function.

Material function calls are expensive to be done inside this function or inside rendering context, you should be caching the results of Material calls
When using render.PushRenderTarget or render.SetRenderTarget, material should have the $ignorez flag set to make it visible. If the material is not used in 3D rendering, it is probably safe to add it with this code:
material:SetInt( "$flags", bit.bor( material:GetInt( "$flags" ), 32768 ) )


1 IMaterial material
The material to be used.


Example usage of this function in conjunction with Material. Note how the Material function will only be called once and its output is cached for performance.

In this example the .png file is located in materials/vgui/wave.png.

local wave = Material( "vgui/wave.png", "noclamp smooth" ) hook.Add( "HUDPaint", "HUDPaint_DrawATexturedBox", function() surface.SetMaterial( wave ) surface.SetDrawColor( 255, 255, 255, 255 ) surface.DrawTexturedRect( 50, 50, 128, 128 ) end )