![]() |
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 | 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... | |
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 50 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 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.