So... state of the art 3D "engines" in Java

SAP is basic, easy to implement, brute-ish force and can be more than reasonable.

Well, physics and such notwithstanding… let’s assume for the moment we’d just want to deal with rendering a scene.

Cas :slight_smile:

Unity is quite a beast.

The overall architecture seems really well thought, at least from the outside. To me, its biggest advantage is that everything in a scene is component-based, it gives an amazing amount of flexibility, both for us users, but also for the Unity dev team. They just keep adding new components version after version, such as the somewhat recent 2d physics and 2d rendering components, and soon the reflection probes.

In terms of rendering, I’m not sure if that answers the question, but they use a mix of frustrum culling, static batching, dynamic batching, and occlusion culling (using Umbra). For the underlying problems all those solutions are trying to solve, I’d start looking at the theory behind each of them.