Loading...
Searching...
No Matches
oitRenderTask.h
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"
12#include "pxr/imaging/hdx/version.h"
13#include "pxr/imaging/hdx/renderTask.h"
14
15#include <memory>
16
17PXR_NAMESPACE_OPEN_SCOPE
18
19using HdStRenderPassShaderSharedPtr = std::shared_ptr<HdStRenderPassShader>;
20
27{
28public:
29 HDX_API
30 HdxOitRenderTask(HdSceneDelegate* delegate, SdfPath const& id);
31
32 HDX_API
33 ~HdxOitRenderTask() override;
34
35 HDX_API
36 bool IsConverged() const override;
37
39 HDX_API
40 void Prepare(HdTaskContext* ctx,
41 HdRenderIndex* renderIndex) override;
42
44 HDX_API
45 void Execute(HdTaskContext* ctx) override;
46
47protected:
49 HDX_API
50 void _Sync(HdSceneDelegate* delegate,
51 HdTaskContext* ctx,
52 HdDirtyBits* dirtyBits) override;
53
54 HdRenderPassStateSharedPtr _GetTranslucentPassState() const {
55 return _translucentPassState;
56 }
57
58private:
59 HdxOitRenderTask() = delete;
60 HdxOitRenderTask(const HdxOitRenderTask &) = delete;
61 HdxOitRenderTask &operator =(const HdxOitRenderTask &) = delete;
62
63 HdStRenderPassShaderSharedPtr _translucentPassShader;
64 HdStRenderPassShaderSharedPtr _opaquePassShader;
65 HdRenderPassStateSharedPtr _translucentPassState;
66 HdRenderPassSharedPtr _translucentPass;
67 // Set at initialization time.
68 const bool _isOitEnabled;
69 // Prepare() does a bunch of analysis to figure out whether the OIT
70 // task should run this frame.
71 bool _oitShouldDraw;
72};
73
74
75PXR_NAMESPACE_CLOSE_SCOPE
76
77#endif //PXR_IMAGING_HDX_OIT_RENDER_TASK_H
The render index is part of the Hydra 1.0 API and is only used for emulation purposes so that HdScene...
Adapter class providing data exchange with the client scene graph.
A task for rendering transparent geometry into OIT buffers.
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.
HDX_API bool IsConverged() const override
This function returns true when a (progressive) task considers its execution results converged.
A task for rendering geometry to pixels.
Definition renderTask.h:50
A path value used to locate objects in layers or scenegraphs.
Definition path.h:281