I love the realistic and smooth lighting that raytracing brings, especially with environmental textures.
However, I’m very new to Godot and programming in general. The kinds of projects I’d like involve stylized photorealistic lighting, with fewer or cached animations and custom sprites and few but still somewhat numerous particles.
Can Godot handle raytracing optimization for mobile devices?
And, what programming language(s) does Godot use for lighting?
there is no programming languages for lighting. Godot uses the Vulkan API and has now support for Directx11, it also supports opengl 4 in the compatibility mode.
you sound like you don’t have much knowledge of 3D, be very careful when planning these big projects, you need a lot of people and good hardware, it’s not something that can be done by one person.
What you mean by retracing might not be what you think it is. good lighting can be achieved in many ways and Godot has many options for lighting, but not raytracing, as that requires a powerful GPU and godot is designed with mid to low hardware in mind.
first we have static lighting, with this, you bake the lights and shadows into a texture that covers the geometry of the level. this method was used by FPSs like half-life, half-life 2, quake and mirror’s edge. it is an accurate light calculation that should work on mobile and is commonly used in unity. it requires a powerful computer to bake but is very fast.
next we have VoxelGI, this can create accurate ray bounces, but the bigger the level, the lesser the quality. it is the highest quality option that is also real-time.
then we have SDFGI which will be replaced by HDDAGI, this is a real-time option and is equivalent to Unreal’s Lumen, but not as high quality yet. this is the only option for large levels.
then there is SSIL, a screen based lighting option, it combines screen raytrace with SDF, it is low quality but accurate. It is better than the unreal alternative.
then there is also SSR which uses screen raytrace to calculate reflections, this is also real-time and fairly common in other engines.
finally we have reflection probes, with enough of them we can provide GI to a level at good performance in exchange for low quality.
as you can see, godot provides many options for lighting that are good enough for a game. but if you REALLY need real-time large level raytrace, you are gonna have to go with unreal.
I’m not trying to plan something big, I’m actually planning a couple of small projects.
But, because they are small with simplified physics, I expect to be able to use more process-intensive realistic lighting.
But otherwise yeah, I’m aware of techniques to create normal maps and texture maps to fake lighting effects, but for me, that’s still not what I’m going for.
I’m in the middle of trying to decide between Unity or Godot for small projects. I love the realistic lighting that both Blender Eevee and Cycles have available, Cycles especially and I want to emulate that naturally as much as possible with diffused light sources because that’s my style, HDRI environmental textures, numerous light bounces and simple but effective realistic procedural materials. I also want to stylize the lighting too, in addition to trying to achieve a soft sense of realism.
I know for a fact there are mobile games with good lighting in a 3D environment, I’ve seen them multiple times, I just don’t know that Godot is the platform I should rely on. Ultimately I need to transfer between Blender and the game engine as seamlessly as possible.
Is that something I can rely on Godot for? If the 3D engine isn’t there yet then no worries, I can learn Unity now and then maybe switch to Godot later once the engine can handle the level of realism and reflections I’m going for.
As for “good lighting on mobile” - good is very subjective. I recommend you make a very simple scene and test the lighting with what’s available, both in Godot and Unity.
Choosing engine is a big choice and it’s better if you do it based on a few tests rather than the advice of someone on the internet. You know better than anyone else what you want for your projects, so the best way is for you to try it out. The time investment now will potentially save you a lot of time later down the line.
Graphics (like lighting) are done by the GPU and physics are done in the CPU. you won’t get a performance advantage on one by dropping the other.
again, raytrace is not for small projects, and it’s not something you should even consider unless it’s a AAA game.
Cycles is a cinematic rendering engine, it’s not for real time, and eevee is not either despite being semi-real time. you can’t just use them for a game.
games sacrifice quality in order to get more frames and allow more people to play them.
but you can still use them or similar effects for static scenes by baking the lighting.
I feel like you didn’t take time to read what I said and quickly rushed to judgement.
I said I’m trying to get as close to raytracing as a can. This means I already know in advanced that real-time raytracing usually isn’t feasible, but to the degree that Unity can emulate it, I’d like to pursue that path. Regardless of your bias that it’s for big games, I’m going to disagree, not only because it’s my preferred style in working with multimedia design for several years in addition to creating 3D models for years, but also because I’ve seen numerous other mobile games with good high particle counts and good lighting. The components that I need to bake or export as PNGs is something I am actively deciding.
Overall, I’m making a simple puzzle game, like think connect 4 or boggle or something like that, I think this often qualifies as “small”. Pre-made assets is something I consider frequently, I’m not opposed to them, but my personal learning goal is to at least try and create some of the models I need myself.
Remember, I said this was “small”. This is because my small and very reasonable project is intended to be a learning experience. However, my ultimate goal is to achieve the stylized art style I’m going for, with good lighting, and yes, also models with good topology that are conducive to smooth shading effects.
In honestly, I actually might learn both Godot and Unity, since I have two completely different types of projects I’m intending to learn with.