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