Revision Difference
render.OverrideBlend#524470
<function name="OverrideBlend" parent="render" type="libraryfunc">
<description>
Overrides the internal graphical functions used to determine the final color and alpha of a rendered texture.
See also <page>render.OverrideAlphaWriteEnable</page>.
<note>Doing <page>surface</page> draw calls with alpha set to 0 is a no-op and won't have an effect.</note>
</description>
<realm>Client</realm>
<args>
<arg name="enabled" type="boolean">true to enable, false to disable. No other arguments are required when disabling.</arg>
<arg name="srcBlend" type="number">The source color blend function <page>Enums/BLEND</page>. Determines how a rendered texture's final color should be calculated.</arg>
<arg name="destBlend" type="number">The destination color blend function <page>Enums/BLEND</page>.</arg>
<arg name="blendFunc" type="number">The blend mode used for drawing the color layer <page>Enums/BLENDFUNC</page>.</arg>
<arg name="srcBlendAlpha" type="number" default="none">The source alpha blend function <page>Enums/BLEND</page>. Determines how a rendered texture's final alpha should be calculated.</arg>
<arg name="destBlendAlpha" type="number" default="none">The destination alpha blend function <page>Enums/BLEND</page>.</arg>
<arg name="blendFuncAlpha" type="number" default="none">The blend mode used for drawing the alpha layer <page>Enums/BLENDFUNC</page>.</arg>
</args>
</function>
⤶
⤶
<example>⤶
<description>⤶
In this example we draw a lightning bolt over our player's head.⤶
⤶
We shouldn't really draw the lightning in the PreDrawTranslucentRenderables hook as this causes issues rendering transparent objects behind the lightning, but it's a quick example of how the function works. Normally it should be drawn in a custom lua effect's <page>EFFECT:Render</page>.⤶
</description>⤶
<code>⤶
-- Our sprite texture to render. Rendering this texture without⤶
-- render.OverrideBlendFunc will result in black borders around the lightning beam.⤶
local lightningMaterial = Material("sprites/lgtning")⤶
⤶
hook.Add( "PreDrawTranslucentRenderables", "LightningExample", function(isDrawingDepth, isDrawingSkybox)⤶
⤶
if isDrawingDepth or isDrawSkybox then return end⤶
⤶
local ply = Entity(1)⤶
⤶
if !IsValid(ply) then return end⤶
⤶
-- Calculate a random UV to use for the lightning to give it some movement⤶
local uv = math.Rand(0, 1)⤶
⤶
-- Enable blend override to interpret the color and alpha from the texture.⤶
render.OverrideBlend( true, BLEND_SRC_COLOR, BLEND_SRC_ALPHA, BLENDFUNC_ADD, BLEND_ONE, BLEND_ZERO, BLENDFUNC_ADD )⤶
⤶
render.SetMaterial(lightningMaterial)⤶
⤶
-- Render a lightning beam along points randomly offset from a line above the player.⤶
render.StartBeam(5)⤶
render.AddBeam(ply:GetPos() + Vector(0,0,035), 20, uv, Color(255,255,255,255))⤶
render.AddBeam(ply:GetPos() + Vector(0,0,135) + Vector(math.Rand(-20,20),math.Rand(-20,20),0), 20, uv*2, Color(255,255,255,255))⤶
render.AddBeam(ply:GetPos() + Vector(0,0,235) + Vector(math.Rand(-20,20),math.Rand(-20,20),0), 20, uv*3, Color(255,255,255,255))⤶
render.AddBeam(ply:GetPos() + Vector(0,0,335) + Vector(math.Rand(-20,20),math.Rand(-20,20),0), 20, uv*4, Color(255,255,255,255))⤶
render.AddBeam(ply:GetPos() + Vector(0,0,435) + Vector(math.Rand(-20,20),math.Rand(-20,20),0), 20, uv*5, Color(255,255,255,255))⤶
render.EndBeam()⤶
⤶
-- Disable blend override⤶
render.OverrideBlend( false )⤶
⤶
end )⤶
</code>⤶
<output><image src="overrideblendfunc_example.png" alt="_overrideblendfunc_example.png"/></output>⤶
⤶
</example>