HDK
|
#include <shaderCode.h>
Classes | |
struct | NamedTextureHandle |
class | ResourceContext |
Public Types | |
typedef size_t | ID |
Public Member Functions | |
HDST_API | HdStShaderCode () |
virtual HDST_API | ~HdStShaderCode () |
virtual ID | ComputeHash () const =0 |
virtual ID | ComputeTextureSourceHash () const |
virtual std::string | GetSource (TfToken const &shaderStageKey) const =0 |
HDST_API VtDictionary | GetLayout (TfTokenVector const &shaderStageKeys) const |
virtual HDST_API HdSt_MaterialParamVector const & | GetParams () const |
Returns the shader parameters for this shader. More... | |
virtual HDST_API bool | IsEnabledPrimvarFiltering () const |
Returns whether primvar filtering is enabled for this shader. More... | |
virtual HDST_API TfTokenVector const & | GetPrimvarNames () const |
Returns the names of primvar that are used by this shader. More... | |
virtual HDST_API HdBufferArrayRangeSharedPtr const & | GetShaderData () const |
virtual void | BindResources (int program, HdSt_ResourceBinder const &binder)=0 |
virtual void | UnbindResources (int program, HdSt_ResourceBinder const &binder)=0 |
Unbinds shader-specific resources. More... | |
virtual void | AddBindings (HdStBindingRequestVector *customBindings)=0 |
Add custom bindings (used by codegen) More... | |
virtual HDST_API TfToken | GetMaterialTag () const |
virtual HDST_API void | AddResourcesFromTextures (ResourceContext &ctx) const |
Static Public Member Functions | |
static HDST_API ID | ComputeHash (HdStShaderCodeSharedPtrVector const &shaders) |
Returns the combined hash values of multiple shaders. More... | |
Texture system | |
using | NamedTextureHandleVector = std::vector< NamedTextureHandle > |
virtual HDST_API NamedTextureHandleVector const & | GetNamedTextureHandles () const |
A base class representing the implementation (code) of a shader, used in conjunction with HdRenderPass.
This interface provides a simple way for clients to affect the composition of shading programs used for a render pass.
Definition at line 75 of file shaderCode.h.
typedef size_t HdStShaderCode::ID |
Definition at line 78 of file shaderCode.h.
using HdStShaderCode::NamedTextureHandleVector = std::vector<NamedTextureHandle> |
Textures that need to be bound for this shader.
Definition at line 160 of file shaderCode.h.
HDST_API HdStShaderCode::HdStShaderCode | ( | ) |
|
virtual |
|
pure virtual |
Add custom bindings (used by codegen)
Implemented in HdSt_GeometricShader, HdStSimpleLightingShader, HdStRenderPassShader, and HdSt_FallbackLightingShader.
|
virtual |
This function is called after textures have been allocated and loaded to add buffer sources and computations to the resource registry that require texture meta data not available until the texture is allocated or loaded. For example, the OpenGl texture sampler handle (in the bindless case) is not available until after the texture commit phase.
Reimplemented in HdStSimpleLightingShader.
|
pure virtual |
Binds shader-specific resources to program XXX: this interface is meant to be used for bridging the GlfSimpleLightingContext mechanism, and not for generic use-cases.
Implemented in HdSt_GeometricShader, HdStSimpleLightingShader, HdStRenderPassShader, and HdSt_FallbackLightingShader.
|
pure virtual |
Returns the hash value of the shader code and configuration.
It is computed from the the GLSL code as well as the resource signature of the shader (as determined from its parameters). If two shaders have the same hash, the GLSL code as expanded by codegen should also be the same.
Implemented in HdSt_GeometricShader, HdStSimpleLightingShader, HdStRenderPassShader, and HdSt_FallbackLightingShader.
|
static |
Returns the combined hash values of multiple shaders.
|
virtual |
Returns the hash value of the paths of the texture prims consumed by this shader.
Unless textures are bindless, shaders using different textures cannot be used in the same draw batch. Since textures can be animated, it can happen that two texture prims use the same texture at some time but different textures at other times. To avoid re-computing the draw batches over time, we use the this hash when grouping the draw batches.
HDST_API VtDictionary HdStShaderCode::GetLayout | ( | TfTokenVector const & | shaderStageKeys | ) | const |
Returns the resource layout for the shader stages specified by shaderStageKeys. This is initialized using the shader's HioGlslfx configuration.
Material tags can be set in the meta-data of a glslfx file to control what rprim collection that prims using this shader should go into. E.g. We can use it to split opaque and translucent prims into different collections. When no material tags are specified in the shader, a empty token is returned.
|
virtual |
Textures that need to be bound for this shader.
Reimplemented in HdStSimpleLightingShader, and HdStRenderPassShader.
|
virtual |
Returns the shader parameters for this shader.
Reimplemented in HdStSimpleLightingShader, and HdStRenderPassShader.
|
virtual |
Returns the names of primvar that are used by this shader.
|
virtual |
Returns a buffer which stores parameter fallback values and texture handles.
|
pure virtual |
Returns the shader source provided by this shader for shaderStageKey
Implemented in HdSt_GeometricShader, HdStSimpleLightingShader, HdStRenderPassShader, and HdSt_FallbackLightingShader.
|
virtual |
Returns whether primvar filtering is enabled for this shader.
|
pure virtual |
Unbinds shader-specific resources.
Implemented in HdSt_GeometricShader, HdStSimpleLightingShader, HdStRenderPassShader, and HdSt_FallbackLightingShader.