Files
Juliet/Romeo/docs/Juliet_include_Graphics_Graphics.md
T

8.9 KiB

Juliet\include\Graphics\Graphics

Source Files

  • Header: Juliet\include\Graphics\Graphics.h
  • Source: Juliet\src\Graphics\Graphics.cpp

AI Description

The provided code snippet is a C++ implementation of a graphics rendering engine using the Juliet library. It includes functions for managing render passes, shaders, and graphics buffers. The RenderPass class represents a set of commands that can be executed together to draw graphics. The CommandList class manages a list of commands that are executed on a GPU.

Here's a brief overview of the key functionalities:

  1. Rendering Pass Management:

    • BeginRenderPass: Begins a new render pass with specified color and depth/stencil targets.
    • EndRenderPass: Ends the current render pass.
    • SetGraphicsViewPort, SetScissorRect, SetBlendConstants, SetStencilReference: Set various rendering state parameters.
  2. Shader Management:

    • CreateShader: Loads a shader from a file and creates a shader object.
    • DestroyShader: Destroys a previously created shader object.
  3. Graphics Pipeline Management:

    • CreateGraphicsPipeline: Creates a graphics pipeline with specified create information.
    • DestroyGraphicsPipeline: Destroys a previously created graphics pipeline object.
  4. Buffer Management:

    • CreateGraphicsBuffer, CreateGraphicsTransferBuffer: Create buffers for storing graphics data.
    • MapGraphicsBuffer, UnmapGraphicsBuffer, MapGraphicsTransferBuffer, UnmapGraphicsTransferBuffer: Map and unmap memory from the GPU.
    • CopyBuffer, CopyBufferToTexture, TransitionBufferToReadable: Copy data between buffers or transfer data to/from textures.
  5. Descriptor Management:

    • GetDescriptorIndex: Retrieve the descriptor index for a buffer or texture.
  6. Resource Destruction:

    • DestroyGraphicsBuffer, DestroyGraphicsTransferBuffer: Destroy previously created graphics buffer and transfer buffer objects.

This code snippet provides a comprehensive set of tools for managing graphics resources in a C++ application using the Juliet library, allowing developers to create complex 3D scenes efficiently.

Symbols

Namespace Juliet

Classes, Structs & Unions

  • struct IndirectDrawCommand
  • struct IndexedIndirectDrawCommand
  • struct IndirectDispatchCommand
  • struct GraphicsViewPort

Enums

  • enum class QueueType
  • enum class IndexFormat
  • enum struct
  • enum struct

