# Juliet\include\Graphics\SkyboxRenderer

## Source Files
- Header: `Juliet\include\Graphics\SkyboxRenderer.h`
- Source: `Juliet\src\Graphics\SkyboxRenderer.cpp`

## AI Description
The `SkyboxRenderer` class in the given C++ code is designed to manage the rendering of a skybox using DirectX 12. It encapsulates the necessary components such as the graphics device, pipeline, and shader resources. The main purpose of this component is to initialize, shutdown, and render a skybox in a game or application.

The class provides methods for initializing the renderer with a graphics device and window, shutting it down, and rendering the skybox using a specified render pass and command list. It also includes functionality to reload shaders if needed, although this feature is commented out in the source file.

The `InitializeSkyboxRenderer` method sets up the pipeline by creating vertex and fragment shaders from DXIL files, configuring the graphics pipeline with the appropriate settings, and binding it to the render pass. The `ShutdownSkyboxRenderer` method cleans up the resources associated with the renderer, including destroying the graphics pipeline and resetting the state.

The `RenderSkybox` method sets up push constants for the shader and uses them to draw a triangle list representing the skybox. It binds the graphics pipeline and executes the draw call using the provided render pass and command list.

This class is part of a larger system that handles rendering in a game or application, providing a reusable component for managing the skybox rendering process.

## Symbols

### Namespace `Juliet`

#### Classes, Structs & Unions
- `struct SkyboxRenderer`

#### Functions & Methods
- `[[nodiscard]] JULIET_API bool InitializeSkyboxRenderer(NonNullPtr<GraphicsDevice> device,
                                                           NonNullPtr<Window> window)`
- `JULIET_API void ShutdownSkyboxRenderer()`
- `JULIET_API void RenderSkybox(NonNullPtr<RenderPass> pass, NonNullPtr<CommandList> cmdList, const Matrix& viewProjection)`
- `#if ALLOW_SHADER_HOT_RELOAD
    JULIET_API void ReloadSkyboxShaders()`

