OskarGroth / MetalGraphicsPlayground

Personal test project using Metal (Mac)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MetalGraphicsPlayground

This workspace contains subprojects for testing Metal features. Requires Xcode 11 or later.

Rendering Engine (work in progress)

MetalDeferred, MetalPostProcessing and MetalSceneGraph use deferred rendering based PBR frameworks. You can check framework sources codes in Common directory!

Features

  • Deferred Rendering
    • Light pre-pass based
      • G-buffer pass : Albedo, Normal, Tangent, Shading, Depth
      • Light pass : Light + Shadow Accumulation
      • Shade pass : Convolution
    • Tile deferred
      • G-buffer pass : Albedo, Normal, Tangent, Shading, Depth
      • Light culling pass
      • Shade pass : Convolution
  • Image based Lighting
    • HDRI Image (Equirectangular map -> Cubemap)
    • Split-sum approximation model
  • Physically based Rendering
    • Metalic, Roughness, Anisotropic
  • Light
    • Directional Light
    • Point Light
    • Shadow (Bilinear, PCF)
    • Light Culling (Tile-based)
  • Post-processing
    • Screen-Space Ambient Occlusion
    • Screen-Space Reflection
  • Frustum Culling
    • Sphere
  • Scene Graph
    • Scene, Node, Component

Render Pass

Render Pass

Showcase Videos (Click to watch)

Image based Lighting Physically based Rendering Light and Shadows Post Processing

Samples (Legacy)

Click to Expand!

MetalTextureLOD

MetalTextureLOD
  • Texture data updating and textureLOD in shader.

MetalModels

MetalModels
  • ModelIO Test

MetalMSAA

MetalMSAA
  • MSAA resolve

MetalGeometry

MetalGeometry

MetalShadowMapping

MetalShadowMapping
  • Shadow mapping

MetalIZBShadow

MetalIZBShadow
  • Just another shadow mapping test. NOT Irregular z-buffer :=(

MetalEnvironmentMapping

MetalEnvironmentMapping
  • PBR (Physically based rendering) (referenced UE4 shader docs)

    • Image based lighting (+ Environment mapping)
    • Prefilterd Irradiance Map
    • Metalic and roughness

    MetalInstancing

MetalInstancing
  • Instancing

MetalDeferred

MetalDeferred

MetalPostProcessing

MetalPostProcessing.png

  • Under construction!
  • Shadow-mapping (PCF)
  • Screen-Space Ambient Occlusion
  • Screen-Space Reflection
  • Frustum Culling (Sphere)
  • Light Culling (Tile-based)
  • Gizmos
  • TODO
    • Color grading (Tone mapping)
    • Depth of Field
    • Axis-Aligned Bounding Box

MetalSceneGraph

MetalSceneGraph.png

  • Scene Graph (Scene, Node, Component)
  • General-purpose renderer

About

Personal test project using Metal (Mac)


Languages

Language:Objective-C 51.0%Language:C 30.0%Language:Metal 12.0%Language:Objective-C++ 6.3%Language:C++ 0.7%