This project consists of:
- A Wavefront OBJ viewer, supporting both real-time rendering and ray-tracing, which is based on Viewer Foundation, a reusable framework.
- Viewer Foundation, a reusable framework consisting of:
- Viewer Foundation Render, which is an encapsulation to the Metal APIs, providing simplified resource and state management on top of the Metal APIs.
- A scene-graph-like system which enables building real-time and path-tracing based renderers.
-
Intel HD serious GPUs are not supported. (Built-in integrated GPU in most models of Mac.)
-
AMD Radeon Pro 560, and built-in descrete GPUs in almost all MacBook Pro later than 2017, are barely suppored. Their performance would be poor for the ray tracing rendering.
-
AMD Radeon RX 580 or above is recommended, in particular but not limited to:
- AMD Radeon RX Vega 56 is recommended.
- AMD Radeon RX Vega 64, RX 5700, and so on, should be working, but untested.
- AMD Radeon VII is highly recommended.
- AMD Radeon Pro Vega II (Duo) (in the Mac Pro 2019). [1]
- AMD Radeon Pro W5700. [1]
[1] Acknowledge to @ibuick for the verification.
- Specular lighting on a Fresnel surface.
- Multiple-importance sampling.
- Slider with adjustable scale.
- Full ray tracing.
- Hybrid rendering with ray tracing.
- Direct lighting soft shadow.
- Indirect lighting (ambient) with physically-based occlusion.
- Physically based effect for the shadow overlay (blend-in with photographic scene).
- Self-illuminating objects.
- Checkerboard background for better inspecting the result transparency.
- Inspecting intremediate textures in debug.
- Overlay indicator for selected parts.
- Transformation on the entire scene accurately around the scene's center.
- More accurate bounds calculation (improving shadow map sampling quality).
- User selection on GPU.
- Better take advantage of dedicated video memory by using private buffers. Especially important for desktop-class graphics card or external GPU).
- Background loading.
- Motion blur.
- Blending with real-scene background.
- Ambient occlusion.
- Transform of the entire scene (including the light sources).
- Better PCSS soft shadow
- Ground shadow
- Skybox.
- BRDF mode. Fix artifacts in specular lighting.
- Save to high resolution PNG (up to 3900 px).
- Rotate individual parts (mandatory for the varying-geometry wing plane model!).
- Adjustable shadowing PCF and bias to alliviate artifacts.
- Preliminary shadowing for two of the four light sources.
- Load/save scene parameters (postion, light source direction, etc.).
- Normal texture.
- Light source configuration.
- Multiple light sources.
- Adjustable lighting direction.
- Better handling to material opacity.
Order-independent transparency.- Bump (displacement) texture.
- Support PBRT format.
Normal texture.Direction of lgiht source.Intensity of light source.Mutilple light sources.Selectable list of object.Surface smooth.- Shadow
Shadow to modelShadow to ground.PCSS.Basic PCSS.Adjustable occluder search range.More adjustable bias.
Transparency (strength) of shadow overlay.(Achieved by ambient)- Linear shadow map (more plausible PCSS, VSM).
- Adaptive shadow map resolution/region.
Per light-source, per-surface shadow properties (bias, soft edge).Cull mode.- Surrounding.
Cubmap skybox.- Water (for ship model).
Motion blur (especially for rotating parts like rotor).- Detailed properties panel for indiviudal model parts.
Smooth options (everywhere, texture discontinuiation only, etc).Material opacity adjustment.- Material adjustment (specular, colors, etc).
- List of board objects.
Self illumination.
- Ray tracing
Faster buffer construction.Ground reflection.Specular term in direct lighting shadow, and in global illumniation.Light source surface sampling.Shadow ray visibility.- Multiple importance sampling. Unified reflection model.
- Normal map.
- Specular map.
- Translucent map.
BRDF mode.Ambient occlusion.- Model visualization
PCSS steps visualization.- Triangle mesh
- Normal/tangent visualization
Screenshot of the first version (left). Add support to simple transparency (right).