Jump to content
Dante Unbound: Share Bug Reports and Feedback Here! ×

Shadows In The Liset Do Not Match Up Where The Sun Is.


Aure7
 Share

Recommended Posts

Sorry but this really bothers me, some planets have lighting matching though (earth I think). I know that most of the lighting is calculated when the level is created, in this case the player ship (baking shadows?). You can even see that moving ramp has shadow stuck onto the surface instead of being cast where it should be. I'd be very grateful if you simply baked a different shadow map for each of the sun positions, if that wouldn't slow down loading times of course.

 

Not only that, player shadows seem to be just randomly popping everywhere to random directions, never matching the sun. Player shadows DO match in the actual levels most of the time, but not in the player ship.

 

Also, I gotta say skybox in the void is beautifully animated, but i'd be cool if it had no definitive shadows but ambient blue/cyan light in the ship.

 

This would probably mean a different lighting map for each of the planets, stored in the game files and used as necessary, but I am not sure if this is simply how engine is built, or is it way more effective in this case, or if dynamic lighting is super demanding in this particular engine (because come on, it is used a lot these days in games). If dynamic lighting is not that big deal to implement, it would be awesome to have it in the player ship.

 

 

Also even though the ship is orbiting, it bothers me that the sun is stuck in the sky meaning that the ship is not actually orbiting at all. Full day/night cycle in the ship as it orbits would be possible only in dynamic lighting. But it would be freaking amazing.

Edited by Aure7
Link to comment
Share on other sites

First, I'm not part of the team but since I'm also a developer, I might be able to answer some of your feedback based on common knowledge in the video game industry.

 

First, your vision of what is called "dynamic lightning" is wrong. What you wonder is related to dynamic shadows also known as "Real Time Shadows".

It's a process that produce an additionnal "additive" color on every pixel calculated and rendered in the camera based on a ray send from the light source. While you're right that it's a "common" feature in many game, you're wrong to think that it's possible to only uses that kind of lightning process to render all the shadows. Even a ultra-boosted high end rigs would not be able to render a video game on high quality which would only render real-time shadow without affecting its framerate. (Especially if the shadows are soft shadows and not hard shadows.)

 

What you write as "shadow being stuck to the ground" is called what we call "baked shadows" which indeed is shadow being "printed" on the texture of the assets. I can't say if the shadows are being baked as the game load or if they are already baked inside the game assets themselves. It could even be that they build the engine to include a texture just for the baked shadow which allow to use the same diffuse (base color), bump/normal (texture and relief) and specular (reflective/shiny) texture and only the "baked shadows" really switch between the levels with different lightnings.

Anyway, that process takes close to 1/2 of the memory ressources required to render the same effect with real-time shadows. So, if you render a scene which have for 250MB of textures (including baked shadows), real-time shadows would mostly require 500MB of memory to render the whole scene with even the most optimized shadows algorithm. (An example, the Cry Engine include a built-in real-time shadow algorithm that is really optimized. It still require 40% more memory than any other optimized engine with baked shadows just because of the real-time shadows)

 

Also, your vision of the skybox seems also to be off. A skybox is mostly only a set or 1 (huge) or 6 textures (6 sides like a reverced dice). unless you add a post-effect on the camera and the skybox directly touch the assets in the screen, the skybox never produce lightning. Lightning are produce throught light nodes. Depending on the engine, the light nodes features varies, but one thing seems to be universal : light directly produced from textures is a heavy RAM and VRAM requiring process which won't come into games. It's something that, in 3d software, is only used for movies (pre-rendering which then become a 2D set of image in rows) and add many secondes if not minutes for rendering a single frame. (You need a rendering algorithm like Mental-Ray to allow such process to run)

In video games, lights nodes are always producing the lights in 3 possible way :

- The light goes off from the node in a 360x360 degrees. (Called "Radial light" or "Point light")

- The light goes off from the node in a 180 directionnal radius (Called "Spot light")

- The light goes in a single direction related to the orientation of the light node. (Called "Linear light" or "Direction Light") It's what is used to simulating the sun as it the kind of lightning that doesn't have range nor "partial lightning" results unless an asset is in its light way.

 

When you see a light in an area which have limited or "controled" lightning, this is actually the mix of 3 ways with lightning technics including a "fake" one :

