HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
oitRenderTask.h
Go to the documentation of this file.
1 //
2 // Copyright 2019 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_OIT_RENDER_TASK_H
8 #define PXR_IMAGING_HDX_OIT_RENDER_TASK_H
9 
10 #include "pxr/pxr.h"
11 #include "pxr/imaging/hdx/api.h"
14 
15 #include <memory>
16 
18 
19 using HdStRenderPassShaderSharedPtr = std::shared_ptr<HdStRenderPassShader>;
20 
21 /// \class HdxOitRenderTask
22 ///
23 /// A task for rendering transparent geometry into OIT buffers.
24 /// Its companion task, OITResolveTask, will blend the buffers to screen.
25 ///
27 {
28 public:
29  HDX_API
30  HdxOitRenderTask(HdSceneDelegate* delegate, SdfPath const& id);
31 
32  HDX_API
33  ~HdxOitRenderTask() override;
34 
35  /// Prepare the tasks resources
36  HDX_API
37  void Prepare(HdTaskContext* ctx,
38  HdRenderIndex* renderIndex) override;
39 
40  /// Execute render pass task
41  HDX_API
42  void Execute(HdTaskContext* ctx) override;
43 
44 protected:
45  /// Sync the render pass resources
46  HDX_API
47  void _Sync(HdSceneDelegate* delegate,
48  HdTaskContext* ctx,
49  HdDirtyBits* dirtyBits) override;
50 
51 private:
52  HdxOitRenderTask() = delete;
53  HdxOitRenderTask(const HdxOitRenderTask &) = delete;
54  HdxOitRenderTask &operator =(const HdxOitRenderTask &) = delete;
55 
56  HdStRenderPassShaderSharedPtr _oitTranslucentRenderPassShader;
57  HdStRenderPassShaderSharedPtr _oitOpaqueRenderPassShader;
58  const bool _isOitEnabled;
59 };
60 
61 
63 
64 #endif //PXR_IMAGING_HDX_OIT_RENDER_TASK_H
uint32_t HdDirtyBits
Definition: types.h:143
#define HDX_API
Definition: api.h:23
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.
Definition: path.h:273
std::unordered_map< TfToken, VtValue, TfToken::HashFunctor > HdTaskContext
Definition: renderIndex.h:61
std::shared_ptr< class HdStRenderPassShader > HdStRenderPassShaderSharedPtr
HDX_API ~HdxOitRenderTask() override
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
HDX_API void Prepare(HdTaskContext *ctx, HdRenderIndex *renderIndex) override
Prepare the tasks resources.
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74