HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
shadowTask.h
Go to the documentation of this file.
1 //
2 // Copyright 2016 Pixar
3 //
4 // Licensed under the terms set forth in the LICENSE.txt file available at
5 // https://openusd.org/license.
6 //
7 #ifndef PXR_IMAGING_HDX_SHADOW_TASK_H
8 #define PXR_IMAGING_HDX_SHADOW_TASK_H
9 
10 #include "pxr/pxr.h"
11 #include "pxr/imaging/hdx/api.h"
13 #include "pxr/imaging/hd/enums.h"
14 #include "pxr/imaging/hd/task.h"
15 
16 #include "pxr/base/gf/vec4f.h"
17 #include "pxr/base/gf/vec4d.h"
19 
20 #include <memory>
21 
23 
24 class GlfSimpleLight;
25 class HdRenderIndex;
26 class HdSceneDelegate;
28 
30  std::shared_ptr<class HdStRenderPassShader>;
32  std::shared_ptr<class HdStShaderCode>;
33 
34 using HdRenderPassSharedPtr = std::shared_ptr<class HdRenderPass>;
35 using HdRenderPassSharedPtrVector = std::vector<HdRenderPassSharedPtr>;
36 using HdStRenderPassStateSharedPtr = std::shared_ptr<class HdStRenderPassState>;
38  std::vector<HdStRenderPassStateSharedPtr>;
39 
41 
43 {
45  : overrideColor(0.0)
46  , wireframeColor(0.0)
47  , enableLighting(false)
48  , enableSceneMaterials(true)
49  , alphaThreshold(0.0)
50  , depthBiasEnable(false)
55  {}
56 
57  // RenderPassState
68 };
69 
70 /// \class HdxShadowTask
71 ///
72 /// A task for generating shadow maps.
73 ///
74 class HdxShadowTask : public HdTask
75 {
76 public:
78 
79  HDX_API
80  HdxShadowTask(HdSceneDelegate* delegate, SdfPath const& id);
81 
82  HDX_API
83  ~HdxShadowTask() override;
84 
85  /// Sync the render pass resources
86  HDX_API
87  void Sync(HdSceneDelegate* delegate,
88  HdTaskContext* ctx,
89  HdDirtyBits* dirtyBits) override;
90 
91  /// Prepare the tasks resources
92  HDX_API
93  void Prepare(HdTaskContext* ctx,
94  HdRenderIndex* renderIndex) override;
95 
96  /// Execute render pass task
97  HDX_API
98  void Execute(HdTaskContext* ctx) override;
99 
100  /// Collect Render Tags used by the task.
101  HDX_API
102  const TfTokenVector &GetRenderTags() const override;
103 
104 
105 private:
106  void _UpdateDirtyParams(HdStRenderPassStateSharedPtr &renderPassState,
107  HdxShadowTaskParams const &params);
108 
110  HdStRenderPassStateSharedPtrVector _renderPassStates;
111  HdxShadowTaskParams _params;
112  TfTokenVector _renderTags;
113 
114 
115  HdxShadowTask() = delete;
116  HdxShadowTask(const HdxShadowTask &) = delete;
117  HdxShadowTask &operator =(const HdxShadowTask &) = delete;
118 };
119 
120 // VtValue requirements
121 HDX_API
122 std::ostream& operator<<(std::ostream& out, const HdxShadowTaskParams& pv);
123 HDX_API
124 bool operator==(const HdxShadowTaskParams& lhs, const HdxShadowTaskParams& rhs);
125 HDX_API
126 bool operator!=(const HdxShadowTaskParams& lhs, const HdxShadowTaskParams& rhs);
127 
128 
130 
131 #endif //PXR_IMAGING_HDX_SHADOW_TASK_H
std::vector< HdStRenderPassStateSharedPtr > HdStRenderPassStateSharedPtrVector
Definition: shadowTask.h:38
TF_DECLARE_WEAK_AND_REF_PTRS(GlfSimpleShadowArray)
HdCompareFunction
Definition: enums.h:19
std::shared_ptr< class HdStShaderCode > HdStShaderCodeSharedPtr
HdCullStyle
Definition: enums.h:105
std::shared_ptr< class HdRenderPass > HdRenderPassSharedPtr
Definition: engine.h:24
uint32_t HdDirtyBits
Definition: types.h:143
GfVec4f wireframeColor
Definition: shadowTask.h:59
HdCompareFunction depthFunc
Definition: shadowTask.h:66
#define HDX_API
Definition: api.h:23
HDX_API std::ostream & operator<<(std::ostream &out, const HdxShadowTaskParams &pv)
GLenum const GLfloat * params
Definition: glcorearb.h:105
HDX_API ~HdxShadowTask() override
std::shared_ptr< class HdStRenderPassState > HdStRenderPassStateSharedPtr
Definition: commandBuffer.h:28
GfVec4f overrideColor
Definition: shadowTask.h:58
HDX_API const TfTokenVector & GetRenderTags() const override
Collect Render Tags used by the task.
HDX_API void Prepare(HdTaskContext *ctx, HdRenderIndex *renderIndex) override
Prepare the tasks resources.
GLfloat f
Definition: glcorearb.h:1926
bool operator!=(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Inequality operator, does exact floating point comparisons.
Definition: Mat3.h:556
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440
Definition: task.h:43
Definition: path.h:273
std::unordered_map< TfToken, VtValue, TfToken::HashFunctor > HdTaskContext
Definition: renderIndex.h:61
std::shared_ptr< class HdStRenderPassShader > HdStRenderPassShaderSharedPtr
Definition: vec4f.h:45
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
float depthBiasSlopeFactor
Definition: shadowTask.h:65
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
float depthBiasConstantFactor
Definition: shadowTask.h:64
HdCullStyle cullStyle
Definition: shadowTask.h:67
std::vector< HdRenderPassSharedPtr > HdRenderPassSharedPtrVector
Definition: shadowTask.h:35
HDX_API void Sync(HdSceneDelegate *delegate, HdTaskContext *ctx, HdDirtyBits *dirtyBits) override
Sync the render pass resources.
HDX_API void Execute(HdTaskContext *ctx) override
Execute render pass task.
bool operator==(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Equality operator, does exact floating point comparisons.
Definition: Mat3.h:542