- Ambiant lightning which are most of the time one or a couple of point lights in the middle of the accessing rooms. Those allow the area to look lighted even if there are no "direct" light aiming in the middle of it.

- If there are intense sources of light, it can be a mix of Point lights and spot light depending on what kind of lights is in the scenes.

- The uses of a texture called "self-illumination map" is the last one used. It's litterally to "force" the lightning level on assets.

 

The best example I could give you is the following : You got a lighted globe which "pulse" light on a table. The globe have a cover which make it only light directly toward the table.

1) You have a spot light going from the globe to the table. This produce the direct and intense light with a bit of a gradiant around the edge.

2) You have a point light to light all around a bit. This is to fake/simulate the "ambiant lightning" produced by the globe.

3) You "fake" the intense light in the cover around the globe and on the globe itself with an self-illumination texture and then you tell the real light to totally ignore those two.

That way, the globe will be fully lighted in every side, wont produce "shadows" with its own physical body, The glob cover won't be lighted in a irrealistic way (as the 2 other light don't produce the "real" light of a glob. They fake it.)

 

In the ship, many things you see as "lighted" are actually "self-illumination" maps with animated textures (for the ones being unstable like the blue light on the floor). Since the game have a bloom effect, it also "blur" the light around itself as a post-effect which fake it as if the light "extend" around itself.

 

Lastly, I made use of the term "post-effect" a couple of time. What we call "post-effects" are filters that are calculated after the initial render sequence. You could see them like the "Photoshop effect filters", but for engines. The game render the frame, then based on the position of some specific nodes, or the meshes structures, produce an effect which alter the render visually.

 

Those are possible post-effects :

- Bloom

- Blurr over distance

- Geographical processing fog which doesn't uses particles nor textures.

- Massive sandstorms and snowstorms. (particules would kill the CPU if it were to render as many of them in real time)

- Celshading** like what you see in Borderland 1 and 2. (If you prefer "cartoon-like" rendered scene)

 

** Note that celshading is possible directly in the initial render sequence. It's just less adjustable and the results might be unwanted. For example, if you want to produce a celshading in which produce a trame-like shadow that you see in manga/korean comics, you can only do it with a post-effect. I scripted my own shader (initial render setup) with celshading and it was giving something more like the old US comic which uses heavy black ink for shadows everywhere. Cool, but nothing like borderland.

Link to comment
Share on other sites

First, I'm not part of the team but since I'm also a developer, I might be able to answer some of your feedback based on common knowledge in the video game industry.

 

First, your vision of what is called "dynamic lightning" is wrong. What you wonder is related to dynamic shadows also known as "Real Time Shadows".

It's a process that produce an additionnal "additive" color on every pixel calculated and rendered in the camera based on a ray send from the light source. While you're right that it's a "common" feature in many game, you're wrong to think that it's possible to only uses that kind of lightning process to render all the shadows. Even a ultra-boosted high end rigs would not be able to render a video game on high quality which would only render real-time shadow without affecting its framerate. (Especially if the shadows are soft shadows and not hard shadows.)

 

What you write as "shadow being stuck to the ground" is called what we call "baked shadows" which indeed is shadow being "printed" on the texture of the assets. I can't say if the shadows are being baked as the game load or if they are already baked inside the game assets themselves. It could even be that they build the engine to include a texture just for the baked shadow which allow to use the same diffuse (base color), bump/normal (texture and relief) and specular (reflective/shiny) texture and only the "baked shadows" really switch between the levels with different lightnings.

Anyway, that process takes close to 1/2 of the memory ressources required to render the same effect with real-time shadows. So, if you render a scene which have for 250MB of textures (including baked shadows), real-time shadows would mostly require 500MB of memory to render the whole scene with even the most optimized shadows algorithm. (An example, the Cry Engine include a built-in real-time shadow algorithm that is really optimized. It still require 40% more memory than any other optimized engine with baked shadows just because of the real-time shadows)

 

Also, your vision of the skybox seems also to be off. A skybox is mostly only a set or 1 (huge) or 6 textures (6 sides like a reverced dice). unless you add a post-effect on the camera and the skybox directly touch the assets in the screen, the skybox never produce lightning. Lightning are produce throught light nodes. Depending on the engine, the light nodes features varies, but one thing seems to be universal : light directly produced from textures is a heavy RAM and VRAM requiring process which won't come into games. It's something that, in 3d software, is only used for movies (pre-rendering which then become a 2D set of image in rows) and add many secondes if not minutes for rendering a single frame. (You need a rendering algorithm like Mental-Ray to allow such process to run)

