Hi All,
I hope this get read by a few peeps that know a lot more about rendering then I do.
Disclaimer: I am not a render-engine specialist, nor a software developer, just a professional 3d artist with 20 years of experience using different render-engines and compositors ( like After-effect and Nuke). So I know a little bit about how a render is made.
When I first saw Nanite and Lumen I was impressed like everyone else and I wondered how they ( Epic ) did it.
A lot of videos further I have a good idea what they did ( but some of it is still hard to grasp). It is a brilliant piece of software engineering with a lot of advanced trickery to pull it all off.
My idea goes a step further, the basic idea of Nanite ( distance fields) combined with motion-vector-maps. You all know distance fields, a kind of voxel-like representation of a solid-object. Objects will be sharp and detailed close-by and fussier in the distance.
And what are motion-vector-maps? A motion-vector-map is a visual representation of all motion in a render. Those are rendered on a frame to frame base. This is something that is not standard in the UE… But it can be done with some HLSL-shader code or some node-setup.
The trick is to combine both and get a a reduction in rendering-workload when there is any motion in the scene ( pretty much always). The motion-vector-map works as a reducer for the distance-fields. The more intense the MV-map is, the more reduced the models become. Makes sense, do you really see every detail on a statue when driving by at 100 km/h? ( That would be about 2483,554 opossums/h for the Americans) The model would be a blur that could be made out of a few dozen voxels, instead out of many millions, but you did see a shape that pretty much looked like that million voxels-model.
You could also do things like distance to center of the screen on top of the MV-map.
Things in the center of the screen will be more higher-resolution then on the sides of the screen. Makes sense, since you are concentrating on the middle of the screen and not something in the corner of the screen.
Also distance to camera could be added. Things that are further from the camera will be higher resolution to reduces LOD-pops ( which don’t really exist anymore with Distance fields? But not all objects are Nanite-able…).
I think this could be implemented ( or already is planned?) and I wanted to share my idea and hope to contribute something back to the UE and Epic
Kind regards,
Rob