# Juliet\src\Graphics\D3D12\D3D12Shader

## Source Files
- Header: `Juliet\src\Graphics\D3D12\D3D12Shader.h`
- Source: `Juliet\src\Graphics\D3D12\D3D12Shader.cpp`

## AI Description
The `D3D12Shader` class in the provided C++ component is designed to encapsulate a shader program for use with Direct3D 12. It includes a ByteBuffer to store the shader bytecode and metadata about its components such as samplers, uniform buffers, storage buffers, and storage textures. The class provides methods to create and destroy shader objects, ensuring that memory management and error handling are handled properly.

## Symbols

### Namespace `Juliet::D3D12`

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

#### Functions & Methods
- `extern Shader* CreateShader(NonNullPtr<GPUDriver> driver, ByteBuffer shaderByteCode, ShaderCreateInfo& shaderCreateInfo)`
- `extern void DestroyShader(NonNullPtr<GPUDriver> driver, NonNullPtr<Shader> shader)`

