Changeset 27693
- Timestamp:
- Jun 14, 2023, 9:06:22 AM (14 months ago)
- Location:
- ps/trunk/source
- Files:
-
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
ps/trunk/source/graphics/GameView.cpp
r27232 r27693 1 /* Copyright (C) 202 2Wildfire Games.1 /* Copyright (C) 202 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * … … 68 68 NONCOPYABLE(CGameViewImpl); 69 69 public: 70 CGameViewImpl( CGame* game)70 CGameViewImpl(CGame* game) 71 71 : Game(game), 72 72 ColladaManager(g_VFS), MeshManager(ColladaManager), SkeletonAnimManager(ColladaManager), … … 74 74 LOSTexture(*game->GetSimulation2()), 75 75 TerritoryTexture(*game->GetSimulation2()), 76 MiniMapTexture( *game->GetSimulation2()),76 MiniMapTexture(*game->GetSimulation2()), 77 77 ViewCamera(), 78 78 CullCamera(), … … 159 159 #undef IMPLEMENT_BOOLEAN_SETTING 160 160 161 CGameView::CGameView( CGame *pGame):162 m(new CGameViewImpl( pGame))161 CGameView::CGameView(CGame *pGame): 162 m(new CGameViewImpl(pGame)) 163 163 { 164 164 m->CullCamera = m->ViewCamera; -
ps/trunk/source/graphics/GameView.h
r27232 r27693 1 /* Copyright (C) 202 2Wildfire Games.1 /* Copyright (C) 202 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * … … 38 38 NONCOPYABLE(CGameView); 39 39 public: 40 CGameView( CGame *pGame);40 CGameView(CGame *pGame); 41 41 ~CGameView() override; 42 42 -
ps/trunk/source/graphics/MiniMapTexture.cpp
r27601 r27693 191 191 } 192 192 193 CMiniMapTexture::CMiniMapTexture( CSimulation2& simulation)193 CMiniMapTexture::CMiniMapTexture(CSimulation2& simulation) 194 194 : m_Simulation(simulation), m_IndexArray(false), 195 195 m_VertexArray(Renderer::Backend::IBuffer::Type::VERTEX, true), … … 253 253 m_QuadVertexInputLayout = g_Renderer.GetVertexInputLayout(attributes); 254 254 255 Renderer::Backend::IDevice* device = g_VideoMode.GetBackendDevice();256 255 m_Flipped = device->GetBackend() == Renderer::Backend::Backend::VULKAN; 257 256 -
ps/trunk/source/graphics/MiniMapTexture.h
r27412 r27693 42 42 NONCOPYABLE(CMiniMapTexture); 43 43 public: 44 CMiniMapTexture( CSimulation2& simulation);44 CMiniMapTexture(CSimulation2& simulation); 45 45 ~CMiniMapTexture(); 46 46 -
ps/trunk/source/graphics/ShaderManager.cpp
r27608 r27693 32 32 #include "ps/Profile.h" 33 33 #include "ps/XML/Xeromyces.h" 34 #include "ps/VideoMode.h"35 34 #include "renderer/backend/IDevice.h" 36 #include "renderer/Renderer.h"37 #include "renderer/RenderingOptions.h"38 35 39 36 #define USE_SHADER_XML_VALIDATION 1 … … 49 46 TIMER_ADD_CLIENT(tc_ShaderValidation); 50 47 51 CShaderManager::CShaderManager() 48 CShaderManager::CShaderManager(Renderer::Backend::IDevice* device) 49 : m_Device(device) 52 50 { 53 51 #if USE_SHADER_XML_VALIDATION … … 76 74 return it->second; 77 75 78 CShaderProgramPtr program = CShaderProgram::Create( name, defines);76 CShaderProgramPtr program = CShaderProgram::Create(name, defines); 79 77 if (program) 80 78 { … … 157 155 return false; 158 156 159 Renderer::Backend::IDevice* device = g_VideoMode.GetBackendDevice();160 161 157 // By default we assume that we have techinques for every dummy shader. 162 if ( device->GetBackend() == Renderer::Backend::Backend::DUMMY)158 if (evice->GetBackend() == Renderer::Backend::Backend::DUMMY) 163 159 { 164 160 CShaderProgramPtr shaderProgram = LoadProgram(str_dummy.string(), tech->GetShaderDefines()); … … 168 164 passPipelineStateDesc.shaderProgram = shaderProgram->GetBackendShaderProgram(); 169 165 techPasses.emplace_back( 170 device->CreateGraphicsPipelineState(passPipelineStateDesc), shaderProgram);166 evice->CreateGraphicsPipelineState(passPipelineStateDesc), shaderProgram); 171 167 tech->SetPasses(std::move(techPasses)); 172 168 return true; … … 234 230 if (attrs.GetNamedItem(at_shaders) == "arb") 235 231 { 236 if ( device->GetBackend() != Renderer::Backend::Backend::GL_ARB ||237 ! device->GetCapabilities().ARBShaders)232 if (evice->GetBackend() != Renderer::Backend::Backend::GL_ARB || 233 !evice->GetCapabilities().ARBShaders) 238 234 { 239 235 isUsable = false; … … 242 238 else if (attrs.GetNamedItem(at_shaders) == "glsl") 243 239 { 244 if ( device->GetBackend() != Renderer::Backend::Backend::GL)240 if (evice->GetBackend() != Renderer::Backend::Backend::GL) 245 241 isUsable = false; 246 242 } 247 243 else if (attrs.GetNamedItem(at_shaders) == "spirv") 248 244 { 249 if ( device->GetBackend() != Renderer::Backend::Backend::VULKAN)245 if (evice->GetBackend() != Renderer::Backend::Backend::VULKAN) 250 246 isUsable = false; 251 247 } … … 444 440 passPipelineStateDesc.shaderProgram = shaderProgram->GetBackendShaderProgram(); 445 441 techPasses.emplace_back( 446 device->CreateGraphicsPipelineState(passPipelineStateDesc), shaderProgram);442 evice->CreateGraphicsPipelineState(passPipelineStateDesc), shaderProgram); 447 443 } 448 444 } -
ps/trunk/source/graphics/ShaderManager.h
r27328 r27693 1 /* Copyright (C) 202 2Wildfire Games.1 /* Copyright (C) 202 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * … … 38 38 { 39 39 public: 40 CShaderManager( );40 CShaderManager(); 41 41 ~CShaderManager(); 42 42 … … 81 81 } 82 82 }; 83 84 83 85 84 86 // A CShaderProgram contains expensive backend state, so we ought to cache it. -
ps/trunk/source/graphics/ShaderProgram.cpp
r26869 r27693 1 /* Copyright (C) 202 2Wildfire Games.1 /* Copyright (C) 202 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * … … 20 20 #include "ShaderProgram.h" 21 21 22 #include "ps/VideoMode.h"23 22 #include "renderer/backend/IDevice.h" 24 23 25 CShaderProgram::CShaderProgram(const CStr& name, const CShaderDefines& defines) 26 : m_Name(name), m_Defines(defines) 24 CShaderProgram::CShaderProgram( 25 Renderer::Backend::IDevice* device, const CStr& name, const CShaderDefines& defines) 26 : m_Device(device), m_Name(name), m_Defines(defines) 27 27 { 28 28 } 29 29 30 30 // static 31 CShaderProgramPtr CShaderProgram::Create(const CStr& name, const CShaderDefines& defines) 31 CShaderProgramPtr CShaderProgram::Create( 32 Renderer::Backend::IDevice* device, const CStr& name, const CShaderDefines& defines) 32 33 { 33 CShaderProgramPtr shaderProgram(new CShaderProgram( name, defines));34 CShaderProgramPtr shaderProgram(new CShaderProgram(name, defines)); 34 35 shaderProgram->Reload(); 35 36 return shaderProgram->m_BackendShaderProgram ? shaderProgram : nullptr; … … 39 40 { 40 41 std::unique_ptr<Renderer::Backend::IShaderProgram> backendShaderProgram = 41 g_VideoMode.GetBackendDevice()->CreateShaderProgram(m_Name, m_Defines);42 ->CreateShaderProgram(m_Name, m_Defines); 42 43 if (backendShaderProgram) 43 44 m_BackendShaderProgram = std::move(backendShaderProgram); -
ps/trunk/source/graphics/ShaderProgram.h
r26848 r27693 1 /* Copyright (C) 202 2Wildfire Games.1 /* Copyright (C) 202 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * … … 36 36 37 37 public: 38 static CShaderProgramPtr Create(const CStr& name, const CShaderDefines& defines); 38 static CShaderProgramPtr Create( 39 Renderer::Backend::IDevice* device, const CStr& name, const CShaderDefines& defines); 39 40 40 41 void Reload(); … … 47 48 48 49 protected: 49 CShaderProgram(const CStr& name, const CShaderDefines& defines); 50 CShaderProgram( 51 Renderer::Backend::IDevice* device, const CStr& name, const CShaderDefines& defines); 50 52 53 51 54 CStr m_Name; 52 55 CShaderDefines m_Defines; -
ps/trunk/source/graphics/TerrainTextureManager.cpp
r27152 r27693 1 /* Copyright (C) 202 2Wildfire Games.1 /* Copyright (C) 202 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * … … 29 29 #include "ps/CLogger.h" 30 30 #include "ps/Filesystem.h" 31 #include "ps/VideoMode.h"32 31 #include "ps/XML/Xeromyces.h" 33 32 #include "renderer/backend/IDevice.h" … … 38 37 #include <vector> 39 38 40 CTerrainTextureManager::CTerrainTextureManager( )41 : m_ LastGroupIndex(0)39 CTerrainTextureManager::CTerrainTextureManager() 40 : m_) 42 41 { 43 42 if (!VfsDirectoryExists(L"art/terrains/")) … … 293 292 #endif 294 293 295 result.m_CompositeAlphaMap = g_VideoMode.GetBackendDevice()->CreateTexture2D("CompositeAlphaMap",294 result.m_CompositeAlphaMap = ->CreateTexture2D("CompositeAlphaMap", 296 295 Renderer::Backend::ITexture::Usage::TRANSFER_DST | 297 296 Renderer::Backend::ITexture::Usage::SAMPLED, -
ps/trunk/source/graphics/TerrainTextureManager.h
r26858 r27693 1 /* Copyright (C) 202 2Wildfire Games.1 /* Copyright (C) 202 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * … … 95 95 96 96 // constructor, destructor 97 CTerrainTextureManager( );97 CTerrainTextureManager(); 98 98 ~CTerrainTextureManager(); 99 99 … … 125 125 126 126 private: 127 128 127 129 // All texture entries created by this class, for easy freeing now that 128 130 // textures may be in several STextureType's … … 133 135 TerrainAlphaMap m_TerrainAlphas; 134 136 135 size_t m_LastGroupIndex ;137 size_t m_LastGroupIndex; 136 138 137 139 // A way to separate file loading and uploading to GPU to not stall uploading. -
ps/trunk/source/gui/tests/test_CGUIText.h
r27077 r27693 58 58 g_VideoMode.CreateBackendDevice(false); 59 59 m_Viewer = new CProfileViewer; 60 m_Renderer = new CRenderer ;60 m_Renderer = new CRenderer; 61 61 } 62 62 -
ps/trunk/source/ps/Game.cpp
r26653 r27693 1 /* Copyright (C) 202 2Wildfire Games.1 /* Copyright (C) 202 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * … … 33 33 #include "ps/CLogger.h" 34 34 #include "ps/CStr.h" 35 35 36 #include "ps/Loader.h" 36 37 #include "ps/LoaderThunks.h" … … 38 39 #include "ps/Replay.h" 39 40 #include "ps/World.h" 40 #include "ps/ GameSetup/GameSetup.h"41 #include "ps/.h" 41 42 #include "renderer/Renderer.h" 42 43 #include "renderer/SceneRenderer.h" … … 71 72 m_World(new CWorld(this)), 72 73 m_Simulation2(new CSimulation2(&m_World->GetUnitManager(), g_ScriptContext, m_World->GetTerrain())), 73 m_GameView(CRenderer::IsInitialised() ? new CGameView(this) : nullptr), 74 // TODO: we need to remove that global dependency. Maybe the game view 75 // should be created outside only if needed. 76 m_GameView(CRenderer::IsInitialised() ? new CGameView(g_VideoMode.GetBackendDevice(), this) : nullptr), 74 77 m_GameStarted(false), 75 78 m_Paused(false), -
ps/trunk/source/ps/GameSetup/GameSetup.cpp
r27692 r27693 678 678 679 679 // create renderer 680 new CRenderer ;680 new CRenderer; 681 681 682 682 InitInput(); -
ps/trunk/source/renderer/PostprocManager.cpp
r27608 r27693 30 30 #include "ps/Filesystem.h" 31 31 #include "ps/Game.h" 32 #include "ps/VideoMode.h"33 32 #include "ps/World.h" 34 33 #include "renderer/backend/IDevice.h" … … 83 82 } // anonymous namespace 84 83 85 CPostprocManager::CPostprocManager() 86 : m_IsInitialized(false), m_PostProcEffect(L"default"), m_WhichBuffer(true), 87 m_Sharpness(0.3f), m_UsingMultisampleBuffer(false), m_MultisampleCount(0) 84 CPostprocManager::CPostprocManager(Renderer::Backend::IDevice* device) 85 : m_Device(device), m_IsInitialized(false), m_PostProcEffect(L"default"), 86 m_WhichBuffer(true), m_Sharpness(0.3f), m_UsingMultisampleBuffer(false), 87 m_MultisampleCount(0) 88 88 { 89 89 } … … 96 96 bool CPostprocManager::IsEnabled() const 97 97 { 98 Renderer::Backend::IDevice* device = g_VideoMode.GetBackendDevice();99 98 const bool isDepthStencilFormatPresent = 100 device->GetPreferredDepthStencilFormat(99 evice->GetPreferredDepthStencilFormat( 101 100 Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, true, true) 102 101 != Renderer::Backend::Format::UNDEFINED; 103 102 return 104 103 g_RenderingOptions.GetPostProc() && 105 device->GetBackend() != Renderer::Backend::Backend::GL_ARB &&104 evice->GetBackend() != Renderer::Backend::Backend::GL_ARB && 106 105 isDepthStencilFormatPresent; 107 106 } … … 146 145 m_VertexInputLayout = g_Renderer.GetVertexInputLayout(attributes); 147 146 148 const uint32_t maxSamples = g_VideoMode.GetBackendDevice()->GetCapabilities().maxSampleCount;147 const uint32_t maxSamples = ->GetCapabilities().maxSampleCount; 149 148 const uint32_t possibleSampleCounts[] = {2, 4, 8, 16}; 150 149 std::copy_if( … … 183 182 Cleanup(); 184 183 185 Renderer::Backend::IDevice* backendDevice = g_VideoMode.GetBackendDevice();186 187 184 #define GEN_BUFFER_RGBA(name, w, h) \ 188 name = backendDevice->CreateTexture2D( \185 name = Device->CreateTexture2D( \ 189 186 "PostProc" #name, \ 190 187 Renderer::Backend::ITexture::Usage::SAMPLED | \ … … 216 213 colorAttachment.storeOp = Renderer::Backend::AttachmentStoreOp::STORE; 217 214 colorAttachment.clearColor = CColor{0.0f, 0.0f, 0.0f, 0.0f}; 218 step.framebuffer = backendDevice->CreateFramebuffer(215 step.framebuffer = Device->CreateFramebuffer( 219 216 "BlurScaleSteoFramebuffer", &colorAttachment, nullptr); 220 217 } … … 226 223 227 224 // Allocate the Depth/Stencil texture. 228 m_DepthTex = backendDevice->CreateTexture2D("PostProcDepthTexture",225 m_DepthTex = Device->CreateTexture2D("PostProcDepthTexture", 229 226 Renderer::Backend::ITexture::Usage::SAMPLED | 230 227 Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, 231 backendDevice->GetPreferredDepthStencilFormat(228 Device->GetPreferredDepthStencilFormat( 232 229 Renderer::Backend::ITexture::Usage::SAMPLED | 233 230 Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, … … 250 247 depthStencilAttachment.storeOp = Renderer::Backend::AttachmentStoreOp::STORE; 251 248 252 m_CaptureFramebuffer = backendDevice->CreateFramebuffer("PostprocCaptureFramebuffer",249 m_CaptureFramebuffer = Device->CreateFramebuffer("PostprocCaptureFramebuffer", 253 250 &colorAttachment, &depthStencilAttachment); 254 251 … … 256 253 colorAttachment.loadOp = Renderer::Backend::AttachmentLoadOp::LOAD; 257 254 colorAttachment.storeOp = Renderer::Backend::AttachmentStoreOp::STORE; 258 m_PingFramebuffer = backendDevice->CreateFramebuffer("PostprocPingFramebuffer",255 m_PingFramebuffer = Device->CreateFramebuffer("PostprocPingFramebuffer", 259 256 &colorAttachment, nullptr); 260 257 261 258 colorAttachment.texture = m_ColorTex2.get(); 262 m_PongFramebuffer = backendDevice->CreateFramebuffer("PostprocPongFramebuffer",259 m_PongFramebuffer = Device->CreateFramebuffer("PostprocPongFramebuffer", 263 260 &colorAttachment, nullptr); 264 261 … … 480 477 // Don't do anything if we are using the default effect and no AA. 481 478 const bool hasEffects = m_PostProcEffect != L"default"; 482 const bool hasARB = g_VideoMode.GetBackendDevice()->GetBackend() == Renderer::Backend::Backend::GL_ARB;479 const bool hasARB = ->GetBackend() == Renderer::Backend::Backend::GL_ARB; 483 480 const bool hasAA = m_AATech && !hasARB; 484 481 const bool hasSharp = m_SharpTech && !hasARB; … … 550 547 void CPostprocManager::UpdateAntiAliasingTechnique() 551 548 { 552 Renderer::Backend::IDevice* device = g_VideoMode.GetBackendDevice(); 553 if (device->GetBackend() == Renderer::Backend::Backend::GL_ARB || !m_IsInitialized) 549 if (m_Device->GetBackend() == Renderer::Backend::Backend::GL_ARB || !m_IsInitialized) 554 550 return; 555 551 … … 581 577 if (g_AtlasGameLoop && g_AtlasGameLoop->running) 582 578 return; 583 if (! device->GetCapabilities().multisampling || m_AllowedSampleCounts.empty())579 if (!evice->GetCapabilities().multisampling || m_AllowedSampleCounts.empty()) 584 580 { 585 581 LOGWARNING("MSAA is unsupported."); … … 591 587 std::end(m_AllowedSampleCounts)) 592 588 { 593 m_MultisampleCount = std::min(4u, device->GetCapabilities().maxSampleCount);589 m_MultisampleCount = std::min(4u, evice->GetCapabilities().maxSampleCount); 594 590 LOGWARNING("Wrong MSAA sample count: %s.", m_AAName.EscapeToPrintableASCII().c_str()); 595 591 } … … 601 597 void CPostprocManager::UpdateSharpeningTechnique() 602 598 { 603 if ( g_VideoMode.GetBackendDevice()->GetBackend() == Renderer::Backend::Backend::GL_ARB || !m_IsInitialized)599 if (->GetBackend() == Renderer::Backend::Backend::GL_ARB || !m_IsInitialized) 604 600 return; 605 601 … … 630 626 void CPostprocManager::CreateMultisampleBuffer() 631 627 { 632 Renderer::Backend::IDevice* backendDevice = g_VideoMode.GetBackendDevice(); 633 634 m_MultisampleColorTex = backendDevice->CreateTexture("PostProcColorMS", 628 m_MultisampleColorTex = m_Device->CreateTexture("PostProcColorMS", 635 629 Renderer::Backend::ITexture::Type::TEXTURE_2D_MULTISAMPLE, 636 630 Renderer::Backend::ITexture::Usage::COLOR_ATTACHMENT | … … 642 636 643 637 // Allocate the Depth/Stencil texture. 644 m_MultisampleDepthTex = backendDevice->CreateTexture("PostProcDepthMS",638 m_MultisampleDepthTex = Device->CreateTexture("PostProcDepthMS", 645 639 Renderer::Backend::ITexture::Type::TEXTURE_2D_MULTISAMPLE, 646 640 Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT | 647 641 Renderer::Backend::ITexture::Usage::TRANSFER_SRC, 648 backendDevice->GetPreferredDepthStencilFormat(642 Device->GetPreferredDepthStencilFormat( 649 643 Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT | 650 644 Renderer::Backend::ITexture::Usage::TRANSFER_SRC, … … 667 661 depthStencilAttachment.storeOp = Renderer::Backend::AttachmentStoreOp::STORE; 668 662 669 m_MultisampleFramebuffer = backendDevice->CreateFramebuffer(663 m_MultisampleFramebuffer = Device->CreateFramebuffer( 670 664 "PostprocMultisampleFramebuffer", &colorAttachment, &depthStencilAttachment); 671 665 -
ps/trunk/source/renderer/PostprocManager.h
r27363 r27693 32 32 { 33 33 public: 34 CPostprocManager( );34 CPostprocManager(); 35 35 ~CPostprocManager(); 36 36 … … 91 91 void CreateMultisampleBuffer(); 92 92 void DestroyMultisampleBuffer(); 93 94 93 95 94 96 std::unique_ptr<Renderer::Backend::IFramebuffer> m_CaptureFramebuffer; -
ps/trunk/source/renderer/Renderer.cpp
r27613 r27693 244 244 NONCOPYABLE(Internals); 245 245 public: 246 247 246 248 std::unique_ptr<Renderer::Backend::IDeviceCommandContext> deviceCommandContext; 247 249 … … 282 284 std::unique_ptr<Renderer::Backend::IVertexInputLayout>, VertexAttributesHash> vertexInputLayouts; 283 285 284 Internals() : 286 Internals(Renderer::Backend::IDevice* device) : 287 device(device), 288 deviceCommandContext(device->CreateCommandContext()), 285 289 IsOpen(false), ShadersDirty(true), profileTable(g_Renderer.m_Stats), 286 deviceCommandContext(g_VideoMode.GetBackendDevice()->CreateCommandContext()),287 textureManager(g_VFS, false, g_VideoMode.GetBackendDevice())290 ), 291 ) 288 292 { 289 293 } … … 307 311 } 308 312 309 CRenderer::CRenderer( )313 CRenderer::CRenderer() 310 314 { 311 315 TIMER(L"InitRenderer"); 312 316 313 m = std::make_unique<Internals>( );317 m = std::make_unique<Internals>(); 314 318 315 319 g_ProfileViewer.AddRootTable(&m->profileTable); … … 321 325 322 326 // Create terrain related stuff. 323 new CTerrainTextureManager ;327 new CTerrainTextureManager; 324 328 325 329 Open(g_xres, g_yres); … … 349 353 ENSURE(m->IsOpen); 350 354 351 m->sceneRenderer.ReloadShaders( );355 m->sceneRenderer.ReloadShaders(); 352 356 m->ShadersDirty = false; 353 357 } … … 394 398 // Renderer has been opened, so validate the selected renderpath 395 399 const bool hasShadersSupport = 396 g_VideoMode.GetBackendDevice()->GetCapabilities().ARBShaders ||397 g_VideoMode.GetBackendDevice()->GetBackend() != Renderer::Backend::Backend::GL_ARB;400 ->GetCapabilities().ARBShaders || 401 ->GetBackend() != Renderer::Backend::Backend::GL_ARB; 398 402 if (rp == RenderPath::DEFAULT) 399 403 { … … 444 448 { 445 449 // In case of no acquired backbuffer we have nothing render to. 446 if (! g_VideoMode.GetBackendDevice()->AcquireNextBackbuffer())450 if (!->AcquireNextBackbuffer()) 447 451 return; 448 452 } … … 459 463 m->deviceCommandContext->Flush(); 460 464 if (needsPresent) 461 g_VideoMode.GetBackendDevice()->Present();465 ->Present(); 462 466 } 463 467 } … … 652 656 const size_t bpp = 24; 653 657 654 if (needsPresent && ! g_VideoMode.GetBackendDevice()->AcquireNextBackbuffer())658 if (needsPresent && !->AcquireNextBackbuffer()) 655 659 return; 656 660 … … 670 674 m->deviceCommandContext->Flush(); 671 675 if (needsPresent) 672 g_VideoMode.GetBackendDevice()->Present();676 ->Present(); 673 677 674 678 if (tex_write(&t, filename) == INFO::OK) … … 769 773 g_Game->GetView()->GetCamera()->SetProjection(projection); 770 774 771 if (!needsPresent || g_VideoMode.GetBackendDevice()->AcquireNextBackbuffer())775 if (!needsPresent || ->AcquireNextBackbuffer()) 772 776 { 773 777 RenderFrameImpl(false, false); … … 777 781 778 782 if (needsPresent) 779 g_VideoMode.GetBackendDevice()->Present();783 ->Present(); 780 784 } 781 785 … … 897 901 std::vector<Renderer::Backend::SVertexAttributeFormat>{attributes.begin(), attributes.end()}, nullptr); 898 902 if (inserted) 899 it->second = g_VideoMode.GetBackendDevice()->CreateVertexInputLayout(attributes);903 it->second = ->CreateVertexInputLayout(attributes); 900 904 return it->second.get(); 901 905 } -
ps/trunk/source/renderer/Renderer.h
r27363 r27693 78 78 79 79 public: 80 CRenderer( );80 CRenderer(); 81 81 ~CRenderer(); 82 82 -
ps/trunk/source/renderer/SceneRenderer.cpp
r27492 r27693 43 43 #include "ps/Game.h" 44 44 #include "ps/Profile.h" 45 #include "ps/VideoMode.h"46 45 #include "ps/World.h" 47 46 #include "renderer/backend/IDevice.h" … … 77 76 NONCOPYABLE(Internals); 78 77 public: 79 Internals() = default; 78 Internals(Renderer::Backend::IDevice* device) 79 : waterManager(device), shadow(device) 80 { 81 } 82 80 83 ~Internals() = default; 81 84 … … 187 190 }; 188 191 189 CSceneRenderer::CSceneRenderer( )190 { 191 m = std::make_unique<Internals>( );192 CSceneRenderer::CSceneRenderer() 193 { 194 m = std::make_unique<Internals>(); 192 195 193 196 m_TerrainRenderMode = SOLID; … … 211 214 } 212 215 213 void CSceneRenderer::ReloadShaders( )216 void CSceneRenderer::ReloadShaders() 214 217 { 215 218 m->globalContext = CShaderDefines(); 216 217 Renderer::Backend::IDevice* device = g_VideoMode.GetBackendDevice();218 219 219 220 if (g_RenderingOptions.GetShadows()) … … 568 569 // Save the model-view-projection matrix so the shaders can use it for projective texturing 569 570 wm.m_ReflectionMatrix = m_ViewCamera.GetViewProjection(); 570 if ( g_VideoMode.GetBackendDevice()->GetBackend() == Renderer::Backend::Backend::VULKAN)571 if (Device()->GetBackend() == Renderer::Backend::Backend::VULKAN) 571 572 { 572 573 CMatrix3D flip; … … 651 652 wm.m_RefractionViewInvMatrix = m_ViewCamera.GetOrientation(); 652 653 653 if ( g_VideoMode.GetBackendDevice()->GetBackend() == Renderer::Backend::Backend::VULKAN)654 if (Device()->GetBackend() == Renderer::Backend::Backend::VULKAN) 654 655 { 655 656 CMatrix3D flip; -
ps/trunk/source/renderer/SceneRenderer.h
r27232 r27693 1 /* Copyright (C) 202 2Wildfire Games.1 /* Copyright (C) 202 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * … … 66 66 }; 67 67 68 CSceneRenderer( );68 CSceneRenderer(); 69 69 ~CSceneRenderer(); 70 70 … … 196 196 void ResetState(); 197 197 198 void ReloadShaders( );198 void ReloadShaders(); 199 199 200 200 protected: -
ps/trunk/source/renderer/ShadowMap.cpp
r27493 r27693 33 33 #include "ps/CStrInternStatic.h" 34 34 #include "ps/Profile.h" 35 #include "ps/VideoMode.h"36 35 #include "renderer/backend/IDevice.h" 37 36 #include "renderer/backend/ITexture.h" … … 58 57 struct ShadowMapInternals 59 58 { 59 60 60 61 std::unique_ptr<Renderer::Backend::IFramebuffer> Framebuffer; 61 62 std::unique_ptr<Renderer::Backend::ITexture> Texture; … … 125 126 CFG_GET_VAL("shadowscascadecount", CascadeCount); 126 127 127 if (CascadeCount < 1 || CascadeCount > MAX_CASCADE_COUNT || g_VideoMode.GetBackendDevice()->GetBackend() == Renderer::Backend::Backend::GL_ARB)128 if (CascadeCount < 1 || CascadeCount > MAX_CASCADE_COUNT || ->GetBackend() == Renderer::Backend::Backend::GL_ARB) 128 129 CascadeCount = 1; 129 130 … … 184 185 } 185 186 186 ShadowMap::ShadowMap( )187 ShadowMap::ShadowMap() 187 188 { 188 189 m = new ShadowMapInternals; 190 189 191 m->Framebuffer = 0; 190 192 m->Width = 0; … … 461 463 lightToTex._44 = 1.0; 462 464 463 if ( g_VideoMode.GetBackendDevice()->GetBackend() == Renderer::Backend::Backend::VULKAN)465 if (->GetBackend() == Renderer::Backend::Backend::VULKAN) 464 466 { 465 467 CMatrix3D flip; … … 480 482 Texture.reset(); 481 483 DummyTexture.reset(); 482 483 Renderer::Backend::IDevice* backendDevice = g_VideoMode.GetBackendDevice();484 484 485 485 CFG_GET_VAL("shadowquality", QualityLevel); … … 509 509 // Clamp to the maximum texture size. 510 510 shadowMapSize = std::min( 511 shadowMapSize, static_cast<int>( backendDevice->GetCapabilities().maxTextureSize));511 shadowMapSize, static_cast<int>(Device->GetCapabilities().maxTextureSize)); 512 512 513 513 Width = Height = shadowMapSize; … … 530 530 default: 531 531 formatName = "Default"; 532 backendFormat = backendDevice->GetPreferredDepthStencilFormat(532 backendFormat = Device->GetPreferredDepthStencilFormat( 533 533 Renderer::Backend::ITexture::Usage::SAMPLED | 534 534 Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, … … 544 544 if (g_RenderingOptions.GetShadowAlphaFix()) 545 545 { 546 DummyTexture = backendDevice->CreateTexture2D("ShadowMapDummy",546 DummyTexture = Device->CreateTexture2D("ShadowMapDummy", 547 547 Renderer::Backend::ITexture::Usage::COLOR_ATTACHMENT, 548 548 Renderer::Backend::Format::R8G8B8A8_UNORM, Width, Height, … … 567 567 samplerDesc.compareOp = Renderer::Backend::CompareOp::LESS_OR_EQUAL; 568 568 569 Texture = backendDevice->CreateTexture2D("ShadowMapDepth",569 Texture = Device->CreateTexture2D("ShadowMapDepth", 570 570 Renderer::Backend::ITexture::Usage::SAMPLED | 571 571 Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, … … 588 588 depthStencilAttachment.storeOp = Renderer::Backend::AttachmentStoreOp::STORE; 589 589 590 Framebuffer = backendDevice->CreateFramebuffer("ShadowMapFramebuffer",590 Framebuffer = Device->CreateFramebuffer("ShadowMapFramebuffer", 591 591 useDummyTexture ? &colorAttachment : nullptr, &depthStencilAttachment); 592 592 if (!Framebuffer) -
ps/trunk/source/renderer/ShadowMap.h
r27151 r27693 39 39 { 40 40 public: 41 ShadowMap( );41 ShadowMap(); 42 42 ~ShadowMap(); 43 43 -
ps/trunk/source/renderer/SkyManager.cpp
r27363 r27693 33 33 #include "ps/Filesystem.h" 34 34 #include "ps/Game.h" 35 #include "ps/VideoMode.h"36 35 #include "renderer/backend/IDevice.h" 37 36 #include "renderer/Renderer.h" … … 122 121 123 122 std::unique_ptr<Renderer::Backend::ITexture> skyCubeMap = 124 g_VideoMode.GetBackendDevice()->CreateTexture("SkyCubeMap",123 Device()->CreateTexture("SkyCubeMap", 125 124 Renderer::Backend::ITexture::Type::TEXTURE_CUBE, 126 125 Renderer::Backend::ITexture::Usage::TRANSFER_DST | -
ps/trunk/source/renderer/WaterManager.cpp
r27412 r27693 29 29 #include "ps/CStrInternStatic.h" 30 30 #include "ps/Game.h" 31 #include "ps/VideoMode.h"32 31 #include "ps/World.h" 33 32 #include "renderer/backend/IDevice.h" … … 70 69 }; 71 70 72 WaterManager::WaterManager() 71 WaterManager::WaterManager(Renderer::Backend::IDevice* device) 72 : m_Device(device) 73 73 { 74 74 // water … … 215 215 void WaterManager::RecreateOrLoadTexturesIfNeeded() 216 216 { 217 Renderer::Backend::IDevice* backendDevice = g_VideoMode.GetBackendDevice();218 219 217 // Use screen-sized textures for minimum artifacts. 220 218 const size_t newRefTextureSize = round_up_to_pow2(g_Renderer.GetHeight()); … … 234 232 235 233 const Renderer::Backend::Format depthFormat = 236 backendDevice->GetPreferredDepthStencilFormat(234 Device->GetPreferredDepthStencilFormat( 237 235 Renderer::Backend::ITexture::Usage::SAMPLED | 238 236 Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, … … 245 243 if (needsReflectionTextures && !m_ReflectionTexture) 246 244 { 247 m_ReflectionTexture = backendDevice->CreateTexture2D("WaterReflectionTexture",245 m_ReflectionTexture = Device->CreateTexture2D("WaterReflectionTexture", 248 246 Renderer::Backend::ITexture::Usage::SAMPLED | 249 247 Renderer::Backend::ITexture::Usage::COLOR_ATTACHMENT, … … 253 251 Renderer::Backend::Sampler::AddressMode::MIRRORED_REPEAT)); 254 252 255 m_ReflFboDepthTexture = backendDevice->CreateTexture2D("WaterReflectionDepthTexture",253 m_ReflFboDepthTexture = Device->CreateTexture2D("WaterReflectionDepthTexture", 256 254 Renderer::Backend::ITexture::Usage::SAMPLED | 257 255 Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, … … 272 270 depthStencilAttachment.storeOp = Renderer::Backend::AttachmentStoreOp::STORE; 273 271 274 m_ReflectionFramebuffer = backendDevice->CreateFramebuffer("ReflectionFramebuffer",272 m_ReflectionFramebuffer = Device->CreateFramebuffer("ReflectionFramebuffer", 275 273 &colorAttachment, &depthStencilAttachment); 276 274 if (!m_ReflectionFramebuffer) … … 287 285 if (needsRefractionTextures && !m_RefractionTexture) 288 286 { 289 m_RefractionTexture = backendDevice->CreateTexture2D("WaterRefractionTexture",287 m_RefractionTexture = Device->CreateTexture2D("WaterRefractionTexture", 290 288 Renderer::Backend::ITexture::Usage::SAMPLED | 291 289 Renderer::Backend::ITexture::Usage::COLOR_ATTACHMENT, … … 295 293 Renderer::Backend::Sampler::AddressMode::MIRRORED_REPEAT)); 296 294 297 m_RefrFboDepthTexture = backendDevice->CreateTexture2D("WaterRefractionDepthTexture",295 m_RefrFboDepthTexture = Device->CreateTexture2D("WaterRefractionDepthTexture", 298 296 Renderer::Backend::ITexture::Usage::SAMPLED | 299 297 Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, … … 314 312 depthStencilAttachment.storeOp = Renderer::Backend::AttachmentStoreOp::STORE; 315 313 316 m_RefractionFramebuffer = backendDevice->CreateFramebuffer("RefractionFramebuffer",314 m_RefractionFramebuffer = Device->CreateFramebuffer("RefractionFramebuffer", 317 315 &colorAttachment, &depthStencilAttachment); 318 316 if (!m_RefractionFramebuffer) … … 339 337 if (needsFancyTextures && !m_FancyTexture) 340 338 { 341 m_FancyTexture = backendDevice->CreateTexture2D("WaterFancyTexture",339 m_FancyTexture = Device->CreateTexture2D("WaterFancyTexture", 342 340 Renderer::Backend::ITexture::Usage::SAMPLED | 343 341 Renderer::Backend::ITexture::Usage::COLOR_ATTACHMENT, … … 347 345 Renderer::Backend::Sampler::AddressMode::REPEAT)); 348 346 349 m_FancyTextureDepth = backendDevice->CreateTexture2D("WaterFancyDepthTexture",347 m_FancyTextureDepth = Device->CreateTexture2D("WaterFancyDepthTexture", 350 348 Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, 351 349 depthFormat, g_Renderer.GetWidth(), g_Renderer.GetHeight(), … … 366 364 depthStencilAttachment.storeOp = Renderer::Backend::AttachmentStoreOp::STORE; 367 365 368 m_FancyEffectsFramebuffer = backendDevice->CreateFramebuffer("FancyEffectsFramebuffer",366 m_FancyEffectsFramebuffer = Device->CreateFramebuffer("FancyEffectsFramebuffer", 369 367 &colorAttachment, &depthStencilAttachment); 370 368 … … 380 378 occludersDepthStencilAttachment.storeOp = Renderer::Backend::AttachmentStoreOp::DONT_CARE; 381 379 382 m_FancyEffectsOccludersFramebuffer = backendDevice->CreateFramebuffer("FancyEffectsOccludersFramebuffer",380 m_FancyEffectsOccludersFramebuffer = Device->CreateFramebuffer("FancyEffectsOccludersFramebuffer", 383 381 &occludersColorAttachment, &occludersDepthStencilAttachment); 384 382 if (!m_FancyEffectsFramebuffer || !m_FancyEffectsOccludersFramebuffer) … … 1130 1128 { 1131 1129 return 1132 m_RenderWater && g_VideoMode.GetBackendDevice()->GetBackend() != Renderer::Backend::Backend::GL_ARB &&1130 m_RenderWater && ->GetBackend() != Renderer::Backend::Backend::GL_ARB && 1133 1131 g_RenderingOptions.GetWaterEffects(); 1134 1132 } -
ps/trunk/source/renderer/WaterManager.h
r27375 r27693 131 131 132 132 public: 133 WaterManager( );133 WaterManager(); 134 134 ~WaterManager(); 135 135 … … 208 208 size_t GetCurrentTextureIndex(const double& period) const; 209 209 size_t GetNextTextureIndex(const double& period) const; 210 211 212 210 213 }; 211 214 -
ps/trunk/source/tools/atlas/GameInterface/ActorViewer.cpp
r27313 r27693 82 82 LOSTexture(Simulation2), 83 83 TerritoryTexture(Simulation2), 84 MiniMapTexture( Simulation2)84 MiniMapTexture(Simulation2) 85 85 { 86 86 UnitManager.SetObjectManager(ObjectManager);
Note:
See TracChangeset
for help on using the changeset viewer.