Loading...
Searching...
No Matches
shadowTask.h
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"
12#include "pxr/imaging/hdx/version.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
22PXR_NAMESPACE_OPEN_SCOPE
23
24class GlfSimpleLight;
25class HdRenderIndex;
26class HdSceneDelegate;
28
29using HdStRenderPassShaderSharedPtr =
30 std::shared_ptr<class HdStRenderPassShader>;
31using HdStShaderCodeSharedPtr =
32 std::shared_ptr<class HdStShaderCode>;
33
34using HdRenderPassSharedPtr = std::shared_ptr<class HdRenderPass>;
35using HdRenderPassSharedPtrVector = std::vector<HdRenderPassSharedPtr>;
36using HdStRenderPassStateSharedPtr = std::shared_ptr<class HdStRenderPassState>;
37using HdStRenderPassStateSharedPtrVector =
38 std::vector<HdStRenderPassStateSharedPtr>;
39
40TF_DECLARE_WEAK_AND_REF_PTRS(GlfSimpleShadowArray);
41
42struct HdxShadowTaskParams
43{
44 HdxShadowTaskParams()
45 : overrideColor(0.0)
46 , wireframeColor(0.0)
47 , enableLighting(false)
48 , alphaThreshold(0.0)
49 , depthBiasEnable(false)
50 , depthBiasConstantFactor(0.0f)
51 , depthBiasSlopeFactor(1.0f)
52 , depthFunc(HdCmpFuncLEqual)
53 , cullStyle(HdCullStyleBackUnlessDoubleSided)
54 {}
55
56 // RenderPassState
57 GfVec4f overrideColor;
58 GfVec4f wireframeColor;
59 bool enableLighting;
60 float alphaThreshold;
61 bool depthBiasEnable;
62 float depthBiasConstantFactor;
63 float depthBiasSlopeFactor;
64 HdCompareFunction depthFunc;
65 HdCullStyle cullStyle;
66};
67
72class HdxShadowTask : public HdTask
73{
74public:
75 using TaskParams = HdxShadowTaskParams;
76
77 HDX_API
78 HdxShadowTask(HdSceneDelegate* delegate, SdfPath const& id);
79
80 HDX_API
81 ~HdxShadowTask() override;
82
84 HDX_API
85 void Sync(HdSceneDelegate* delegate,
86 HdTaskContext* ctx,
87 HdDirtyBits* dirtyBits) override;
88
90 HDX_API
91 void Prepare(HdTaskContext* ctx,
92 HdRenderIndex* renderIndex) override;
93
95 HDX_API
96 void Execute(HdTaskContext* ctx) override;
97
99 HDX_API
100 const TfTokenVector &GetRenderTags() const override;
101
102
103private:
104 void _UpdateDirtyParams(HdStRenderPassStateSharedPtr &renderPassState,
105 HdxShadowTaskParams const &params);
106
107 HdRenderPassSharedPtrVector _passes;
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
119HDX_API
120std::ostream& operator<<(std::ostream& out, const HdxShadowTaskParams& pv);
121HDX_API
122bool operator==(const HdxShadowTaskParams& lhs, const HdxShadowTaskParams& rhs);
123HDX_API
124bool operator!=(const HdxShadowTaskParams& lhs, const HdxShadowTaskParams& rhs);
125
126
127PXR_NAMESPACE_CLOSE_SCOPE
128
129#endif //PXR_IMAGING_HDX_SHADOW_TASK_H
Basic type for a vector of 4 float components.
Definition: vec4f.h:46
The Hydra render index is a flattened representation of the client scene graph, which may be composed...
Definition: renderIndex.h:105
Adapter class providing data exchange with the client scene graph.
A set of rendering parameters used among render passes.
HdTask represents a unit of work to perform during a Hydra render.
Definition: task.h:44
A task for generating shadow maps.
Definition: shadowTask.h:73
HDX_API const TfTokenVector & GetRenderTags() const override
Collect Render Tags used by the task.
HDX_API void Sync(HdSceneDelegate *delegate, HdTaskContext *ctx, HdDirtyBits *dirtyBits) override
Sync the render pass resources.
HDX_API void Prepare(HdTaskContext *ctx, HdRenderIndex *renderIndex) override
Prepare the tasks resources.
HDX_API void Execute(HdTaskContext *ctx) override
Execute render pass task.
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:274
Standard pointer typedefs.
#define TF_DECLARE_WEAK_AND_REF_PTRS(type)
Define standard weak, ref, and vector pointer types.
Definition: declarePtrs.h:72
GF_API std::ostream & operator<<(std::ostream &, const GfBBox3d &)
Output a GfBBox3d using the format [(range) matrix zeroArea].
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440