packages feed

mischief-render-0.1.0.0: src/Mischief/Render.hs

{- HLINT ignore "Use newtype instead of data" -}
{-# LANGUAGE AllowAmbiguousTypes #-}

module Mischief.Render
  ( -- * Mischief Render
    -- $intro

    -- * Dependencies
    -- $deps

    -- * The Rendering Book
    -- $book
    module Mischief.SDL.Window,
    module Mischief.Render.Plugin,
    module Mischief.Render.Sprite.Common,
    module Mischief.Render.Camera,
    module Mischief.Render.Material,
    module Mischief.Render.Core,
    module Mischief.Render.Buffer,
    module Mischief.Materials,
    module Mischief.Render.Layers,
    module Mischief.Render.Material.Definition,
  )
where

import Mischief.Materials (CPU, GPU)
import Mischief.Render.Buffer (Buffer, createBuffer, maintainBuffer, uploadBuffer)
import Mischief.Render.Camera (Camera (..), OutputTo (..), cameraSwapView, cameraView)
import Mischief.Render.Core (RenderAdapter, RenderDevice, RenderFirst, RenderLast, RenderPostprocess, RenderPrepare, RenderQueue, RenderTransparent, RenderUpdate)
import Mischief.Render.Layers
  ( RenderLayers,
    layer0,
    layer1,
    layer10,
    layer11,
    layer12,
    layer13,
    layer14,
    layer15,
    layer16,
    layer17,
    layer18,
    layer19,
    layer2,
    layer20,
    layer21,
    layer22,
    layer23,
    layer24,
    layer25,
    layer26,
    layer27,
    layer28,
    layer29,
    layer3,
    layer30,
    layer31,
    layer4,
    layer5,
    layer6,
    layer7,
    layer8,
    layer9,
  )
import Mischief.Render.Material (WithMaterial (..), renderMaterial, renderSortedMaterial)
import Mischief.Render.Material.Definition (Clear (..), RenderOptions (..))
import Mischief.Render.Plugin (RenderPlugin)
import Mischief.Render.Sprite.Common (Anchor (..), Sprite (..), SpriteFlip (..), SpriteSlice (..))
import Mischief.SDL.Window

-- $intro
-- This is the official rendering library for the Mischief game engine. It has tools for rendering, shading, and animating meshes and other
-- objects. It uses SDL and WGPU, being compatible with most major rendering backends (Vulkan, Metal, DirectX, WebGPU, etc.).
--
-- The renderer is highly customizable and extensible. Custom, strongly-typed shaders are written directly in Haskell.
-- Materials are easy to schedule, extend, and modify.

-- $deps
-- * [mischief-ecs]("Mischief.ECS")
-- * [mischief-sdl]("Mischief.SDL")
-- * [mischief-assets]("Mischief.Assets")
-- * [mischief-math]("Mischief.Math")
--
-- You will need to manually install the following libraries (click for install guide):
--
-- * [SDL]("Mischief.SDL")
-- * [WGPU]("Mischief.WGPU")

-- $book
--
-- * 1. Introduction
--
--     * 1.1. [Starting Out]("Mischief.Render.Tutorial.Start.Start")
--     * 1.2. [Your First Animation]("Mischief.Render.Tutorial.Start.Animation")
--     * 1.3. [Your First Shader]("Mischief.Render.Tutorial.Start.Shader")
--
-- * 2. Guides
--
--     * 2.1. [Basics]("Mischief.Render.Tutorial.Basics")
--     * 2.2. [Shaders]("Mischief.Render.Tutorial.Shaders")
--     * 2.3. [Materials]("Mischief.Render.Tutorial.Materials")
-- a