In video games, lights nodes are always producing the lights in 3 possible way :

- The light goes off from the node in a 360x360 degrees. (Called "Radial light" or "Point light")

- The light goes off from the node in a 180 directionnal radius (Called "Spot light")

- The light goes in a single direction related to the orientation of the light node. (Called "Linear light" or "Direction Light") It's what is used to simulating the sun as it the kind of lightning that doesn't have range nor "partial lightning" results unless an asset is in its light way.

 

When you see a light in an area which have limited or "controled" lightning, this is actually the mix of 3 ways with lightning technics including a "fake" one :

- Ambiant lightning which are most of the time one or a couple of point lights in the middle of the accessing rooms. Those allow the area to look lighted even if there are no "direct" light aiming in the middle of it.

- If there are intense sources of light, it can be a mix of Point lights and spot light depending on what kind of lights is in the scenes.

- The uses of a texture called "self-illumination map" is the last one used. It's litterally to "force" the lightning level on assets.

 

The best example I could give you is the following : You got a lighted globe which "pulse" light on a table. The globe have a cover which make it only light directly toward the table.

1) You have a spot light going from the globe to the table. This produce the direct and intense light with a bit of a gradiant around the edge.

2) You have a point light to light all around a bit. This is to fake/simulate the "ambiant lightning" produced by the globe.

3) You "fake" the intense light in the cover around the globe and on the globe itself with an self-illumination texture and then you tell the real light to totally ignore those two.

That way, the globe will be fully lighted in every side, wont produce "shadows" with its own physical body, The glob cover won't be lighted in a irrealistic way (as the 2 other light don't produce the "real" light of a glob. They fake it.)

 

In the ship, many things you see as "lighted" are actually "self-illumination" maps with animated textures (for the ones being unstable like the blue light on the floor). Since the game have a bloom effect, it also "blur" the light around itself as a post-effect which fake it as if the light "extend" around itself.

 

Lastly, I made use of the term "post-effect" a couple of time. What we call "post-effects" are filters that are calculated after the initial render sequence. You could see them like the "Photoshop effect filters", but for engines. The game render the frame, then based on the position of some specific nodes, or the meshes structures, produce an effect which alter the render visually.

 

Those are possible post-effects :

- Bloom

- Blurr over distance

- Geographical processing fog which doesn't uses particles nor textures.

- Massive sandstorms and snowstorms. (particules would kill the CPU if it were to render as many of them in real time)

- Celshading** like what you see in Borderland 1 and 2. (If you prefer "cartoon-like" rendered scene)

 

** Note that celshading is possible directly in the initial render sequence. It's just less adjustable and the results might be unwanted. For example, if you want to produce a celshading in which produce a trame-like shadow that you see in manga/korean comics, you can only do it with a post-effect. I scripted my own shader (initial render setup) with celshading and it was giving something more like the old US comic which uses heavy black ink for shadows everywhere. Cool, but nothing like borderland.

Okay... That's a wonderful post but that actually just confirmed some things for me that I thought before. You also assumed a bit wrong thinking I had no idea what I was talking about.

 

I am aware that real time lighting is way more demanding, it makes perfect sense, I was not talking about implementing it on every level. But the ship is a very tiny place and flaws of baked shadows are very visible, that's why I made this thread wondering if in that case it would be possible to implement real time lighting or baked shadows for each of the different sun positions on various planets.

 

Also why my vision of skybox is off? I know that it is 1 or more huge textures stitched up together around the player, I even made another post about skyboxes some time ago. All I was asking for void is different baked shadow "map"? or no baked shadows at all since there is no sun casting sharp shadows in there, but the void looks like it's emitting ambient light everywhere. The shade of light is already colored correctly there though, just weird to see the shadows. And I know perfectly fine that developers have to fake many things with lighting, just like you explained.

 

And for the player shadows, it seems it is being projected from a specific point in space which switches to another while player is moving. Those points usually match lights pointing at the player in levels, but in the player ship I saw no logic at how the shadows were cast. I am just asking that point to be where the sun is. (not literally, just to make it feel like it is projected from the sun).

Link to comment
Share on other sites

  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...