Garry's Mod Wiki

Revision Difference

render.MaterialOverride#565701

<function name="MaterialOverride" parent="render" type="libraryfunc"> <description>Sets the render material override for all next calls of <page>Entity:DrawModel</page>. Also overrides <page>render.MaterialOverrideByIndex</page>. See <page>render.WorldMaterialOverride</page>, <page>render.BrushMaterialOverride</page> and <page>render.ModelMaterialOverride</page> for similar functions. <warning>In certain scenarios such as during entity's shadow pass, using this function can cause unexpected side effects. See example below on how to deal with this.</warning> </description> <realm>Client</realm> <args> <arg name="material" type="IMaterial|nil" default="nil">The material to use as override, use `nil` to disable.</arg> </args> </function> <example> <description> Deal with shadow passes during entity rendering. This usually only applies to opaque renders (so not to `ENT:DrawTranslucent`). </description> <code> local matForOverride = Material( "phoenix_storms/stripes" ) function ENT:Draw( flags ) -- If the model is currently rendering in the shadow pass, do not overwrite any materials and just render the model(s) normally. -- In this case we just render the model without any material overrides and returning early. if ( ( bit.band( flags, STUDIO_SSAODEPTHTEXTURE ) != 0 || bit.band( flags, STUDIO_SHADOWDEPTHTEXTURE ) != 0 ) ) then self:DrawModel( flags ) return end if ( ( bit.band( flags, STUDIO_SSAODEPTHTEXTURE ) != 0 || bit.band( flags, STUDIO_SHADOWDEPTHTEXTURE ) != 0 ) ) then self:DrawModel( flags ) return end -- The rest of your code. For example: render.MaterialOverride( matForOverride ) self:DrawModel( flags ) self:DrawModel( flags ) render.MaterialOverride() end </code> </example>