Changeset 25329
- Timestamp:
- Apr 27, 2021, 9:23:37 PM (3 years ago)
- Location:
- ps/trunk/source
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
ps/trunk/source/graphics/ParticleEmitter.h
r18987 r25329 1 /* Copyright (C) 20 11 Wildfire Games.1 /* Copyright (C) 201 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * … … 91 91 } 92 92 93 CQuaternionGetRotation() const93 GetRotation() const 94 94 { 95 95 return m_Rot; … … 99 99 * Get the bounding box of the center points of particles at their current positions. 100 100 */ 101 CBoundingBoxAligned GetParticleBounds(){ return m_ParticleBounds; }101 { return m_ParticleBounds; } 102 102 103 103 /** -
ps/trunk/source/renderer/DebugRenderer.cpp
r25323 r25329 27 27 #include "maths/BoundingBoxAligned.h" 28 28 #include "maths/Brush.h" 29 29 30 #include "maths/Vector3D.h" 30 31 #include "renderer/Renderer.h" … … 48 49 g_Renderer.GetShaderManager().LoadEffect(str_debug_line); 49 50 debugLineTech->BeginPass(); 51 50 52 CShaderProgramPtr debugLineShader = debugLineTech->GetShader(); 51 52 debugLineShader->Bind();53 53 debugLineShader->Uniform(str_transform, g_Renderer.GetViewCamera().GetViewProjection()); 54 54 debugLineShader->Uniform(str_color, color); … … 87 87 glDrawArrays(GL_TRIANGLES, 0, vertices.size() / 3); 88 88 89 debugLineShader->Unbind();90 89 debugLineTech->EndPass(); 91 90 #endif … … 100 99 g_Renderer.GetShaderManager().LoadEffect(str_debug_line); 101 100 debugCircleTech->BeginPass(); 101 102 103 102 104 CShaderProgramPtr debugCircleShader = debugCircleTech->GetShader(); 103 104 const CCamera& camera = g_Renderer.GetViewCamera();105 106 debugCircleShader->Bind();107 105 debugCircleShader->Uniform(str_transform, camera.GetViewProjection()); 108 106 debugCircleShader->Uniform(str_color, color); … … 133 131 glDrawArrays(GL_TRIANGLE_FAN, 0, vertices.size() / 3); 134 132 135 debugCircleShader->Unbind();136 133 debugCircleTech->EndPass(); 137 134 #endif 138 135 } 139 136 140 void CDebugRenderer::DrawCameraFrustum(const CCamera& camera, const CColor& color, int intermediates) const137 void CDebugRenderer::DrawCameraFrustum(const CCamera& camera, const CColor& color, int intermediates) 141 138 { 142 139 #if CONFIG2_GLES … … 157 154 g_Renderer.GetShaderManager().LoadEffect(str_debug_line); 158 155 overlayTech->BeginPass(); 156 159 157 CShaderProgramPtr overlayShader = overlayTech->GetShader(); 160 161 overlayShader->Bind();162 158 overlayShader->Uniform(str_transform, g_Renderer.GetViewCamera().GetViewProjection()); 163 159 overlayShader->Uniform(str_color, color); … … 219 215 #undef ADD 220 216 221 overlayShader->Unbind();222 217 overlayTech->EndPass(); 223 218 #endif 224 219 } 225 220 226 void CDebugRenderer::DrawBoundingBox(const CBoundingBoxAligned& boundingBox, const CShaderProgramPtr& shader) const 227 { 221 void CDebugRenderer::DrawBoundingBox(const CBoundingBoxAligned& boundingBox, const CColor& color) 222 { 223 DrawBoundingBox(boundingBox, color, g_Renderer.GetViewCamera().GetViewProjection()); 224 } 225 226 void CDebugRenderer::DrawBoundingBox(const CBoundingBoxAligned& boundingBox, const CColor& color, const CMatrix3D& transform) 227 { 228 CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid); 229 shaderTech->BeginPass(); 230 231 CShaderProgramPtr shader = shaderTech->GetShader(); 232 shader->Uniform(str_color, color); 233 shader->Uniform(str_transform, transform); 234 228 235 std::vector<float> data; 229 236 … … 254 261 shader->AssertPointersBound(); 255 262 glDrawArrays(GL_TRIANGLES, 0, 6*6); 256 } 257 258 void CDebugRenderer::DrawBoundingBoxOutline(const CBoundingBoxAligned& boundingBox, const CShaderProgramPtr& shader) const 259 { 263 264 shaderTech->EndPass(); 265 } 266 267 void CDebugRenderer::DrawBoundingBoxOutline(const CBoundingBoxAligned& boundingBox, const CColor& color) 268 { 269 DrawBoundingBoxOutline(boundingBox, color, g_Renderer.GetViewCamera().GetViewProjection()); 270 } 271 272 void CDebugRenderer::DrawBoundingBoxOutline(const CBoundingBoxAligned& boundingBox, const CColor& color, const CMatrix3D& transform) 273 { 274 CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid); 275 shaderTech->BeginPass(); 276 277 CShaderProgramPtr shader = shaderTech->GetShader(); 278 shader->Uniform(str_color, color); 279 shader->Uniform(str_transform, transform); 280 260 281 std::vector<float> data; 261 282 … … 288 309 shader->AssertPointersBound(); 289 310 glDrawArrays(GL_LINES, 0, 6*8); 290 } 291 292 void CDebugRenderer::DrawBrush(const CBrush& brush, const CShaderProgramPtr& shader) const 293 { 311 312 shaderTech->EndPass(); 313 } 314 315 void CDebugRenderer::DrawBrush(const CBrush& brush, const CColor& color) 316 { 317 CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid); 318 shaderTech->BeginPass(); 319 320 CShaderProgramPtr shader = shaderTech->GetShader(); 321 shader->Uniform(str_color, color); 322 shader->Uniform(str_transform, g_Renderer.GetViewCamera().GetViewProjection()); 323 294 324 std::vector<float> data; 295 325 … … 326 356 shader->AssertPointersBound(); 327 357 glDrawArrays(GL_TRIANGLES, 0, data.size() / 5); 328 } 329 330 void CDebugRenderer::DrawBrushOutline(const CBrush& brush, const CShaderProgramPtr& shader) const 331 { 358 359 shaderTech->EndPass(); 360 } 361 362 void CDebugRenderer::DrawBrushOutline(const CBrush& brush, const CColor& color) 363 { 364 CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid); 365 shaderTech->BeginPass(); 366 367 CShaderProgramPtr shader = shaderTech->GetShader(); 368 shader->Uniform(str_color, color); 369 shader->Uniform(str_transform, g_Renderer.GetViewCamera().GetViewProjection()); 370 332 371 std::vector<float> data; 333 372 … … 362 401 shader->AssertPointersBound(); 363 402 glDrawArrays(GL_LINES, 0, data.size() / 5); 364 } 403 404 shaderTech->EndPass(); 405 } -
ps/trunk/source/renderer/DebugRenderer.h
r25323 r25329 19 19 #define INCLUDED_DEBUGRENDERER 20 20 21 #include "graphics/ShaderProgramPtr.h"22 23 21 #include <vector> 24 22 … … 26 24 class CBrush; 27 25 class CCamera; 26 28 27 class CVector3D; 29 28 … … 53 52 * be hinted at between the near and far planes 54 53 */ 55 void DrawCameraFrustum(const CCamera& camera, const CColor& color, int intermediates = 0) const;54 void DrawCameraFrustum(const CCamera& camera, const CColor& color, int intermediates = 0); 56 55 57 56 /** 58 57 * Render the surfaces of the bound box as triangles. 59 58 */ 60 void DrawBoundingBox(const CBoundingBoxAligned& boundingBox, const CShaderProgramPtr& shader) const; 59 void DrawBoundingBox(const CBoundingBoxAligned& boundingBox, const CColor& color); 60 void DrawBoundingBox(const CBoundingBoxAligned& boundingBox, const CColor& color, const CMatrix3D& transform); 61 61 62 62 /** 63 63 * Render the outline of the bound box as lines. 64 64 */ 65 void DrawBoundingBoxOutline(const CBoundingBoxAligned& boundingBox, const CShaderProgramPtr& shader) const; 65 void DrawBoundingBoxOutline(const CBoundingBoxAligned& boundingBox, const CColor& color); 66 void DrawBoundingBoxOutline(const CBoundingBoxAligned& boundingBox, const CColor& color, const CMatrix3D& transform); 66 67 67 68 /** 68 69 * Render the surfaces of the brush as triangles. 69 70 */ 70 void DrawBrush(const CBrush& brush, const C ShaderProgramPtr& shader) const;71 void DrawBrush(const CBrush& brush, const C; 71 72 72 73 /** 73 74 * Render the outline of the brush as lines. 74 75 */ 75 void DrawBrushOutline(const CBrush& brush, const C ShaderProgramPtr& shader) const;76 void DrawBrushOutline(const CBrush& brush, const C; 76 77 }; 77 78 -
ps/trunk/source/renderer/ParticleRenderer.cpp
r25269 r25329 151 151 } 152 152 153 void ParticleRenderer::RenderBounds(int cullGroup , CShaderProgramPtr& shader)153 void ParticleRenderer::RenderBounds(int cullGroup) 154 154 { 155 std::vector<CParticleEmitter*>& emitters = m->emitters[cullGroup]; 156 157 for (size_t i = 0; i < emitters.size(); ++i) 155 for (const CParticleEmitter* emitter : m->emitters[cullGroup]) 158 156 { 159 CParticleEmitter* emitter = emitters[i]; 160 161 CBoundingBoxAligned bounds = emitter->m_Type->CalculateBounds(emitter->GetPosition(), emitter->GetParticleBounds()); 162 g_Renderer.GetDebugRenderer().DrawBoundingBox(bounds, shader); 157 const CBoundingBoxAligned bounds = 158 emitter->m_Type->CalculateBounds(emitter->GetPosition(), emitter->GetParticleBounds()); 159 g_Renderer.GetDebugRenderer().DrawBoundingBox(bounds, CColor(0.0f, 1.0f, 0.0f, 1.0f)); 163 160 } 164 161 } -
ps/trunk/source/renderer/ParticleRenderer.h
r15481 r25329 1 /* Copyright (C) 20 13Wildfire Games.1 /* Copyright (C) 20 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * … … 22 22 class CShaderDefines; 23 23 struct ParticleRendererInternals; 24 25 #include "graphics/ShaderProgramPtr.h"26 24 27 25 /** … … 61 59 * Render bounding boxes for all the submitted emitters. 62 60 */ 63 void RenderBounds(int cullGroup , CShaderProgramPtr& shader);61 void RenderBounds(int cullGroup); 64 62 65 63 private: -
ps/trunk/source/renderer/Renderer.cpp
r25328 r25329 1224 1224 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); 1225 1225 1226 glDisable(GL_TEXTURE_2D);1227 glColor3f(0.0f, 0.5f, 0.0f);1228 1229 1226 m->particleRenderer.RenderParticles(true); 1230 1231 CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid); 1232 shaderTech->BeginPass(); 1233 CShaderProgramPtr shader = shaderTech->GetShader(); 1234 shader->Uniform(str_color, 0.0f, 1.0f, 0.0f, 1.0f); 1235 shader->Uniform(str_transform, m_ViewCamera.GetViewProjection()); 1236 1237 m->particleRenderer.RenderBounds(cullGroup, shader); 1238 1239 shaderTech->EndPass(); 1227 m->particleRenderer.RenderBounds(cullGroup); 1240 1228 1241 1229 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); -
ps/trunk/source/renderer/ShadowMap.cpp
r25328 r25329 655 655 void ShadowMap::RenderDebugBounds() 656 656 { 657 CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid);658 shaderTech->BeginPass();659 CShaderProgramPtr shader = shaderTech->GetShader();660 661 657 glDepthMask(0); 662 658 glDisable(GL_CULL_FACE); … … 668 664 // Blue = frustum used for rendering the shadow map 669 665 670 shader->Uniform(str_transform, g_Renderer.GetViewCamera().GetViewProjection() * m->InvLightTransform); 671 672 shader->Uniform(str_color, 1.0f, 1.0f, 0.0f, 1.0f); 673 g_Renderer.GetDebugRenderer().DrawBoundingBoxOutline(m->ShadowReceiverBound, shader); 674 675 shader->Uniform(str_color, 0.0f, 1.0f, 0.0f, 1.0f); 676 g_Renderer.GetDebugRenderer().DrawBoundingBoxOutline(m->ShadowCasterBound, shader); 677 666 const CMatrix3D transform = g_Renderer.GetViewCamera().GetViewProjection() * m->InvLightTransform; 667 668 g_Renderer.GetDebugRenderer().DrawBoundingBoxOutline(m->ShadowReceiverBound, CColor(1.0f, 1.0f, 0.0f, 1.0f), transform); 669 g_Renderer.GetDebugRenderer().DrawBoundingBoxOutline(m->ShadowCasterBound, CColor(0.0f, 1.0f, 0.0f, 1.0f), transform); 678 670 glEnable(GL_BLEND); 679 671 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 680 shader->Uniform(str_color, 0.0f, 0.0f, 1.0f, 0.25f); 681 g_Renderer.GetDebugRenderer().DrawBoundingBox(m->ShadowRenderBound, shader); 672 g_Renderer.GetDebugRenderer().DrawBoundingBox(m->ShadowRenderBound, CColor(0.0f, 0.0f, 1.0f, 0.25f), transform); 682 673 glDisable(GL_BLEND); 683 684 shader->Uniform(str_color, 0.0f, 0.0f, 1.0f, 1.0f); 685 g_Renderer.GetDebugRenderer().DrawBoundingBoxOutline(m->ShadowRenderBound, shader); 674 g_Renderer.GetDebugRenderer().DrawBoundingBoxOutline(m->ShadowRenderBound, CColor(0.0f, 0.0f, 1.0f, 1.0f), transform); 686 675 687 676 // Render light frustum 688 689 shader->Uniform(str_transform, g_Renderer.GetViewCamera().GetViewProjection());690 677 691 678 CFrustum frustum = GetShadowCasterCullFrustum(); … … 699 686 glEnable(GL_BLEND); 700 687 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 701 shader->Uniform(str_color, 1.0f, 0.0f, 0.0f, 0.25f); 702 g_Renderer.GetDebugRenderer().DrawBrush(frustumBrush, shader); 688 g_Renderer.GetDebugRenderer().DrawBrush(frustumBrush, CColor(1.0f, 0.0f, 0.0f, 0.25f)); 703 689 glDisable(GL_BLEND); 704 705 shader->Uniform(str_color, 1.0f, 0.0f, 0.0f, 1.0f); 706 g_Renderer.GetDebugRenderer().DrawBrushOutline(frustumBrush, shader); 707 708 shaderTech->EndPass(); 690 g_Renderer.GetDebugRenderer().DrawBrushOutline(frustumBrush, CColor(1.0f, 0.0f, 0.0f, 1.0f)); 709 691 710 692 glEnable(GL_CULL_FACE); -
ps/trunk/source/renderer/SilhouetteRenderer.cpp
r25278 r25329 445 445 void SilhouetteRenderer::RenderDebugOverlays(const CCamera& camera) 446 446 { 447 CShaderTechniquePtr shaderTech = g_Renderer.GetShaderManager().LoadEffect(str_gui_solid); 448 shaderTech->BeginPass(); 449 CShaderProgramPtr shader = shaderTech->GetShader(); 447 if (m_DebugBounds.empty() && m_DebugRects.empty()) 448 return; 450 449 451 450 glDepthMask(0); 452 451 glDisable(GL_CULL_FACE); 453 452 454 shader->Uniform(str_transform, camera.GetViewProjection());455 456 453 for (size_t i = 0; i < m_DebugBounds.size(); ++i) 457 { 458 shader->Uniform(str_color, m_DebugBounds[i].color); 459 g_Renderer.GetDebugRenderer().DrawBoundingBoxOutline(m_DebugBounds[i].bounds, shader); 460 } 454 g_Renderer.GetDebugRenderer().DrawBoundingBoxOutline(m_DebugBounds[i].bounds, m_DebugBounds[i].color); 461 455 462 456 CMatrix3D m; … … 469 463 m = proj * m; 470 464 465 466 467 468 469 471 470 shader->Uniform(str_transform, proj); 472 471
Note:
See TracChangeset
for help on using the changeset viewer.