24 #ifndef PXR_IMAGING_HDX_SHADOW_TASK_H
25 #define PXR_IMAGING_HDX_SHADOW_TASK_H
28 #include "pxr/imaging/hdx/api.h"
29 #include "pxr/imaging/hdx/version.h"
30 #include "pxr/imaging/hd/enums.h"
31 #include "pxr/imaging/hd/task.h"
39 PXR_NAMESPACE_OPEN_SCOPE
46 using HdStRenderPassShaderSharedPtr =
47 std::shared_ptr<class HdStRenderPassShader>;
48 using HdStShaderCodeSharedPtr =
49 std::shared_ptr<class HdStShaderCode>;
51 using HdRenderPassSharedPtr = std::shared_ptr<class HdRenderPass>;
52 using HdRenderPassSharedPtrVector = std::vector<HdRenderPassSharedPtr>;
53 using HdStRenderPassStateSharedPtr = std::shared_ptr<class HdStRenderPassState>;
54 using HdStRenderPassStateSharedPtrVector =
55 std::vector<HdStRenderPassStateSharedPtr>;
59 struct HdxShadowTaskParams
64 , enableLighting(false)
65 , enableIdRender(false)
66 , enableSceneMaterials(true)
68 , depthBiasEnable(false)
69 , depthBiasConstantFactor(0.0f)
70 , depthBiasSlopeFactor(1.0f)
71 , depthFunc(HdCmpFuncLEqual)
72 , cullStyle(HdCullStyleBackUnlessDoubleSided)
80 bool enableSceneMaterials;
83 float depthBiasConstantFactor;
84 float depthBiasSlopeFactor;
85 HdCompareFunction depthFunc;
86 HdCullStyle cullStyle;
100 ~HdxShadowTask()
override;
106 HdDirtyBits* dirtyBits)
override;
110 void Prepare(HdTaskContext* ctx,
115 void Execute(HdTaskContext* ctx)
override;
123 void _UpdateDirtyParams(HdStRenderPassStateSharedPtr &renderPassState,
124 HdxShadowTaskParams
const ¶ms);
126 HdRenderPassSharedPtrVector _passes;
127 HdStRenderPassStateSharedPtrVector _renderPassStates;
128 HdxShadowTaskParams _params;
132 HdxShadowTask() =
delete;
133 HdxShadowTask(
const HdxShadowTask &) =
delete;
134 HdxShadowTask &operator =(
const HdxShadowTask &) =
delete;
139 std::ostream&
operator<<(std::ostream& out,
const HdxShadowTaskParams& pv);
141 bool operator==(
const HdxShadowTaskParams& lhs,
const HdxShadowTaskParams& rhs);
143 bool operator!=(
const HdxShadowTaskParams& lhs,
const HdxShadowTaskParams& rhs);
146 PXR_NAMESPACE_CLOSE_SCOPE
148 #endif //PXR_IMAGING_HDX_SHADOW_TASK_H
HDX_API void Sync(HdSceneDelegate *delegate, HdTaskContext *ctx, HdDirtyBits *dirtyBits) override
Sync the render pass resources.
The Hydra render index is a flattened representation of the client scene graph, which may be composed...
HDX_API const TfTokenVector & GetRenderTags() const override
Collect Render Tags used by the task.
Standard pointer typedefs.
AR_API bool operator!=(const ArAssetInfo &lhs, const ArAssetInfo &rhs)
A set of rendering parameters used among render passes.
HDX_API void Execute(HdTaskContext *ctx) override
Execute render pass task.
HDX_API void Prepare(HdTaskContext *ctx, HdRenderIndex *renderIndex) override
Prepare the tasks resources.
AR_API bool operator==(const ArAssetInfo &lhs, const ArAssetInfo &rhs)
#define TF_DECLARE_WEAK_AND_REF_PTRS(type)
Define standard weak, ref, and vector pointer types.
Adapter class providing data exchange with the client scene graph.
std::vector< TfToken > TfTokenVector
Convenience types.
A path value used to locate objects in layers or scenegraphs.
Basic type for a vector of 4 float components.
GF_API std::ostream & operator<<(std::ostream &, const GfBBox3d &)
Output a GfBBox3d using the format [(range) matrix zeroArea].
A task for generating shadow maps.