You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hyperion — Titan of heavenly light, father of Helios, Selene and Eos.
Hyperion is a GPU path tracer built entirely on Vulkan 1.4 KHR ray tracing.
It implements the OpenPBR Surface v1.1 material model and outputs a physically correct, linearly encoded HDR frame every render call.
Screenshots
Cornell Box
Spheres
Suzanne
Metals
Dielectrics
Coat
Fuzz
Specular
Organics
Thin-film
Meadow IBL
Textured Cube
A Beautiful Game (IBL)
Dragon & Teapot (IBL)
Advanced Transmission
Features
Rendering
Vulkan 1.4 KHR ray tracing pipeline (raygen / closest-hit / miss / intersection shaders)
Unidirectional path tracing with configurable bounce depth and samples per pixel
Next Event Estimation (NEE) with Multiple Importance Sampling (MIS) — balance heuristic combining BSDF pdf and light pdf; eliminates black-dot noise and halves required SPP
Emissive mesh area lights — per-triangle direct sampling using Shirley's sqrt-folding barycentric coordinates; area-to-solid-angle PDF conversion
Environment map importance sampling — 2D separable CDF (256×128) built from panorama luminance × sin(θ); MIS-weighted against BSDF paths in the miss shader; eliminates fireflies from bright suns and skies
Analytic spheres via VK_KHR_ray_tracing_pipeline intersection shaders
Image-based lighting (IBL) — equirectangular HDR panorama via env_map
Firefly suppression (channel-average clamping with NaN guard)
Conductor reflectance uses the OpenPBR generalized-Schlick F82-tint model
(base_color = F0, specular_color = the 82° tint); specular/coat microfacets
use GGX with the spec's anisotropy remapping.
Color pipeline
All internal calculations in linear Rec.2020
Physical camera exposure via EV100 (ev100 scene keyword)
Physical environment scale via env_unit_nits (cd/m² per EXR unit)
Tone mapping: switchable per scene — AgX (Troy Sobotka, wide DR, natural sun highlight rolloff), ACES RRT+ODT (Stephen Hill fit), Reinhard luminance, Hable / Uncharted-2 filmic
Display output: SDR (sRGB), HDR10 (PQ/ST2084), scRGB — runtime negotiated with the swapchain
Bindless textures
Descriptor set 1, binding 4: COMBINED_IMAGE_SAMPLER array (up to 1024 entries)
NonUniformResourceIndex for correct divergent access
Per-material texture maps, each converted to the render color space at load:
map_base_color, map_normal, map_orm (packed occlusion/roughness/metalness,
G=roughness/B=metalness), map_emission_color
Scene format
Line-based text format (.scene) inspired by — but distinct from — Wavefront OBJ/MTL.
Material libraries use the companion .mtlx format (OpenPBR keyword names; not
Wavefront MTL and not MaterialX XML):
mtllib cornell.mtlx # load material library (.mtlx)
camera
translate 278 273 -800
look_at 278 273 279
vfov 39.1
ev100 7.0 # physical camera exposure
spp 64 # samples per pixel
max_depth 8
instance cornell.obj # instantiate geometry (OBJ is geometry-only — its
material Floor WhiteWall # own materials are never imported; assign here)
material LeftWall RedWall
material RightWall GreenWall
sphere 60.0
usemtl Glass
translate 430 60 200
env_map meadow_2_4k.exr
env_unit_nits 10000
tonemapper agx # aces (default) | agx | reinhard | hable
OBJ files contribute only geometry — material import from OBJ/MTL is disabled by
design; all material assignments are declared in the .scene file.