17#ifdef TOSHI_SKU_WINDOWS
43 : m_RenderGUIEmitter( this ), m_AnimationUpdateStartEmitter( this ), m_AnimationUpdateEndEmitter( this ), m_pViewport(
TNULL ), m_pCameraObject(
TNULL ), m_pHALViewport1(
TNULL ), m_pHALViewport2(
TNULL ), m_bRenderGUI(
TTRUE ), m_fNear( 1.0f ), m_fFar( 280.0f )
49#if defined( TOSHI_SKU_WINDOWS ) && defined( TRENDERINTERFACE_DX8 )
50 TString8 strRenderInterfaceName =
"TRenderD3DInterface";
59 pRenderer->
Create(
"Barnyard" );
61 HMODULE hModuleHandle = GetModuleHandleA(
TNULL );
62 HICON hIcon = LoadIconA( hModuleHandle, MAKEINTRESOURCE( IDI_ICON1 ) );
65 m_DisplayModes.Initialise();
71 TINT iColourDepth = 32;
74 if ( AOptions::GetSingleton() )
76 iWidth = AOptions::GetSingleton()->GetWidth();
77 iHeight = AOptions::GetSingleton()->GetHeight();
78 bWindowed = AOptions::GetSingleton()->IsWindowed();
79 pRenderer->
SetGamma( AOptions::GetSingleton()->GetGamma() );
82 if ( !m_DisplayModes.IsModeExists( iWidth, iHeight, iColourDepth ) )
106 if ( pDevice ==
TNULL )
121 TTODO(
"Log info about choosen device" );
137 pRenderer->CreateResource(
150 pResource->Create( &vertexFormat, 54050, 0 );
156 pRenderer->CreateResource(
169 pResource->Create( &vertexFormat, 54050, 0 );
175 pRenderer->CreateResource(
188 pResource->Create( &vertexFormat, 54050, 0 );
194 pRenderer->CreateResource(
205 pResource->Create( &indexFormat, 64700, 0 );
209 auto pResource = pRenderer->CreateResource(
227 if ( a_bReverseOrder )
230 pDevice = pRenderer->FindDevice( a_rDisplayParams );
235 pDevice = pRenderer->FindDevice( a_rDisplayParams );
240 pDevice = pRenderer->FindDevice( a_rDisplayParams );
245 pDevice = pRenderer->FindDevice( a_rDisplayParams );
250 pDevice = pRenderer->FindDevice( a_rDisplayParams );
258 pDevice = pRenderer->FindDevice( a_rDisplayParams );
264 pDevice = pRenderer->FindDevice( a_rDisplayParams );
266 if ( !pRenderer->FindDevice( a_rDisplayParams ) )
269 pDevice = pRenderer->FindDevice( a_rDisplayParams );
271 if ( !pRenderer->FindDevice( a_rDisplayParams ) )
274 pDevice = pRenderer->FindDevice( a_rDisplayParams );
276 if ( !pRenderer->FindDevice( a_rDisplayParams ) )
279 pDevice = pRenderer->FindDevice( a_rDisplayParams );
289void ARenderer::RenderGUI()
292 auto pViewport = AGUISystem::GetSingleton()->GetRenderObject( 0 )->GetViewport();
294 auto pOldContext = pRender->SetCurrentRenderContext( pViewport->GetRenderContext() );
296 TTODO(
"Save and restore value of 'm_AmbientColor?' when it's figured out" );
302 m_RenderGUIEmitter.Throw( 0 );
310 pRender->FlushShaders();
311 pRender->SetCurrentRenderContext( pOldContext );
323 if ( bCreatedTRender )
329 CreateMainViewport();
331 AModelLoader::CreateSingleton();
332 AMaterialLibraryManager::CreateSingleton();
333 AKeyFrameLibraryManager::CreateSingleton();
334 AModelLoader::GetSingleton()->InitialiseStatic();
338 return bCreatedTRender;
343 m_pCameraObject->SetProjectionCentreX( a_pCamera->m_fProjectionCentreX );
344 m_pCameraObject->SetProjectionCentreY( a_pCamera->m_fProjectionCentreY );
345 m_pCameraObject->SetFOV( a_pCamera->m_fFOV );
346 m_pCameraObject->GetTransformObject().SetMatrix( a_rTransformMatrix );
347 m_pCameraObject->SetFar( m_fFar );
348 m_pCameraObject->SetNear( m_fNear );
351void ARenderer::RenderMainScene(
TFLOAT a_fDeltaTime )
353 if ( ARootTask::GetSingleton()->ShouldRenderMainScene() )
355 auto pViewport = m_pViewport;
356 auto pViewportContext = pViewport->GetRenderContext();
357 auto pCameraObject = m_pCameraObject;
359 pViewport->AllowDepthClear(
TTRUE );
362 auto pOldContext = pRender->SetCurrentRenderContext( pViewportContext );
364 auto& rTransformStack = pRender->GetTransforms();
365 rTransformStack.Reset();
366 rTransformStack.PushNull().Identity();
369 pCameraObject->Render();
371 if ( !ARootTask::GetSingleton()->IsPaused() )
374 m_AnimationUpdateStartEmitter.Throw( &bFlag1 );
376 AModelRepos::GetSingleton()->Update( a_fDeltaTime );
377 TTODO(
"AAnimatableObjectManager::UpdateAttachedObjects" );
380 m_AnimationUpdateEndEmitter.Throw( &bFlag2 );
383 rTransformStack.Push( pViewportContext->GetWorldViewMatrix() );
384 pViewportContext->SetCameraObject( pCameraObject );
386 pRender->FlushShaders();
387 pViewportContext->EnableFog(
TTRUE );
389 AModelRepos::GetSingleton()->RenderModels( 2 );
392 if ( ATerrainInterface::GetSingleton() )
394 ATerrainInterface::GetSingleton()->Render();
398 pRender->FlushShaders();
399 rTransformStack.Pop();
405 pViewport->AllowBackgroundClear(
TTRUE );
406 pViewport->AllowDepthClear(
TTRUE );
408 pRender->SetCurrentRenderContext( pOldContext );
421 TBOOL bMoviePlaying = AMoviePlayer::IsSingletonCreated() && AMoviePlayer::GetSingleton()->IsMoviePlaying();
423 pRender->
Update( a_fDeltaTime );
429 AGlowViewport::GetSingleton()->Update();
431 ARootTask* pRootTask = ARootTask::GetSingleton();
440 AMoviePlayer::GetSingleton()->Render( a_fDeltaTime );
444 const ACamera* pCamera = ACameraManager::GetSingleton()->GetCurrentCamera();
449 m_pViewport->AllowDepthClear(
TFALSE );
451 pRenderContext->EnableFog(
TTRUE );
452 RenderMainScene( a_fDeltaTime );
466 AMoviePlayer::GetSingleton()->Render( a_fDeltaTime );
481void ARenderer::CreateMainViewport()
486 m_pViewport->SetX( 0 );
487 m_pViewport->SetY( 0 );
488 m_pViewport->SetWidth(
TFLOAT( pDisplayParams->uiWidth ) );
489 m_pViewport->SetHeight(
TFLOAT( pDisplayParams->uiHeight ) );
490 m_pViewport->SetMinZ( 0.2f );
491 m_pViewport->SetMaxZ( 1.0f );
492 m_pViewport->AllowBackgroundClear(
TTRUE );
493 m_pViewport->AllowDepthClear(
TTRUE );
494 m_pViewport->SetBackgroundColor( 128, 128, 128, 0 );
495 m_pViewport->Enable(
TTRUE );
496 m_pViewport->EnableDefaultBeginRender(
TTRUE );
500 m_pHALViewport1->SetX( 0 );
501 m_pHALViewport1->SetY( 0 );
502 m_pHALViewport1->SetWidth(
TFLOAT( pDisplayParams->uiWidth ) );
503 m_pHALViewport1->SetHeight(
TFLOAT( pDisplayParams->uiHeight ) );
504 m_pHALViewport1->SetMinZ( 0.2f );
505 m_pHALViewport1->SetMaxZ( 1.0f );
506 m_pHALViewport1->AllowDepthClear(
TFALSE );
507 m_pHALViewport1->AllowBackgroundClear(
TTRUE );
508 m_pHALViewport1->SetBackgroundColor( 0, 0, 0, 0 );
509 m_pHALViewport1->Enable(
TTRUE );
510 m_pHALViewport1->EnableDefaultBeginRender(
TTRUE );
514 m_pHALViewport2->SetX( 0 );
515 m_pHALViewport2->SetY( 0 );
516 m_pHALViewport2->SetWidth(
TFLOAT( pDisplayParams->uiWidth ) );
517 m_pHALViewport2->SetHeight(
TFLOAT( pDisplayParams->uiHeight ) );
518 m_pHALViewport2->SetMinZ( 0.2f );
519 m_pHALViewport2->SetMaxZ( 1.0f );
520 m_pHALViewport2->AllowBackgroundClear(
TFALSE );
521 m_pHALViewport2->AllowDepthClear(
TFALSE );
522 m_pHALViewport2->Enable(
TTRUE );
523 m_pHALViewport2->EnableDefaultBeginRender(
TTRUE );
@ SYSRESOURCE_VFSYSVNDUV1
@ SYSRESOURCE_TEXTUREFACTORY
#define TSTATICCAST(POINTERTYPE, VALUE)
#define TOSHI_NAMESPACE_USING
#define TDEFINE_CLASS(...)
#define SPLITSCREEN_MAX_NUM_PLAYERS
TSystemManager g_oSystemManager
void SetTranslation(const TVector4 &a_rTranslation)
DirectX 8 implementation of the render interface Handles DirectX 8 specific rendering functionality a...
virtual TBOOL Create() OVERRIDE
Creates the render interface.
virtual TBOOL CreateDisplay(const DISPLAYPARAMS &a_rParams) OVERRIDE
Creates a display with the specified parameters.
TFORCEINLINE TMSWindow * GetMSWindow()
Gets the MS window.
virtual TBOOL BeginScene() OVERRIDE
Begins a new rendering scene.
static TFORCEINLINE TRenderD3DInterface * Interface()
Gets the render interface singleton.
virtual TBOOL Update(float a_fDeltaTime) OVERRIDE
Updates the render interface state.
virtual void SetGamma(TFLOAT a_fGamma)
Sets the gamma value.
virtual void OnInitializationFailureDisplay() OVERRIDE
Called when display initialization fails.
virtual TBOOL EndScene() OVERRIDE
Ends the current rendering scene and presents the results.
static void CreateStaticData(TUINT a_uiMaxMaterials, TUINT a_uiMaxRenderPackets)
static constexpr TINT MAX_NUM_LIGHTS
void SetAutoCreateSystemResources(TBOOL a_bAutoCreate)
TRenderContext * GetCurrentContext() const
virtual DISPLAYPARAMS * GetCurrentDisplayParams()=0
TUINT32 eDepthStencilFormat
TVertexStreamFormat m_aStreamFormats[MAX_NUM_STREAMS]
class TObject * CreateObject() const
static TClass * Find(const TCHAR *name, TClass *parent=TNULL)
static TFORCEINLINE TKernelInterface * GetSingleton()
TKernelInterfaceDLL * LoadInterface(const TString8 &a_rcName)
Toshi::TMatrix44 & GetMatrix()
static AGUI2Context * GetContext()
AGUI2Renderer * GetRenderer() const
virtual void EndScene()=0
virtual void BeginScene()=0
static Toshi::TMemory::MemBlock * GetMemBlock(POOL a_ePool)
virtual TBOOL OnCreate() override
void UpdateMainCamera(const Toshi::TMatrix44 &a_rTransformMatrix, const ACamera *a_pCamera)
virtual TBOOL OnUpdate(TFLOAT a_fDeltaTime) override
Toshi::TRenderAdapter::Mode::Device * FindSuitableDevice(Toshi::TRenderInterface::DISPLAYPARAMS &a_rDisplayParams, bool a_bReverseOrder)
TBOOL CreateTRenderResources()
TBOOL IsGameSystemCreated() const