10 #ifndef hifi_GameWorkloadRenderer_h
11 #define hifi_GameWorkloadRenderer_h
13 #include "GameWorkload.h"
15 class GameSpaceToRenderConfig :
public workload::Job::Config {
17 Q_PROPERTY(
bool freezeViews MEMBER freezeViews NOTIFY dirty)
18 Q_PROPERTY(
bool showProxies MEMBER showProxies NOTIFY dirty)
19 Q_PROPERTY(
bool showViews MEMBER showViews NOTIFY dirty)
22 bool freezeViews{
false };
23 bool showProxies{
false };
24 bool showViews{
false };
31 class GameSpaceToRender {
33 using Config = GameSpaceToRenderConfig;
34 using Outputs = render::Transaction;
35 using JobModel = workload::Job::ModelO<GameSpaceToRender, Outputs, Config>;
37 GameSpaceToRender() {}
39 void configure(
const Config& config);
40 void run(
const workload::WorkloadContextPointer& renderContext, Outputs& outputs);
43 render::ItemID _spaceRenderItemID{ render::Item::INVALID_ITEM_ID };
44 bool _freezeViews{
false };
45 bool _showAllProxies{
false };
46 bool _showAllViews{
false };
50 class GameWorkloadRenderItem {
52 using Payload = render::Payload<GameWorkloadRenderItem>;
53 using Pointer = Payload::DataPointer;
55 GameWorkloadRenderItem();
56 ~GameWorkloadRenderItem() {}
57 void render(RenderArgs* args);
59 render::Item::Bound& editBound() {
return _bound; }
60 const render::Item::Bound& getBound(RenderArgs* args) {
return _bound; }
62 void setVisible(
bool visible);
63 void showProxies(
bool show);
64 void showViews(
bool show);
66 void setAllProxies(
const workload::Proxy::Vector& proxies);
67 void setAllViews(
const workload::Views& views);
69 render::ItemKey getKey()
const;
72 render::Item::Bound _bound;
74 workload::Proxy::Vector _myOwnProxies;
75 gpu::BufferPointer _allProxiesBuffer;
76 uint32_t _numAllProxies{ 0 };
78 workload::Views _myOwnViews;
79 gpu::BufferPointer _allViewsBuffer;
80 uint32_t _numAllViews{ 0 };
82 gpu::PipelinePointer _drawAllProxiesPipeline;
83 const gpu::PipelinePointer getProxiesPipeline();
85 gpu::PipelinePointer _drawAllViewsPipeline;
86 const gpu::PipelinePointer getViewsPipeline();
88 uint32_t _numDrawViewVerts{ 0 };
89 gpu::BufferPointer _drawViewBuffer;
90 const gpu::BufferPointer getDrawViewBuffer();
93 bool _showProxies{
true };
94 bool _showViews{
true };
98 template <>
const ItemKey payloadGetKey(
const GameWorkloadRenderItem::Pointer& payload);
99 template <>
const Item::Bound payloadGetBound(
const GameWorkloadRenderItem::Pointer& payload, RenderArgs* args);
100 template <>
void payloadRender(
const GameWorkloadRenderItem::Pointer& payload, RenderArgs* args);
101 template <>
const ShapeKey shapeGetShapeKey(
const GameWorkloadRenderItem::Pointer& payload);