Not a graphics wizard by any means, but I'm quite tempted to hack about and see what I can learn.another_commander wrote: ↑Sat May 30, 2020 6:18 amYup, it would be nice to implement multiple light sources at some point in the future. Also environment mapping (for reflections and image-based lighting) and shadows ,which would be what is needed to bring the in-game lighting to photorealistic levels. Until such time, we will still have to suspend our disbelief in a few places and accept some inherent weirdness here and there. Unfortunately, all the above need - beyond good glsl knowledge - changes to the core of how we do rendering and that ramps up the difficulty a lot, Ideally we need a render-to-framebuffer implementatoin. If there are any graphics wizards out there, this is your call, go for it.
Every couple of years I attempt to create my own rendering engine with the eventual dream of being able to render a procedural world. I usually get as far as the basic rendering system in OpenGL, which does involve render to framebuffers, multiple light sources, shaders etc, and then run out of steam when it comes to everything else. And then restart a couple of years later. I've got that itch again, and it's coincided with me opening Oolite back up. Things that bug me are the look of the suns and the planets when you get close up. Also the main station's front face being fully lit up when the sun is completely blocked by the planet. The idea of playing around with the graphics whilst not having to worry about everything else is quite tempting. And so I got curious about the source code...
I don't know Objective-C, but I do know both C and Rust, so I should hopefully be able to figure out what's going on. I've managed to successfully follow the instructions to build from source on Windows (a remarkably simple process, which is unusual for Windows!) and now need to refresh my memory on the ins and outs of OpenGL. In the unlikely event that I actually am able to do something useful that could be contributed back, it'd probably be a good idea to know what sort of level to target, especially as GL introduces new ways of doing things in different versions. It wouldn't be much good me implementing something with the latest DSA api and then nobody being able to make use of it. On the other hand, there's still legacy GL in the source code. Would it make sense to target a specific GL version (and if so which? 3.0? 3.3? 4.0? Later?) or just use the earliest possible implementations?
Any other suggestions or tips before I go deeper down the rabbit hole are welcomed!