Skip to content

XuanWangVC/MobileNeRF-Unity-Viewer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MobileNeRF Unity Viewer

MobileNeRF Unity Viewer

This repository contains the source code for a Unity port of the web viewer from the paper MobileNeRF: Exploiting the Polygon Rasterization Pipeline for Efficient Neural Field Rendering on Mobile Architectures

Please note, that this is an unofficial port. I am not affiliated with the original authors or their institution.

Setup

After cloning the project you can simply use the menu MobileNeRF -> Asset Downloads to download any of the sample scenes available. In each scene folder there will be a convenient prefab, that you can then drag into the scene and you're good to go.

Updating

Since the initial release a small number of features have been added to the automatic shader generation code. That means, that if you have already downloaded some scenes before, you'll have to regenerate the source files by going to MobileNeRF -> Asset Downloads again. (This will not actually redownload Assets unless necessary, so this shouldn't take too long)

Details

The project was created with Unity 2021.3 LTS using the Built-in Render Pipeline.

The biggest deviation from the official viewer is, that this project doesn't use Deferred Rendering, but uses Forward Rendering instead. This has certain implications on performance. While the MobileNeRF representation itself greatly reduces the cost to render NeRFs, it still requires evaluating a small, view-dependent MLP (Multi Layer Perceptron) per fragment. Whenever the bottleneck is in the fragment shader, Deferred Rendering has obvious advantages, as each pixel only needs to run a single fragment shader.

Forward Rendering however gives us MSAA, which is important for VR use cases. Additionally, in VR the image has to be rendered twice, once for each eye, with a fairly large resolution. The larger the G-buffer, the smaller the benefit of Deferred Rendering. Still, MobileNeRFs mesh representations have a fairly large poly count which works against us here.

Some things to possibly look into:

  • Forward Rendering, but do a Depth Prepass to reduce overdraw (might require URP, see here and here)
  • Implement Deferred Rendering and compare performance in various scenarios

For more details read the official paper here: https://mobile-nerf.github.io/

About

An unofficial Unity port of the MobileNeRF viewer

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%