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 , enableIdRender(false)
49 , enableSceneMaterials(true)
50 , alphaThreshold(0.0)
51 , depthBiasEnable(false)
52 , depthBiasConstantFactor(0.0f)
53 , depthBiasSlopeFactor(1.0f)
54 , depthFunc(HdCmpFuncLEqual)
55 , cullStyle(HdCullStyleBackUnlessDoubleSided)
56 {}
57
58 // RenderPassState
59 GfVec4f overrideColor;
60 GfVec4f wireframeColor;
61 bool enableLighting;
62 bool enableIdRender;
63 bool enableSceneMaterials;
64 float alphaThreshold;
65 bool depthBiasEnable;
66 float depthBiasConstantFactor;
67 float depthBiasSlopeFactor;
68 HdCompareFunction depthFunc;
69 HdCullStyle cullStyle;
70};
71
76class HdxShadowTask : public HdTask
77{
78public:
79 HDX_API
80 HdxShadowTask(HdSceneDelegate* delegate, SdfPath const& id);
81
82 HDX_API
83 ~HdxShadowTask() override;
84
86 HDX_API
87 void Sync(HdSceneDelegate* delegate,
88 HdTaskContext* ctx,
89 HdDirtyBits* dirtyBits) override;
90
92 HDX_API
93 void Prepare(HdTaskContext* ctx,
94 HdRenderIndex* renderIndex) override;
95
97 HDX_API
98 void Execute(HdTaskContext* ctx) override;
99
101 HDX_API
102 const TfTokenVector &GetRenderTags() const override;
103
104
105private:
106 void _UpdateDirtyParams(HdStRenderPassStateSharedPtr &renderPassState,
107 HdxShadowTaskParams const &params);
108
109 HdRenderPassSharedPtrVector _passes;
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
121HDX_API
122std::ostream& operator<<(std::ostream& out, const HdxShadowTaskParams& pv);
123HDX_API
124bool operator==(const HdxShadowTaskParams& lhs, const HdxShadowTaskParams& rhs);
125HDX_API
126bool operator!=(const HdxShadowTaskParams& lhs, const HdxShadowTaskParams& rhs);
127
128
129PXR_NAMESPACE_CLOSE_SCOPE
130
131#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:104
Adapter class providing data exchange with the client scene graph.
A set of rendering parameters used among render passes.
A task for generating shadow maps.
Definition: shadowTask.h:77
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