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  , alphaThreshold(0.0)
49  , depthBiasEnable(false)
54  {}
55 
56  // RenderPassState
66 };
67 
68 /// \class HdxShadowTask
69 ///
70 /// A task for generating shadow maps.
71 ///
72 class HdxShadowTask : public HdTask
73 {
74 public:
76 
77  HDX_API
78  HdxShadowTask(HdSceneDelegate* delegate, SdfPath const& id);
79 
80  HDX_API
81  ~HdxShadowTask() override;
82 
83  /// Sync the render pass resources
84  HDX_API
85  void Sync(HdSceneDelegate* delegate,
86  HdTaskContext* ctx,
87  HdDirtyBits* dirtyBits) override;
88 
89  /// Prepare the tasks resources
90  HDX_API
91  void Prepare(HdTaskContext* ctx,
92  HdRenderIndex* renderIndex) override;
93 
94  /// Execute render pass task
95  HDX_API
96  void Execute(HdTaskContext* ctx) override;
97 
98  /// Collect Render Tags used by the task.
99  HDX_API
100  const TfTokenVector &GetRenderTags() const override;
101 
102 
103 private:
104  void _UpdateDirtyParams(HdStRenderPassStateSharedPtr &renderPassState,
105  HdxShadowTaskParams const &params);
106 
108  HdStRenderPassStateSharedPtrVector _renderPassStates;
109  HdxShadowTaskParams _params;
110  TfTokenVector _renderTags;
111 
112 
113  HdxShadowTask() = delete;
114  HdxShadowTask(const HdxShadowTask &) = delete;
115  HdxShadowTask &operator =(const HdxShadowTask &) = delete;
116 };
117 
118 // VtValue requirements
119 HDX_API
120 std::ostream& operator<<(std::ostream& out, const HdxShadowTaskParams& pv);
121 HDX_API
122 bool operator==(const HdxShadowTaskParams& lhs, const HdxShadowTaskParams& rhs);
123 HDX_API
124 bool operator!=(const HdxShadowTaskParams& lhs, const HdxShadowTaskParams& rhs);
125 
126 
128 
129 #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:58
#define PXR_NAMESPACE_OPEN_SCOPE
Definition: pxr.h:73
HdCompareFunction depthFunc
Definition: shadowTask.h:64
#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:57
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:280
std::unordered_map< TfToken, VtValue, TfToken::HashFunctor > HdTaskContext
Definition: renderIndex.h:61
std::shared_ptr< class HdStRenderPassShader > HdStRenderPassShaderSharedPtr
Definition: vec4f.h:45
float depthBiasSlopeFactor
Definition: shadowTask.h:63
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
float depthBiasConstantFactor
Definition: shadowTask.h:62
HdCullStyle cullStyle
Definition: shadowTask.h:65
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