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 render index is part of the Hydra 1.0 API and is only used for emulation purposes so that HdScene...
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...