Overte C++ Documentation
RenderViewTask.h
1 //
2 // RenderViewTask.h
3 // render-utils/src/
4 //
5 // Created by Sam Gateau on 5/25/2017.
6 // Copyright 2017 High Fidelity, Inc.
7 // Copyright 2024 Overte e.V.
8 //
9 // Distributed under the Apache License, Version 2.0.
10 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
11 //
12 #pragma once
13 #ifndef hifi_RenderViewTask_h
14 #define hifi_RenderViewTask_h
15 
16 #include <render/Engine.h>
17 #include <render/RenderFetchCullSortTask.h>
18 
19 #include "AssembleLightingStageTask.h"
20 
21 class RenderShadowsAndDeferredTask {
22 public:
23  using Input = render::VaryingSet3<RenderFetchCullSortTask::Output, LightingModelPointer, AssembleLightingStageTask::Output>;
24  using JobModel = render::Task::ModelI<RenderShadowsAndDeferredTask, Input>;
25 
26  RenderShadowsAndDeferredTask() {}
27 
28  void build(JobModel& task, const render::Varying& inputs, render::Varying& outputs, render::CullFunctor cullFunctor,
29  uint8_t tagBits, uint8_t tagMask, uint8_t transformOffset, size_t depth);
30 };
31 
32 class DeferredForwardSwitchJob {
33 public:
34  using Input = render::VaryingSet3<RenderFetchCullSortTask::Output, LightingModelPointer, AssembleLightingStageTask::Output>;
35  using JobModel = render::Switch::ModelI<DeferredForwardSwitchJob, Input>;
36 
37  DeferredForwardSwitchJob() {}
38 
39  void configure(const render::SwitchConfig& config) {}
40  void build(JobModel& task, const render::Varying& inputs, render::Varying& outputs, render::CullFunctor cullFunctor,
41  uint8_t tagBits, uint8_t tagMask, uint8_t transformOffset, size_t depth);
42 };
43 
44 class RenderViewTask {
45 public:
46  using Input = RenderFetchCullSortTask::Output;
47  using JobModel = render::Task::ModelI<RenderViewTask, Input>;
48 
49  RenderViewTask() {}
50 
51  // each view uses 1 transform for the main view, and one for the background, so these need to be increments of 2
52  enum TransformOffset: uint8_t {
53  MAIN_VIEW = 0,
54  SECONDARY_VIEW = 2,
55  FIRST_MIRROR_VIEW = 4
56  };
57 
58  void build(JobModel& task, const render::Varying& inputs, render::Varying& outputs, render::CullFunctor cullFunctor,
59  uint8_t tagBits = 0x00, uint8_t tagMask = 0x00, TransformOffset transformOffset = TransformOffset::MAIN_VIEW, size_t depth = 0);
60 };
61 
62 
63 #endif // hifi_RenderViewTask_h