NuoModelViewer
NuoModelViewer copied to clipboard
A simple Wavefront OBJ viewer.
Nuo Model Viewer
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.
Supported GPUs
-
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.
Latest Update
- 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.
Screenshots on Development
TODO
-
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 model -
Shadow 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
-
Early Screenshots
Screenshot of the first version (left). Add support to simple transparency (right).