Garry's Mod Wiki

Revision Difference

render.DepthRange#512949

<function name="DepthRange" parent="render" type="libraryfunc">⤶ <description>Set's the depth range of the upcoming render.</description>⤶ <realm>Client</realm>⤶ <args>⤶ <arg name="depthmin" type="number">The minimum depth of the upcoming render. 0.0 = render normally; 1.0 = render nothing</arg>⤶ <arg name="depthmax" type="number">The maximum depth of the upcoming render. 0.0 = render everything (through walls); 1.0 = render normally</arg>⤶ </args>⤶ </function>⤶ ⤶ <example>⤶ <description>Perform a downward screen wipe effect on all opaque objects once the client connects.</description>⤶ <code>⤶ local depthmin = 1.0⤶ ⤶ function GM:PreDrawOpaqueRenderables(bDrawingDepth, bDrawingSkybox)⤶ ⤶ render.DepthRange(depthmin, 1.0)⤶ ⤶ if(depthmin &amp;gt; 0.0) then⤶ depthmin = depthmin - 0.001⤶ end⤶ ⤶ end⤶ </code>⤶ ⤶ </example>⤶ ⤶ ⤶ <example>⤶ <description>Same effect as above but with a dark shadow skin present where the model is being drawn.</description>⤶ <code>⤶ local depthmin = 1.0⤶ local spawn_copies = {} -- The shadow copies⤶ ⤶ function GM:PreDrawOpaqueRenderables(bDrawingDepth, bDrawingSkybox)⤶ ⤶ render.DepthRange(depthmin, 1.0)⤶ ⤶ if(!spawn_copies) then return false end⤶ ⤶ if(depthmin &amp;gt; 0.0) then⤶ depthmin = depthmin - 0.001⤶ else⤶ ⤶ local alpha = 0⤶ local valid_copies = 0⤶ ⤶ -- Fade out the shadow copies and remove them⤶ for _, spawncopy in pairs(spawn_copies) do⤶ if(IsValid(spawncopy)) then⤶ alpha = spawncopy:GetColor().a⤶ if(alpha &amp;gt; 0) then⤶ spawncopy:SetColor(Color(255, 255, 255, alpha-1))⤶ else⤶ spawncopy:Remove()⤶ end⤶ valid_copies = valid_copies + 1⤶ end⤶ end⤶ ⤶ -- Nullify table since we aren't using it any more⤶ if(valid_copies == 0) then⤶ spawn_copies = nil⤶ end⤶ ⤶ end⤶ ⤶ end⤶ ⤶ function GM:OnEntityCreated(ent)⤶ ⤶ if(!spawn_copies) then return end⤶ ⤶ -- Prevents infinite loop and other errors⤶ if(ent:GetClass() != "class C_BaseFlex" &amp;&amp;⤶ ent:GetRenderGroup() == RENDERGROUP_OPAQUE &amp;&amp;⤶ ent:GetClass() != "gmod_hands") then⤶ ⤶ local mdl = ent:GetModel()⤶ ⤶ -- Check that the entity is a model and not a brush⤶ if(mdl &amp;&amp; string.find(mdl, ".mdl")) then⤶ ⤶ local spawncopy = ClientsideModel(mdl)⤶ ⤶ -- A material with $ignorez set to 1 works best here⤶ spawncopy:SetMaterial("models/overlay_rendertarget")⤶ spawncopy:AddEffects(EF_BONEMERGE)⤶ spawncopy:SetParent(ent)⤶ spawncopy:SetRenderMode(RENDERMODE_TRANSALPHA)⤶ spawncopy:SetColor(Color(255, 255, 255, 92))⤶ table.insert(spawn_copies, spawncopy)⤶ ⤶ end⤶ ⤶ end⤶ ⤶ end⤶ </code>⤶ <output></output>⤶ ⤶ </example>