All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InteriorsRenderableFilter.h
1 // Copyright (c) 2015 eeGeo. All rights reserved.
2 
3 #pragma once
4 
5 #include "IRenderableFilter.h"
6 #include "Interiors.h"
7 #include "Rendering.h"
8 #include "Culling.h"
9 
10 #include <vector>
11 #include <deque>
12 #include <iterator>
13 
14 namespace Eegeo
15 {
16  namespace Rendering
17  {
18  namespace Filters
19  {
21  {
22  public:
24  const Rendering::EnvironmentFlatteningService& environmentFlatteningService,
25  Culling::CullingVolumeVisibilityUpdater& cullingVolumeVisibilityUpdater);
26 
27  void EnqueueRenderables(const Rendering::RenderContext& renderContext, RenderQueue& renderQueue);
28 
29  private:
30 
31  typedef std::deque<std::pair<Rendering::Renderables::InteriorRenderable*, float> > TRenderableDepthList;
32  typedef std::deque<Resources::Interiors::InteriorsStencilMirrorClearRenderable*> TStencilClearRenderableList;
33  void EnqueueRenderablesForFloorCells(const std::vector<const Resources::Interiors::InteriorsFloorCell*>& floorCells, const Rendering::RenderContext& renderContext, RenderQueue& renderQueue, std::back_insert_iterator<TRenderableDepthList> translucentRenderables, std::back_insert_iterator<TStencilClearRenderableList> stencilClearRenderables);
34  void EnqueueRenderablesForInteriorsFloorCell(const Resources::Interiors::InteriorsFloorCell& interiorsFloorCell, const Rendering::RenderContext& renderContext, RenderQueue& renderQueue, std::back_insert_iterator<TRenderableDepthList> translucentRenderables, std::back_insert_iterator<TStencilClearRenderableList> stencilClearRenderables);
35  void EnqueueInteriorRenderable(Rendering::Renderables::InteriorRenderable& interiorRenderable, const Rendering::RenderContext& renderContext, RenderQueue& renderQueue, std::back_insert_iterator<TRenderableDepthList> translucentRenderables);
36  void EnqueueDepthSortedInteriorRenderables(TRenderableDepthList::iterator first, TRenderableDepthList::iterator last, RenderQueue& renderQueue) const;
37 
38  const Resources::Interiors::InteriorViewModel& m_interiorViewModel;
39  const Rendering::EnvironmentFlatteningService& m_environmentFlatteningService;
40  Culling::CullingVolumeVisibilityUpdater& m_cullingVolumeVisibilityUpdater;
41 
42  TRenderableDepthList m_translucentRenderables;
43  TStencilClearRenderableList m_stencilClearRenderables;
44  };
45  }
46  }
47 }