Garry's Mod Wiki

Revision Difference

Global.Material#514887

<function name="Material" parent="Global" type="libraryfunc">⤶ <description>⤶ Either returns the material with the given name, or loads the material interpreting the first argument as the path.⤶ ⤶ <note>When using .png or .jpg textures, try to make their sizes Power Of 2 (1, 2, 4, 8, 16, 32, 64, etc). While images are no longer scaled to Power of 2 sizes since February 2019, it is a good practice for things like icons, etc.</note>⤶ </description>⤶ <realm>Shared and Menu</realm>⤶ <file line="17-L30">lua/includes/util.lua</file>⤶ <args>⤶ <arg name="materialName" type="string">The material name or path. The path is relative to the **materials/** folder. You do not need to add **materials/** to your path.&#xA;&#xA;To retrieve a Lua material created with &lt;page&gt;Global.CreateMaterial&lt;/page&gt;, just prepend a &quot;!&quot; to the material name.&#xA;&#xA;&lt;note&gt;Since paths are relative to the materials folder, resource paths like ../data/MyImage.jpg will work since &quot;..&quot; translates to moving up a parent directory in the file tree.&lt;/note&gt;</arg>⤶ <arg name="pngParameters" type="string" default="nil">A string containing space separated keywords which will be used to add material parameters.&#xA;&#xA;See &lt;page&gt;Material Parameters&lt;/page&gt; for more information.&#xA;&#xA;&lt;note&gt;This feature only works when importing .png or .jpeg image files&lt;/note&gt;</arg>⤶ </args>⤶ <rets>⤶ <ret name="" type="IMaterial">Generated material</ret>⤶ <ret name="" type="number">How long it took for the function to run</ret>⤶ </rets>⤶ </function>⤶ ⤶ <example>⤶ <description>⤶ Creates a PNG material with noclamp and smooth parameters set and then draws on screen.⤶ ⤶ In this example the .png file is located in **materials/vgui/wave.png**⤶ </description>⤶ <code>⤶ 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 )⤶ </code>⤶ ⤶ </example>⤶ ⤶ ⤶ <example>⤶ <description>Acquires and uses one of the <page>Post-Processing Materials</page> to make the screen darker and more saturated</description>⤶ <code>⤶ local mat_color = Material( "pp/colour" ) -- used outside of the hook for performance⤶ ⤶ hook.Add("RenderScreenspaceEffects", "ColorExample", function()⤶ render.UpdateScreenEffectTexture()⤶ ⤶ mat_color:SetTexture( "$fbtexture", render.GetScreenEffectTexture() )⤶ ⤶ mat_color:SetFloat( "$pp_colour_addr", 0 )⤶ mat_color:SetFloat( "$pp_colour_addg", 0 )⤶ mat_color:SetFloat( "$pp_colour_addb", 0 )⤶ mat_color:SetFloat( "$pp_colour_mulr", 0 )⤶ mat_color:SetFloat( "$pp_colour_mulg", 0 )⤶ mat_color:SetFloat( "$pp_colour_mulb", 0 )⤶ mat_color:SetFloat( "$pp_colour_brightness", 0 )⤶ mat_color:SetFloat( "$pp_colour_contrast", 0.5 )⤶ mat_color:SetFloat( "$pp_colour_colour", 5 )⤶ ⤶ render.SetMaterial( mat_color )⤶ render.DrawScreenQuad()⤶ end )⤶ </code>⤶ ⤶ </example>