Functions & Methods

  • extern JULIET_API GraphicsDevice* CreateGraphicsDevice(GraphicsConfig config)

  • extern JULIET_API void DestroyGraphicsDevice(NonNullPtr<GraphicsDevice> device)

  • // Attach To Window extern JULIET_API bool AttachToWindow(NonNullPtr<GraphicsDevice> device, NonNullPtr<Window> window)

  • extern JULIET_API void DetachFromWindow(NonNullPtr<GraphicsDevice> device, NonNullPtr<Window> window)

  • // SwapChain extern JULIET_API bool AcquireSwapChainTexture(NonNullPtr<CommandList> commandList, NonNullPtr<Window> window, Texture** swapChainTexture)

  • extern JULIET_API bool WaitAndAcquireSwapChainTexture(NonNullPtr<CommandList> commandList, NonNullPtr<Window> window, Texture** swapChainTexture)

  • extern JULIET_API bool WaitForSwapchain(NonNullPtr<GraphicsDevice> device, NonNullPtr<Window> window)

  • extern JULIET_API TextureFormat GetSwapChainTextureFormat(NonNullPtr<GraphicsDevice> device, NonNullPtr<Window> window)

  • // Textures extern JULIET_API Texture* CreateTexture(NonNullPtr<GraphicsDevice> device, const TextureCreateInfo& createInfo)

  • extern JULIET_API void DestroyTexture(NonNullPtr<GraphicsDevice> device, NonNullPtr<Texture> texture)

  • // Command List extern JULIET_API CommandList* AcquireCommandList(NonNullPtr<GraphicsDevice> device, QueueType queueType = QueueType::Graphics)

  • extern JULIET_API void SubmitCommandLists(NonNullPtr<CommandList> commandList)

  • // RenderPass extern JULIET_API RenderPass* BeginRenderPass(NonNullPtr<CommandList> commandList, ColorTargetInfo& colorTargetInfo, DepthStencilTargetInfo* depthStencilTargetInfo = nullptr)

  • extern JULIET_API RenderPass* BeginRenderPass(NonNullPtr<CommandList> commandList, NonNullPtr<const ColorTargetInfo> colorTargetInfos, uint32 colorTargetInfoCount, DepthStencilTargetInfo* depthStencilTargetInfo = nullptr)

  • extern JULIET_API void EndRenderPass(NonNullPtr<RenderPass> renderPass)

  • extern JULIET_API void SetGraphicsViewPort(NonNullPtr<RenderPass> renderPass, const GraphicsViewPort& viewPort)

  • extern JULIET_API void SetScissorRect(NonNullPtr<RenderPass> renderPass, const Rectangle& rectangle)

  • extern JULIET_API void SetBlendConstants(NonNullPtr<RenderPass> renderPass, FColor blendConstants)

  • extern JULIET_API void SetStencilReference(NonNullPtr<RenderPass> renderPass, uint8 reference)

  • extern JULIET_API void BindGraphicsPipeline(NonNullPtr<RenderPass> renderPass, NonNullPtr<GraphicsPipeline> graphicsPipeline)

  • extern JULIET_API void DrawPrimitives(NonNullPtr<RenderPass> renderPass, uint32 numVertices, uint32 numInstances, uint32 firstVertex, uint32 firstInstance)

  • extern JULIET_API void DrawIndexedPrimitives(NonNullPtr<RenderPass> renderPass, uint32 numIndices, uint32 numInstances, uint32 firstIndex, uint32 vertexOffset, uint32 firstInstance)

  • extern JULIET_API void SetIndexBuffer(NonNullPtr<CommandList> commandList, NonNullPtr<GraphicsBuffer> buffer, IndexFormat format, size_t indexCount, index_t offset)

  • extern JULIET_API void SetPushConstants(NonNullPtr<CommandList> commandList, ShaderStage stage, uint32 rootParameterIndex, uint32 numConstants, const void* constants)

  • // Fences extern JULIET_API bool WaitUntilGPUIsIdle(NonNullPtr<GraphicsDevice> device)

  • // Shaders extern JULIET_API Shader* CreateShader(NonNullPtr<GraphicsDevice> device, String filename, ShaderCreateInfo& shaderCreateInfo)

  • extern JULIET_API void DestroyShader(NonNullPtr<GraphicsDevice> device, NonNullPtr<Shader> shader)

  • // Pipelines extern JULIET_API GraphicsPipeline* CreateGraphicsPipeline(NonNullPtr<GraphicsDevice> device, const GraphicsPipelineCreateInfo& createInfo)

  • extern JULIET_API void DestroyGraphicsPipeline(NonNullPtr<GraphicsDevice> device, NonNullPtr<GraphicsPipeline> graphicsPipeline)

  • #if ALLOW_SHADER_HOT_RELOAD // Allows updating the graphics pipeline shaders. Can update either one or both shaders. extern JULIET_API bool UpdateGraphicsPipelineShaders(NonNullPtr<GraphicsDevice> device, NonNullPtr<GraphicsPipeline> graphicsPipeline, Shader* optional_vertexShader, Shader* optional_fragmentShader)

  • `#endif

    // Buffers extern JULIET_API GraphicsBuffer* CreateGraphicsBuffer(NonNullPtr device, const BufferCreateInfo& createInfo)`

  • extern JULIET_API GraphicsTransferBuffer* CreateGraphicsTransferBuffer(NonNullPtr<GraphicsDevice> device, const TransferBufferCreateInfo& createInfo)

  • extern JULIET_API void* MapGraphicsBuffer(NonNullPtr<GraphicsDevice> device, NonNullPtr<GraphicsBuffer> buffer)

  • extern JULIET_API void UnmapGraphicsBuffer(NonNullPtr<GraphicsDevice> device, NonNullPtr<GraphicsBuffer> buffer)

  • extern JULIET_API void* MapGraphicsTransferBuffer(NonNullPtr<GraphicsDevice> device, NonNullPtr<GraphicsTransferBuffer> buffer)

  • extern JULIET_API void UnmapGraphicsTransferBuffer(NonNullPtr<GraphicsDevice> device, NonNullPtr<GraphicsTransferBuffer> buffer)

  • extern JULIET_API void CopyBuffer(NonNullPtr<CommandList> commandList, NonNullPtr<GraphicsBuffer> dst, NonNullPtr<GraphicsTransferBuffer> src, size_t size, size_t dstOffset = 0, size_t srcOffset = 0)

  • extern JULIET_API void CopyBufferToTexture(NonNullPtr<CommandList> commandList, NonNullPtr<Texture> dst, NonNullPtr<GraphicsTransferBuffer> src)

  • extern JULIET_API void TransitionBufferToReadable(NonNullPtr<CommandList> commandList, NonNullPtr<GraphicsBuffer> buffer)

  • extern JULIET_API uint32 GetDescriptorIndex(NonNullPtr<GraphicsDevice> device, NonNullPtr<GraphicsBuffer> buffer)

  • extern JULIET_API uint32 GetDescriptorIndex(NonNullPtr<GraphicsDevice> device, NonNullPtr<Texture> texture)

  • extern JULIET_API void DestroyGraphicsBuffer(NonNullPtr<GraphicsDevice> device, NonNullPtr<GraphicsBuffer> buffer)

  • extern JULIET_API void DestroyGraphicsTransferBuffer(NonNullPtr<GraphicsDevice> device, NonNullPtr<GraphicsTransferBuffer> buffer)