![]() |
|
This class is a utility for rendering deep raytracer or aov output (color/depth) to a hgi texture. More...
Public Member Functions | |
HDX_API | HdxFullscreenShader (Hgi *hgi, std::string const &debugName) |
Create a new fullscreen shader object. More... | |
HDX_API | ~HdxFullscreenShader () |
Destroy the fullscreen shader object, releasing GPU resources. More... | |
HDX_API void | SetProgram (TfToken const &glslfx, TfToken const &shaderName, HgiShaderFunctionDesc &fragDesc, HgiShaderFunctionDesc vertDesc=GetFullScreenVertexDesc()) |
Set the program for the class to use for its fragment shader. More... | |
HDX_API void | BindBuffer (HgiBufferHandle const &buffer, uint32_t bindingIndex) |
Bind a (externally managed) buffer to the shader program. More... | |
HDX_API void | BindTextures (TfTokenVector const &names, HgiTextureHandleVector const &textures) |
Bind (externally managed) textures to the shader program. More... | |
HDX_API void | SetDepthState (HgiDepthStencilState const &state) |
By default HdxFullscreenShader creates a pipeline object that enables depth testing and enables depth write if there is a depth texture. More... | |
HDX_API void | SetBlendState (bool enableBlending, HgiBlendFactor srcColorBlendFactor, HgiBlendFactor dstColorBlendFactor, HgiBlendOp colorBlendOp, HgiBlendFactor srcAlphaBlendFactor, HgiBlendFactor dstAlphaBlendFactor, HgiBlendOp alphaBlendOp) |
By default HdxFullscreenShader uses no blending (opaque). More... | |
HDX_API void | SetAttachmentLoadStoreOp (HgiAttachmentLoadOp attachmentLoadOp, HgiAttachmentStoreOp attachmentStoreOp) |
By default HdxFullscreenShader uses LoadOpDontCare and StoreOpStore. More... | |
HDX_API void | SetShaderConstants (uint32_t byteSize, const void *data) |
Provide the shader constant values (uniforms). More... | |
HDX_API void | Draw (HgiTextureHandle const &colorDst, HgiTextureHandle const &depthDst) |
Draw the internal textures to the provided destination textures. More... | |
HDX_API void | Draw (HgiTextureHandle const &colorDst, HgiTextureHandle const &colorResolveDst, HgiTextureHandle const &depthDst, HgiTextureHandle const &depthResolveDst, GfVec4i const &viewport) |
This class is a utility for rendering deep raytracer or aov output (color/depth) to a hgi texture.
This lets callers composite results into existing scenes.
Definition at line 51 of file fullscreenShader.h.
HDX_API HdxFullscreenShader | ( | Hgi * | hgi, |
std::string const & | debugName | ||
) |
Create a new fullscreen shader object.
'debugName' is assigned to the fullscreen pass as gpu debug group that is helpful when inspecting the frame on a gpu debugger.
HDX_API ~HdxFullscreenShader | ( | ) |
Destroy the fullscreen shader object, releasing GPU resources.
HDX_API void BindBuffer | ( | HgiBufferHandle const & | buffer, |
uint32_t | bindingIndex | ||
) |
Bind a (externally managed) buffer to the shader program.
This function can be used to bind buffers to a custom shader program. The lifetime of the buffer is managed by the caller. HdxFullscreenShader does not take ownership. To update values in the buffer, the client can use a blitCmds to copy new data into their buffer. If an invalid 'buffer' is passed, the binding will be cleared.
HDX_API void BindTextures | ( | TfTokenVector const & | names, |
HgiTextureHandleVector const & | textures | ||
) |
Bind (externally managed) textures to the shader program.
This function can be used to bind textures to a custom shader program. The lifetime of textures is managed by the caller. HdxFullscreenShader does not take ownership. If an invalid 'texture' is passed, the binding will be cleared.
HDX_API void Draw | ( | HgiTextureHandle const & | colorDst, |
HgiTextureHandle const & | depthDst | ||
) |
Draw the internal textures to the provided destination textures.
depth
is optional.
HDX_API void SetAttachmentLoadStoreOp | ( | HgiAttachmentLoadOp | attachmentLoadOp, |
HgiAttachmentStoreOp | attachmentStoreOp | ||
) |
By default HdxFullscreenShader uses LoadOpDontCare and StoreOpStore.
This function allows you to override the attachment load and store op.
HDX_API void SetBlendState | ( | bool | enableBlending, |
HgiBlendFactor | srcColorBlendFactor, | ||
HgiBlendFactor | dstColorBlendFactor, | ||
HgiBlendOp | colorBlendOp, | ||
HgiBlendFactor | srcAlphaBlendFactor, | ||
HgiBlendFactor | dstAlphaBlendFactor, | ||
HgiBlendOp | alphaBlendOp | ||
) |
By default HdxFullscreenShader uses no blending (opaque).
This function allows you to override blend state (e.g. alpha blending)
HDX_API void SetDepthState | ( | HgiDepthStencilState const & | state | ) |
By default HdxFullscreenShader creates a pipeline object that enables depth testing and enables depth write if there is a depth texture.
This function allows you to override the depth and stencil state.
HDX_API void SetProgram | ( | TfToken const & | glslfx, |
TfToken const & | shaderName, | ||
HgiShaderFunctionDesc & | fragDesc, | ||
HgiShaderFunctionDesc | vertDesc = GetFullScreenVertexDesc() |
||
) |
Set the program for the class to use for its fragment shader.
The vertex shader is always hdx/shaders/fullscreen.glslfx, "FullScreenVertex", which draws a full-screen triangle. The fragment shader should expect a varying called "uv", and whatever textures or uniforms have been passed in by the caller.
glslfx | The name of the glslfx file where the fragment shader is located. |
shaderName | The (technique) name of the fragment shader. |
vertDesc | Describes inputs, outputs and stage of vertex shader. |
fragDesc | Describes inputs, outputs and stage of fragment shader. |
HDX_API void SetShaderConstants | ( | uint32_t | byteSize, |
const void * | data | ||
) |
Provide the shader constant values (uniforms).
The data values are copied, so you do not have to set them each frame if they do not change in value.