An open API service indexing awesome lists of open source software.

https://github.com/middlefeng/NuoModelViewer

A simple Wavefront OBJ viewer.
https://github.com/middlefeng/NuoModelViewer

graphics raytracer renderer rendering-3d-graphics rendering-engine wavefront-obj

Last synced: 17 days ago
JSON representation

A simple Wavefront OBJ viewer.

Awesome Lists containing this project

README

        

# 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

* Apple Silicon GPU is supposed to be the only GPU working on macOS in the future.
* M1 Max.

βš οΈβ—The whole Intel Mac product line has been terminated. AMD eGPU support is obsoleted.
> * 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.
> * For early macOS on Intel supporting eGPU, 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

* Apple Silicon and macOS 13.3 adaptive.
* High dynamic range display.
* Replace the Performance Shader Intersector with Metal Ray Tracing shader.
* 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

* πŸ”² Camera model.
* πŸ”² Depth of field. Lens blur.
* πŸ•’ 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.
* βœ… Cubemap 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).