render.OverrideBlendFunc

From Garry's Mod
Jump to: navigation, search
 render.OverrideBlendFunc( )

Contents

Description

This feature is deprecated.

You should avoid using it as it may be removed in a future version.

Use render.OverrideBlend instead.

Overrides the internal graphical functions used to determine the final color and alpha of a rendered texture.

See also render.OverrideAlphaWriteEnable.

NOTE

Doing surface library draw calls with alpha set to 0 is a no-op and will never have any effect.

Arguments

boolean enabled

true to enable, false to disable. No other arguments are required when disabling.

Arguments

number srcBlend

The source color blend function BLEND_ Enums. Determines how a rendered texture's final color should be calculated.

Arguments

number destBlend

Arguments

number srcBlendAlpha=nil

The source alpha blend function BLEND_ Enums. Determines how a rendered texture's final alpha should be calculated.

Arguments

number destBlendAlpha=nil

Examples

Example

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 EFFECT:Render.

-- 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")

function GM:PreDrawTranslucentRenderables(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.OverrideBlendFunc( true, BLEND_SRC_COLOR, BLEND_SRC_ALPHA, BLEND_ONE, BLEND_ZERO)

	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.OverrideBlendFunc( false )

end

Output:

overrideblendfunc_example.png
Personal tools
Navigation