SleakEngine 1.0.0
C++23 multi-backend game engine
Loading...
Searching...
No Matches
Graphics Features

A tracker of notable real-time graphics features, the kind found in high-end shader packs and in large commercial engines, checked against what SleakEngine actually ships.

green means implemented in SleakEngine and verified in the source tree. grey means not implemented. The notes column names the implementing file or class, and records which backends carry the feature when it is not all four.

Backend shorthand: VK (Vulkan), GL (OpenGL), DX11, DX12. Vulkan is the most complete backend; DX11 covers forward rendering with shadows and tonemapping, DX12 covers forward rendering with shadows.

Rendering paths

Status Feature SleakEngine notes
Deferred shading VulkanDeferred.cpp GBuffer + lighting_pass.frag; GL path in OpenGLRenderer.cpp with gbuffer_gl / lighting_pass_gl
Forward rendering Renderer::SetDeferredEnabled, default_shader variants on all four backends
Forward transparent pass VulkanRenderer::BeginForwardTransparentPass, routed by RenderCommandQueue.cpp after lighting
Forward+ / clustered shading -
Visibility buffer -

Geometry

Status Feature SleakEngine notes
Static mesh rendering MeshComponent, Sleak::MeshData
Bulk static geometry batching Sleak::MeshBatch handle pool, BeginBatch / Draw / EndBatch
Model import (FBX, glTF, OBJ) Sleak::ModelLoader, Assimp-backed, builds the GameObject tree
Skeletal skinning Sleak::Skeleton (256 bones), skinned_shader variants, forward pass only
Hardware instancing RenderContext::DrawInstance / DrawIndexedInstance on all four backends; instance data must come from gl_InstanceIndex, there is no per-instance attribute stream
Custom / procedural vertex formats Sleak::VertexLayoutDesc + VertexFormatRegistry::Register, consumed by MeshBatch::CreateMesh
Morph targets / blend shapes -
Mesh LOD no LOD selection; LOD in the tree refers to texture mip levels only
Hierarchical LOD (HLOD) -
Tessellation no hull/domain or tessellation control/evaluation stages
Mesh shaders -
Virtualized geometry (Nanite class) -

Lighting

Status Feature SleakEngine notes
Directional lights Sleak::DirectionalLight, shadow-casting light picked in LightManager::UpdateAndBind
Point lights Sleak::PointLight, UE4-style inverse-square falloff in default_shader_gl.frag
Spot lights Sleak::SpotLight, inner/outer cone smoothstep
Physically based shading Cook-Torrance GGX + Smith + Fresnel-Schlick in lighting_pass.frag and default_shader_gl.frag
Image-based lighting OpenGLIBL.cpp bakes irradiance, prefiltered specular, and the split-sum BRDF LUT; the Vulkan side (VulkanIBL.cpp) allocates 1x1 black stubs with no bake, so GL only
Area lights Sleak::AreaLight packs GPU type 3, but no shader branches on it and it shades as a point light
Baked lightmaps -
Light probes / reflection captures -
Dynamic global illumination (Lumen class) -
Screen space global illumination -
Distance field ambient occlusion -

Shadows

Status Feature SleakEngine notes
Shadow mapping VulkanShadow.cpp, shadow_depth.vert, hardware comparison sampler
Runtime shadow map resolution Renderer::SetShadowMapResolution, deferred apply through ApplyShadowResolutionChange
PCF filtering 12-tap rotated Vogel disk with interleaved gradient noise, PCFFilter in lighting_pass.frag
PCSS / contact hardening blocker search in default_shader.frag, default_shader_gl.frag, skinned_shader.frag; forward path only, deferred uses fixed-radius PCF
Cascaded shadow maps single shadow frustum, no cascade split
Virtual shadow maps -
Ray traced shadows -
Contact shadows (screen space) -
Point / spot light shadows only the directional light casts

Screen space and post processing

