# Juliet\include\Graphics\RenderPass ## Source Files - Header: `Juliet\include\Graphics\RenderPass.h` ## AI Description The `RenderPass` class in the Juliet graphics library is designed to encapsulate the functionality required for rendering a single pass of a scene. It manages the setup and execution of the render pipeline, including color targets, depth stencil targets, blend states, and other necessary parameters. ### Main Purpose The primary purpose of the `RenderPass` class is to provide a structured way to define and execute rendering operations in a graphics application. This allows for better organization and management of rendering logic, making it easier to maintain and extend the graphics system. ### Design #### Color Targets - **TargetTexture**: A pointer to the texture where the rendered output will be stored. - **MipLevel**: The mip level at which the target texture should be accessed. - **CycleTexture**: A boolean flag indicating whether the texture should be cycled if already bound (and load operation != LOAD). - **ResolveTexture**: A pointer to a texture used for resolving MipMaps into non-mip-map textures. Discard MipMap content if not specified. - **ResolveMipLevel**: The mip level at which the resolve texture should be accessed. - **ResolveLayerIndex**: The layer index within the resolve texture (if applicable). - **CycleResolveTexture**: A boolean flag indicating whether the resolve texture should be cycled if already bound. - **ClearColor**: The color to clear the target texture with before rendering. - **LoadOperation**: Specifies how the texture should be loaded from memory (e.g., LOAD, CLEAR, IGNORE). - **StoreOperation**: Specifies how the result of the render pass should be stored into memory (e.g., STORE, IGNORE, RESOLVE, RESOLVE_AND_STORE). #### Depth Stencil Targets - **TargetTexture**: A pointer to the texture where the depth and stencil information will be stored. - **MipLevel**: The mip level at which the target texture should be accessed. - **LayerIndex**: The layer index within the target texture (if applicable). - **ClearDepth**: The depth value to clear the target texture with before rendering. - **ClearStencil**: The stencil value to clear the target texture with before rendering. - **LoadOperation**: Specifies how the texture should be loaded from memory (e.g., LOAD, CLEAR, IGNORE). - **StoreOperation**: Specifies how the result of the render pass should be stored into memory (e.g., STORE, IGNORE, RESOLVE, RESOLVE_AND_STORE). #### Blend States - **SourceColorBlendFactor**: The blend factor for the source RGB value. - **DestinationColorBlendFactor**: The blend factor for the destination RGB value. - **ColorBlendOperation**: The blend operation for the RGB components. - **SourceAlphaBlendFactor**: The blend factor for the source alpha. - **DestinationAlphaBlendFactor**: The blend factor for the destination alpha. - **AlphaBlendOperation**: The blend operation for the alpha component. - **ColorWriteMask**: A bitmask specifying which of the RGBA ## Symbols ### Namespace `Juliet` #### Classes, Structs & Unions - `struct ColorTargetInfo` - `union ColorTargetInfo::anonymous` - `struct DepthStencilTargetInfo` - `struct ColorTargetBlendState` - `struct ColorTargetDescription` #### Enums - `enum struct` - `enum struct` - `enum class BlendFactor` - `enum class BlendOperation` - `enum class ColorComponentFlags`