Loading...
Searching...
No Matches
renderPassShader.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_HD_ST_RENDER_PASS_SHADER_H
8#define PXR_IMAGING_HD_ST_RENDER_PASS_SHADER_H
9
10#include "pxr/pxr.h"
11#include "pxr/imaging/hdSt/api.h"
12#include "pxr/imaging/hdSt/binding.h"
13#include "pxr/imaging/hdSt/shaderCode.h"
14#include "pxr/imaging/hd/enums.h"
16
18#include "pxr/base/tf/token.h"
19
20#include <memory>
21
22PXR_NAMESPACE_OPEN_SCOPE
23
24using HdStRenderPassShaderSharedPtr =
25 std::shared_ptr<class HdStRenderPassShader>;
27class HdRenderIndex;
28using HdRenderPassAovBindingVector =
29 std::vector<struct HdRenderPassAovBinding>;
30
36public:
37 HDST_API
39 HDST_API
40 HdStRenderPassShader(TfToken const &glslfxFile);
41 HDST_API
42 HdStRenderPassShader(HioGlslfxSharedPtr const &glslfx);
43 HDST_API
44 ~HdStRenderPassShader() override;
45
47 HDST_API
48 ID ComputeHash() const override;
49 HDST_API
50 std::string GetSource(TfToken const &shaderStageKey) const override;
51 HDST_API
52 void BindResources(int program,
53 HdSt_ResourceBinder const &binder) override;
54 HDST_API
55 void UnbindResources(int program,
56 HdSt_ResourceBinder const &binder) override;
57 HDST_API
58 void AddBindings(HdStBindingRequestVector *customBindings) override;
59 HDST_API
60 HdSt_MaterialParamVector const& GetParams() const override;
61
62 HDST_API
63 NamedTextureHandleVector const & GetNamedTextureHandles() const override;
64
66 HDST_API
68
70 HDST_API
71 void RemoveBufferBinding(TfToken const &name);
72
74 HDST_API
76
77 // Sets the textures and params such that the shader can access
78 // the requested aovs with HdGet_AOVNAMEReadback().
79 //
80 // Needs to be called in task prepare or sync since it is
81 // allocating texture handles.
82 //
83 HDST_API
84 void UpdateAovInputTextures(
85 HdRenderPassAovBindingVector const &aovInputBindings,
86 HdRenderIndex * const renderIndex);
87
88 HDST_API
89 static
90 HdStRenderPassShaderSharedPtr
91 CreateRenderPassShaderFromAovs(
92 HdStRenderPassState *renderPassState,
93 HdStResourceRegistrySharedPtr const &resourceRegistry,
94 HdRenderPassAovBindingVector const &aovBindings);
95
96private:
97 HioGlslfxSharedPtr _glslfx;
98 mutable size_t _hash;
99 mutable bool _hashValid;
100
101 // Lexicographic ordering for stable output between runs.
102 std::map<TfToken, HdStBindingRequest> _customBuffers;
103
104 NamedTextureHandleVector _namedTextureHandles;
105
106 HdSt_MaterialParamVector _params;
107
108 // No copying
110 HdStRenderPassShader &operator =(const HdStRenderPassShader &) = delete;
111
112 HioGlslfx const * _GetGlslfx() const override;
113};
114
115
116PXR_NAMESPACE_CLOSE_SCOPE
117
118#endif // PXR_IMAGING_HD_ST_RENDER_PASS_SHADER_H
The Hydra render index is a flattened representation of the client scene graph, which may be composed...
Definition: renderIndex.h:105
BindingRequest allows externally allocated buffers to be bound at render time.
Definition: binding.h:111
A shader that supports common renderPass functionality.
HDST_API void RemoveBufferBinding(TfToken const &name)
Remove name from custom binding.
HDST_API void AddBufferBinding(HdStBindingRequest const &req)
Add a custom binding request for use when this shader executes.
HDST_API void AddBindings(HdStBindingRequestVector *customBindings) override
Add custom bindings (used by codegen)
HDST_API void ClearBufferBindings()
Clear all custom bindings associated with this shader.
HDST_API std::string GetSource(TfToken const &shaderStageKey) const override
Returns the shader source provided by this shader for shaderStageKey.
HDST_API ID ComputeHash() const override
HdShader overrides.
HDST_API void UnbindResources(int program, HdSt_ResourceBinder const &binder) override
Unbinds shader-specific resources.
HDST_API void BindResources(int program, HdSt_ResourceBinder const &binder) override
Binds shader-specific resources to program XXX: this interface is meant to be used for bridging the G...
HDST_API NamedTextureHandleVector const & GetNamedTextureHandles() const override
Textures that need to be bound for this shader.
HDST_API HdSt_MaterialParamVector const & GetParams() const override
Returns the shader parameters for this shader.
A set of rendering parameters used among render passes.
A base class representing the implementation (code) of a shader, used in conjunction with HdRenderPas...
Definition: shaderCode.h:59
A class representing the config and shader source of a glslfx file.
Definition: glslfx.h:134
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:71
Standard pointer typedefs.
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...