Hic sunt dracones.
This repository contains multiple implementations of the same 3D scene, using different APIs and frameworks on various platforms. The goal is to provide a comparison between multiple rendering methods. This is inherently biased due to the variety of algorithms used and available CPU/GPU configurations, but can hopefully still provide interesting insights on 3D rendering. You can check a video of most versions runnning here (Youtube)
The following versions are currently available:
- OpenGL
- WebGL
- Vulkan
- WebGPU
- Metal
- SceneKit
- Godot
- Unity
- Unreal
- Blender Cycles
- Ptah (a custom real-time renderer, see the Github page)
- Nintendo DS
- Nintendo Game Boy Advance
- PlayStation 2
- PICO-8
- Vectrex
- Glide
- DX9
The following versions are (tentatively) planned:
- DirectX (11 and 12), OpenGL ES
- other console hardwares
- other engines
- another raytracing approach
In the directory of each version, you can find the source code, the corresponding resources (as each method has its own format/quality constraints), along with a readme describing the method and a few examples.
The scene is composed of four main elements:
- a plane representing the ground, with a pavement texture.
- a dragon (the Stanford dragon).
- a monkey head ('Suzanne') rotating around its vertical axis.
- a skybox surrounding the scene, textured with a cloudy sky.
Additionally, the sun is simulated by using a directional light, and the camera should be able to rotate around the scene.
The initial 3D models and textures are contained in the opengl/resources
directory.
Here you can find implementations using some of the above APIs combined with other programming languages, submitted by awesome people!
- An OpenGL + Python version, by cprogrammer1994: herebedragons-python. (see #11)
- A Vulkan version, by vazgriz: vk_dragons.