This is a really useful codebase to compare what the code looks like for different APIs and the tooling around each (not so much for directly comparing the graphics, which should go without saying, but a lot of people seem to be missing the point here...)
It would be interesting to add an emscripten version, ie. slight modifications to the original C++/OpenGL code to make it compile with emscripten and run in the browser. After some fooling around I got that to work, however nothing shows up because the shaders need to be rewritten for WebGL. Looks like this was already done for the JS/WebGL version, but the shaders are less fancy and clearly don't map 1-to-1 to those in the C++/OpenGL version, so the code will need to be modified a bit either way.
If you target WebGL2 you can likely do it without hand modifying the shaders. In a small test I did I just patched the emscripten library_gl.js to do a very simple search and replace of the version string of shaders and stuff just worked.
You do have to decide if you want to restructure you code to be event based or if you want it leave it as is and set emscripten to generate really slow code for your main loop
Very interesting. What's striking is how much better the OpenGL version looks than everything else. Not sure if it's because that was the reference version or if some of the other APIs require more work or the dev is simply unfamiliar with them. The Cycles renderer creates some really cool looking materials on the dragon, but the terrain doesn't look great.
The Metal version in particular looks terrible, but then again low level APIs like Metal, Vulkan and whatever subset of Direct X are all meant for vendors, not individual developers.
Theoretically, the OpenGL, WebGL, Vulkan, Metal, and Unity implementations can all have comparable quality with enough dev work. From a quick glance through the README, it doesn't seem like the OpenGL implementation is relying on any cutting-edge features of the specification, so everything can be ported to WebGL as well. If anything, the Vulkan and Metal versions have higher "potential" when compared to older APIs like OpenGL because if you optimize with the lower level primitives, you'll have more cycles for complex rendering techniques. Also, I'd argue that Vulkan can be used by individual developers because there are already a bunch of games that have Vulkan support: https://en.wikipedia.org/wiki/List_of_games_with_Vulkan_supp...
Actually, if continue under this world with unlimited developer resources, the Cycles version should look the most realistic. It's markedly different than any of the other renderers included in this list because it's an offline path tracer whereas Unity and friends are for real-time rendering. We rely on a lot of hacks (Phong shading, FXAA, normal mapping) to produce an interactive 3D scene at 30+ FPS, but once you remove the real-time constraint, we can apply a lot of very fancy algorithms to more realistically render your scene. Cycles might take minutes or even hours to render a single frame, but it spends this time on a whole host of involved computation (physically-based BSDFs, Monte Carlo integration, Metropolis light transport, etc) that more accurately model how light interacts with materials.
OpenGL has a ton of implicit state. This makes the code look simple, but it's actually very hard to work with, as you always have to be aware of what the current state is. Other APIs are require explicit handling of state (Vulkan takes this to an extreme) which is more verbose, but actually easier to work with.
> Not sure if it's because that was the reference version or if some of the other APIs require more work or the dev is simply unfamiliar with them.
I would say the later, either unfamiliarity with the hardware/software or time constraints because the PS2 is capable of much better than what is shown here.
I someone has time, could you record each one of these, splice the videos together and upload it, so we can compare them, without actually installing each one?
The Vulkan version will really add a lot I think. I would guess most people are most interested in an OpenGL to Vulkan comparison. Similarly (possibly more interesting to people, I don't know?) the DirectX version.
Shouldn't it be fairly similar to the Metal version, which is basically Apple's Vulkan/Dx12? (IIRC Metal is more between OGL and Vulkan, it does more hand-holding and implicit than Vulkan, but way less than OGL)
Will it? Vulkan is meant as a low-level version of OpenGL for vendors who want to optimise their engines and have more control over draw calls and whatnot. Does it actually add any features that will be noticeable in a small, static scene?
Neat. Always interesting to be reminded how far the capabilities have come in so short a time. The PS2 really wasn't all that long ago in the grand scheme of things.
Would be intriguing to see how far older architectures like ps2dev can be pushed on modern hardware.
Or even how far the PS2 could be pushed with modern software. Just look at the C64 demoscene, that machine is doing things it's designers could never have hoped for.
The GBA could definitely do a real 3D engine but it wouldn't look very good at the low resolution anyway. I remember a demo from back in the day of a Quake-like 3D engine on the GBA but it really didn't look good.
For the DS, note that he seems to be targeting the original DS (e.g. not DSi OR 3DS). I remember there being some slightly better stuff but not significantly better than what he made.
A nice project, but I didn't find the license for the source code. As without one no-one can really legally use parts of it for anything that can become serious.
Of course it might be that I have missed it or it is hidden somewhere. I hope it really exists somewhere in the repository, but I didn't find it. I might be too tired to find it and someone else has better luck.
How do I view them? Maybe it's because I'm on mobile, but I'm having trouble navigating to the actual images.
Edit: ok if I understand correctly, you need to visit the linked web site, visit each linked repo, and pull each one down? Could you provide a web page with previews, or would the resolution lose all visual differences?
Would you mind explaining in more detail why you didn't like using DirectX? When I was reading up for some games if they would get an OpenGL version, I was reading more than once that OpenGL were a mess.
[+] [-] pierrec|8 years ago|reply
It would be interesting to add an emscripten version, ie. slight modifications to the original C++/OpenGL code to make it compile with emscripten and run in the browser. After some fooling around I got that to work, however nothing shows up because the shaders need to be rewritten for WebGL. Looks like this was already done for the JS/WebGL version, but the shaders are less fancy and clearly don't map 1-to-1 to those in the C++/OpenGL version, so the code will need to be modified a bit either way.
[+] [-] greggman|8 years ago|reply
code: https://github.com/greggman/doodles/tree/master/glfw-imgui
demo: https://greggman.github.io/doodles/glfw-imgui/out/glfw-imgui...
You do have to decide if you want to restructure you code to be event based or if you want it leave it as is and set emscripten to generate really slow code for your main loop
https://kripken.github.io/emscripten-site/docs/porting/emter...
[+] [-] Mikeb85|8 years ago|reply
The Metal version in particular looks terrible, but then again low level APIs like Metal, Vulkan and whatever subset of Direct X are all meant for vendors, not individual developers.
[+] [-] brkho|8 years ago|reply
Actually, if continue under this world with unlimited developer resources, the Cycles version should look the most realistic. It's markedly different than any of the other renderers included in this list because it's an offline path tracer whereas Unity and friends are for real-time rendering. We rely on a lot of hacks (Phong shading, FXAA, normal mapping) to produce an interactive 3D scene at 30+ FPS, but once you remove the real-time constraint, we can apply a lot of very fancy algorithms to more realistically render your scene. Cycles might take minutes or even hours to render a single frame, but it spends this time on a whole host of involved computation (physically-based BSDFs, Monte Carlo integration, Metropolis light transport, etc) that more accurately model how light interacts with materials.
[+] [-] theresistor|8 years ago|reply
[+] [-] santaclaus|8 years ago|reply
The OpenGL version looks really aggressively bump mapped. The Cycle's version doesn't appear to have any bump mapping enabled.
Edit: The depth of field in the Cycle's version also looks a bit weird, and blurs away most of the terrain's detail.
[+] [-] Narishma|8 years ago|reply
I would say the later, either unfamiliarity with the hardware/software or time constraints because the PS2 is capable of much better than what is shown here.
[+] [-] golergka|8 years ago|reply
[+] [-] unknown|8 years ago|reply
[deleted]
[+] [-] unknown|8 years ago|reply
[deleted]
[+] [-] kutkloon7|8 years ago|reply
[+] [-] ars|8 years ago|reply
[+] [-] sipos|8 years ago|reply
Nice comparison.
[+] [-] masklinn|8 years ago|reply
[+] [-] Mikeb85|8 years ago|reply
[+] [-] eponeponepon|8 years ago|reply
Would be intriguing to see how far older architectures like ps2dev can be pushed on modern hardware.
[+] [-] amiga-workbench|8 years ago|reply
[+] [-] dmitrygr|8 years ago|reply
[+] [-] bangonkeyboard|8 years ago|reply
[+] [-] awirth|8 years ago|reply
For the DS, note that he seems to be targeting the original DS (e.g. not DSi OR 3DS). I remember there being some slightly better stuff but not significantly better than what he made.
[+] [-] Maken|8 years ago|reply
[+] [-] gtm1260|8 years ago|reply
[+] [-] osmala|8 years ago|reply
Of course it might be that I have missed it or it is hidden somewhere. I hope it really exists somewhere in the repository, but I didn't find it. I might be too tired to find it and someone else has better luck.
[+] [-] chairmanwow|8 years ago|reply
[+] [-] madez|8 years ago|reply
[+] [-] mastazi|8 years ago|reply
[1] https://docs.unity3d.com/Manual/UsingDX11GL3Features.html
[2] https://blogs.unity3d.com/2016/09/29/introducing-the-vulkan-...
[3] https://blogs.unity3d.com/2015/02/19/unity-4-6-3-metal-rende...
[+] [-] neogodless|8 years ago|reply
Edit: ok if I understand correctly, you need to visit the linked web site, visit each linked repo, and pull each one down? Could you provide a web page with previews, or would the resolution lose all visual differences?
[+] [-] StavrosK|8 years ago|reply
[+] [-] lunchladydoris|8 years ago|reply
I must be getting into my nostalgic period - I love the GBA version.
[0]: http://simonrodriguez.fr/dragon/
[+] [-] nickelbackfan|8 years ago|reply
[+] [-] vitoralmeida|8 years ago|reply
[+] [-] slazaro|8 years ago|reply
[+] [-] Fox8|8 years ago|reply
[+] [-] andybak|8 years ago|reply
[+] [-] ocdtrekkie|8 years ago|reply
That was when I learned I didn't want to be in a career field that would have me using DirectX.
[+] [-] madez|8 years ago|reply
[+] [-] spyder|8 years ago|reply
[+] [-] philbarr|8 years ago|reply
[+] [-] beelle|8 years ago|reply
[deleted]
[+] [-] beelle|8 years ago|reply
[deleted]