Status Feature SleakEngine notes
SSAO VulkanSSAO.cpp and ExecuteSSAOPass in OpenGLRenderer.cpp, hemisphere kernel from SSAOKernel.hpp, separate blur pass
Screen space reflections VulkanSSR.cpp, ssr.frag; VK only
Temporal anti-aliasing VulkanTAA.cpp, taa.frag, Halton sub-pixel jitter applied to the WVP push constant; VK only
MSAA Renderer::SetMSAASampleCount, VK pipelines and GL m_msaaFBO; forward only, the deferred path silently forces 1 sample because a multisampled GBuffer is too expensive
Bloom VulkanBloom.cpp, threshold + downsample + upsample + composite chain at half resolution; VK only
Tone mapping ACES filmic (Narkowicz fit) in tonemap.frag, tonemap_gl.frag, tonemap.hlsl, tonemap_dx12.hlsl
Exposure and gamma control PostProcessUBO, Renderer::SetExposure / SetGamma
HDR render target CapHDRTarget, RGBA16F scene image through the lighting, bloom, and tonemap chain
FXAA GraphicsConfig::fxaaEnabled exists but no backend reads it
Upscaling (TSR / DLSS / FSR class) -
Render scale GraphicsConfig::renderScale is declared but unread
HDR display output (HDR10 / scRGB) swapchain selects VK_COLOR_SPACE_SRGB_NONLINEAR_KHR only
Auto exposure / eye adaptation config fields only, no luminance histogram or reduction pass
Color grading / LUT -
Motion blur -
Depth of field -
Vignette config field only, unread
Chromatic aberration -
Film grain config field only, unread
Lens flare -
Velocity / motion vector buffer CapVelocity is declared but no backend produces one; TAA reprojects from dilated depth

Atmosphere and environment

Status Feature SleakEngine notes
Cubemap skybox Sleak::Skybox six-face constructor, skybox.frag
Equirectangular panorama sky SkyboxMode::Panorama
Procedural gradient sky SkyboxMode::Gradient, three-color vertical blend
Distance fog LightManager::SetFogDistances, ApplyFog in lighting_pass.frag
Exponential height fog LightManager::SetHeightFogDensity / SetHeightFogFalloff, stacks with distance fog
Physical sky / atmospheric scattering gradient sky only, no Rayleigh or Mie model
Volumetric fog analytic fog only, no froxel volume
Volumetric clouds -
God rays / light shafts CapLightShaft and the lightShaft* config fields are declared, no backend implements the pass
Water rendering game side; the engine supplies the transparent pass hook via transparentShaderStem
Planar reflections -
Rain and weather effects -
Wind / foliage animation -

Materials and texturing

Status Feature SleakEngine notes
Normal mapping TBN basis in gbuffer.frag with Z reconstruction for two-channel compressed normals
Metallic / roughness workflow Sleak::Material factors and maps, packed into GBuffer RT1 and RT2
Ambient occlusion maps texAO sampled in gbuffer.frag, combined with SSAO in the lighting pass
Emissive maps texEmissive times emissiveFactor, HDR intensity
Alpha cutout MaterialRenderMode::Cutout with SetAlphaCutoff
Alpha-blended transparency MaterialRenderMode::Transparent, routed to the forward transparent pass
Mipmap generation VulkanTexture::GenerateMipmaps blit chain, glGenerateMipmap on GL
Parallax occlusion mapping -
Subsurface scattering -
Refraction / translucency alpha blending only, no scene-color refraction
Deferred decals -
Virtual texturing -
Texture streaming textures upload whole at load time
Texture atlasing game side
Anisotropic filtering samplers use linear filtering without an anisotropy request

Ray tracing

Status Feature SleakEngine notes
Ray traced reflections no acceleration structures in any backend
Ray traced global illumination -
Ray traced ambient occlusion -
Ray traced shadows -
Path tracing -

Performance and culling

Status Feature SleakEngine notes
View frustum culling Sleak::CullingSystem::IsVisible, planes from Sleak::ViewFrustum
CPU software occlusion culling CullingSystem.cpp rasterizes submitted occluder volumes into a low-res depth buffer
Data-driven quality presets GraphicsConfig::Preset, applied in one shot by Application::ApplyGraphicsConfig
Debug wireframe visualization Sleak::DebugLineRenderer lines, AABBs, and spheres
GPU occlusion queries -
GPU-driven rendering / indirect draw no indirect draw entry points on RenderContext

Particles and effects

Status Feature SleakEngine notes
CPU particle system -
GPU particle system -