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.
111 lines
3.7 KiB
111 lines
3.7 KiB
//========= 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
|
|
|