You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.7 KiB
112 lines
3.7 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
//=======================================================================================//
|
||
|
|
||
|
#ifndef REPLAYRENDERER_H
|
||
|
#define REPLAYRENDERER_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
#include "replay/ireplaymovierenderer.h"
|
||
|
#include "replay/rendermovieparams.h"
|
||
|
#include "movieobjects/timeutils.h"
|
||
|
#include "fmtstr.h"
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
class CReplay;
|
||
|
class CReplayPerformance;
|
||
|
class IQuickTimeMovieMaker;
|
||
|
class CReplayRenderOverlay;
|
||
|
class IVideoRecorder;
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
class CReplayRenderer : public IReplayMovieRenderer
|
||
|
{
|
||
|
public:
|
||
|
CReplayRenderer( CReplayRenderOverlay *pOverlay );
|
||
|
~CReplayRenderer();
|
||
|
|
||
|
const CReplayPerformance *GetPerformance() const;
|
||
|
const char *GetMovieFilename() const;
|
||
|
static int GetNumMotionBlurTimeSteps( int nQuality );
|
||
|
|
||
|
//
|
||
|
// IReplayMovieRenderer interface
|
||
|
//
|
||
|
virtual bool SetupRenderer( RenderMovieParams_t ¶ms, IReplayMovie *pMovie );
|
||
|
virtual void ShutdownRenderer();
|
||
|
virtual void RenderVideo();
|
||
|
virtual void RenderAudio( unsigned char *pBuffer, int nSize, int nNumSamples );
|
||
|
|
||
|
virtual void SetAudioSyncFrame( bool isSync = false );
|
||
|
virtual bool IsAudioSyncFrame();
|
||
|
virtual float GetRecordingFrameDuration();
|
||
|
|
||
|
|
||
|
private:
|
||
|
bool IsDepthOfFieldEnabled() const;
|
||
|
bool IsAntialiasingEnabled() const;
|
||
|
bool IsHDR() const;
|
||
|
bool IsMotionBlurEnabled() const;
|
||
|
int GetMotionBlurQuality() const;
|
||
|
int GetDepthOfFieldQuality() const;
|
||
|
int NumMotionBlurTimeSteps() const;
|
||
|
float GetFramerate() const;
|
||
|
void ComputeSampleCounts( int *pNSamplesPerTimeStep, int *pNTotalSamples ) const;
|
||
|
float GetViewModelFOVOffset();
|
||
|
void SetupDOFMatrixSkewView( const Vector &pos, const QAngle &angles, int nSample, CViewSetup& viewSetup );
|
||
|
void BeginRenderingSample( int nSample, int x, int y, int nWidth, int nHeight, float fTonemapScale );
|
||
|
void EndRendering();
|
||
|
void SetupSampleView( int x, int y, int w, int h, int nSample, CViewSetup& viewSetup );
|
||
|
void InitBuffers( const RenderMovieParams_t ¶ms );
|
||
|
void DrawResolvingQuad( int nWidth, int nHeight );
|
||
|
float GetRenderLength( const CReplay *pReplay );
|
||
|
void CompositeAndLayoffFrame( int nFrame );
|
||
|
void RenderLayoffFrame( DmeTime_t time, int nCurSample, int nNumTotalSamples );
|
||
|
void ResolveSamples( int nSample, DmeTime_t frametime, int x, int y, int nWidth, int nHeight, bool bShowUser, float flBloomScale );
|
||
|
void LayoffFrame( int nFrame );
|
||
|
double GetShutterSpeed() const;
|
||
|
void ClearToBlack( CTextureReference &buf, int x, int y, int nWidth, int nHeight );
|
||
|
bool SetupJitterTable();
|
||
|
void GetViewSetup( CViewSetup &viewsetup );
|
||
|
|
||
|
bool m_bIsAudioSyncFrame;
|
||
|
|
||
|
const Vector2D *m_pJitterTable;
|
||
|
int m_nNumJitterSamples;
|
||
|
IVideoRecorder *m_pMovieMaker;
|
||
|
bool m_bCacheFullSceneState;
|
||
|
BGRA8888_t *m_pLayoffBuf;
|
||
|
IReplayMovie *m_pMovie;
|
||
|
RenderMovieParams_t m_RenderParams;
|
||
|
CTextureReference m_AccumBuffSample;
|
||
|
CTextureReference m_LayoffResult;
|
||
|
CTextureReference m_AccumBuffPingPong[2]; // Buffers and materials for ping-pong accumulation buffer
|
||
|
CMaterialReference m_FourSampleResolveMatRef;
|
||
|
bool m_bForceCheapDoF;
|
||
|
bool m_bShutterClosed;
|
||
|
int m_nCurrentPingPong;
|
||
|
int m_nFrame;
|
||
|
|
||
|
ConVar *m_pViewmodelFov;
|
||
|
ConVar *m_pDefaultFov;
|
||
|
|
||
|
int m_nTimeStep;
|
||
|
int m_nCurSample;
|
||
|
DmeTime_t m_curSampleTime;
|
||
|
|
||
|
int m_iTgaFrame;
|
||
|
CFmtStr m_fmtTgaRenderDirName;
|
||
|
|
||
|
CReplayRenderOverlay *m_pRenderOverlay;
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
#endif // REPLAYRENDERER_H
|