mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
132 lines
3.3 KiB
Lua
132 lines
3.3 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
|
|
if ( !engine.IsPlayingDemo() ) then return end
|
|
|
|
local VideoSettings = engine.VideoSettings()
|
|
if ( !VideoSettings ) then return end
|
|
|
|
PrintTable( VideoSettings )
|
|
|
|
local SmoothedAng = nil
|
|
local SmoothedFOV = nil
|
|
local SmoothedPos = nil
|
|
local AutoFocusPoint = nil
|
|
|
|
hook.Add( "Initialize", "DemoRenderInit", function()
|
|
|
|
if ( VideoSettings.frameblend < 2 ) then
|
|
RunConsoleCommand( "pp_fb", "0" )
|
|
else
|
|
RunConsoleCommand( "pp_fb", "1" )
|
|
RunConsoleCommand( "pp_fb_frames", VideoSettings.frameblend )
|
|
RunConsoleCommand( "pp_fb_shutter", VideoSettings.fbshutter )
|
|
end
|
|
|
|
end )
|
|
|
|
hook.Add( "RenderScene", "RenderForDemo", function( ViewOrigin, ViewAngles, ViewFOV )
|
|
|
|
if ( !engine.IsPlayingDemo() ) then return false end
|
|
|
|
render.Clear( 0, 0, 0, 255, true, true )
|
|
|
|
local FramesPerFrame = 1
|
|
|
|
if ( frame_blend.IsActive() ) then
|
|
|
|
FramesPerFrame = frame_blend.RenderableFrames()
|
|
frame_blend.AddFrame()
|
|
|
|
if ( frame_blend.ShouldSkipFrame() ) then
|
|
|
|
frame_blend.DrawPreview()
|
|
return true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
if ( !SmoothedAng ) then SmoothedAng = ViewAngles * 1 end
|
|
if ( !SmoothedFOV ) then SmoothedFOV = ViewFOV end
|
|
if ( !SmoothedPos ) then SmoothedPos = ViewOrigin * 1 end
|
|
if ( !AutoFocusPoint ) then AutoFocusPoint = SmoothedPos * 1 end
|
|
|
|
if ( VideoSettings.viewsmooth > 0 ) then
|
|
SmoothedAng = LerpAngle( ( 1 - VideoSettings.viewsmooth ) / FramesPerFrame, SmoothedAng, ViewAngles )
|
|
SmoothedFOV = Lerp( ( 1 - VideoSettings.viewsmooth ) / FramesPerFrame, SmoothedFOV, ViewFOV )
|
|
else
|
|
SmoothedAng = ViewAngles * 1
|
|
SmoothedFOV = ViewFOV
|
|
end
|
|
|
|
if ( VideoSettings.possmooth > 0 ) then
|
|
SmoothedPos = LerpVector( ( 1 - VideoSettings.possmooth ) / FramesPerFrame, SmoothedPos, ViewOrigin )
|
|
else
|
|
SmoothedPos = ViewOrigin * 1
|
|
end
|
|
|
|
local view = {
|
|
x = 0,
|
|
y = 0,
|
|
w = math.Round( VideoSettings.width ),
|
|
h = math.Round( VideoSettings.height ),
|
|
angles = SmoothedAng,
|
|
origin = SmoothedPos,
|
|
fov = SmoothedFOV,
|
|
drawhud = false,
|
|
drawviewmodel = true,
|
|
dopostprocess = true,
|
|
drawmonitors = true
|
|
}
|
|
|
|
if ( VideoSettings.dofsteps && VideoSettings.dofpasses ) then
|
|
|
|
local trace = util.TraceHull( {
|
|
start = view.origin,
|
|
endpos = view.origin + ( view.angles:Forward() * 8000 ),
|
|
mins = Vector( -2, -2, -2 ),
|
|
maxs = Vector( 2, 2, 2 ),
|
|
filter = { GetViewEntity() }
|
|
} )
|
|
|
|
local focuspeed = math.Clamp( ( VideoSettings.doffocusspeed / FramesPerFrame ) * 0.2, 0, 1 )
|
|
AutoFocusPoint = LerpVector( focuspeed, AutoFocusPoint, trace.HitPos )
|
|
local UsableFocusPoint = view.origin + view.angles:Forward() * AutoFocusPoint:Distance( view.origin )
|
|
|
|
RenderDoF( view.origin, view.angles, UsableFocusPoint, VideoSettings.dofsize * 0.3, VideoSettings.dofsteps, VideoSettings.dofpasses, false, table.Copy( view ) )
|
|
|
|
else
|
|
|
|
render.RenderView( view )
|
|
|
|
end
|
|
|
|
-- TODO: IF RENDER HUD
|
|
render.RenderHUD( 0, 0, view.w, view.h )
|
|
|
|
local ShouldRecordThisFrme = frame_blend.IsLastFrame()
|
|
|
|
if ( frame_blend.IsActive() ) then
|
|
|
|
frame_blend.BlendFrame()
|
|
frame_blend.DrawPreview()
|
|
|
|
end
|
|
|
|
if ( ShouldRecordThisFrme ) then
|
|
menu.RecordFrame()
|
|
end
|
|
|
|
return true
|
|
|
|
end )
|