Yes, the high-spec version of GI will be doing specular reflections, so shiny/metallic opaque surfaces will get the benefit. Because of the need for temporal accumulation to clean up the results, we can't easily apply it to transparent surfaces so the current plan is to continue using environment probes to light those things. Actual mirror surfaces are still handled as a separate thing because a very sharp reflection reveals the limitations and simplifications in the ray-traced scene too much.
We already have a multi-bounce solution that we developed internally, but as I'm not 100% happy with the results I'm interested to see what the original authors did with it
Yes, we have occlusion culling. Currently CPU-side, which makes it easier to do things like prevent shadow calculations from even being submitted, though this has the downside that it can sometimes get holes in it when moving quickly.
Not only is it every change on every branch adding to that count, any integration between those branches (manual or automatic) is also a numbered change.
While I don't have the knowledge to accurately explain the current limitations on HDR output, I can confidently say that the pipeline is internally HDR up until the end, and has been (I think) since the project started.
TL;DRPlanetary clouds are handled by a separate Frankfurt team, and the speaker says they need more realistic lighting and a cloud deck curving with the planet, so the gas cloud tech may not be used directly, though the two might work together.
Most of the stuff to do with planets is handled by a distinct team in Frankfurt. I know that there's something on Carsten's schedule. He's got an idea for how to deal with the issue that planets have: they tend to have a cloud deck that extends a really long way away. It curves with the surface of the planet and that kind of thing. Also, I think planetary clouds have a very specific way that they tend to get lit. You have to skew much closer to reality than we had to for the space gas cloud. So I think he's cautious about just saying, yeah, let's just use the gas cloud tech, because if we did that right off the bat, it would look pretty terrible.
Yeah. I mean, there's still room, if when he's developing it he decides that he wants the nearest area, like the nearest so many kilometers, to be generated from the same source that his tech is rendering the rest of the clouds from. Suppose they look great in the distance, but when you get close they start to break down, or they don't solve all the problems you would see if you actually have to see a ship weaving in and out of them. If something goes off key like that, at that point I think it would make sense that we could generate from his source data, create on the fly some sort of procedurally generated gas cloud stuff. I don't know. It feels like these things should be able to work together.
TL;DRGas cloud tech doesn't directly produce weather effects, but the VFX systems can take weather parameters as input to drive visuals, and the same tools such as lightning in clouds could be reused elsewhere, like dust storms.
Sounds like a wrong question, really, because gas cloud tech has nothing to do with it. Well, it has, but not directly. It doesn't directly do weather effects.
Well, yeah, you do the cloud, but weather effects are VFX, so they don't come from the gas cloud tech. We can drive some of the particles through the clouds.
Yeah, we can use the same systems. The input for the particles could be weather parameters, or whatever those parameters would be. We'll use those parameters to drive visuals for sure. I think there's a lot of similarities, at least from our side of things.
Yeah, of course. And that's the point. When we make these kinds of systems, we're trying to make them in such a way that we get maximum usage throughout the game. It's not like this can only work with gas clouds. As long as it's got the input, whatever that input is, we can provide the output with the visuals.
In terms of using the gas cloud for other environmental effects, I don't know, if we had dust storms or something. That would be an interesting one, in that you'd probably want the gas cloud in some ways because it's quite good at filling a space. So that can provide that kind of volume. But we don't really have the ability to update it every frame, so it couldn't be boiling away. But then when we go back to VFX, you guys could make the outer edge of it boil.
This is exactly what we're doing with the gas clouds, isn't it? That's essentially a static thing, but we're using velocity fields to push those particles along the surface. You mentioned a dust storm. I know I've had conversations about that, and that's something we could definitely do.
TL;DRThe core gas cloud can't swirl because its voxels are far bigger than a ship, but contrails exist and particles may react as ships pass, with a physics-effector approach something they'd like but haven't committed to.
I think this comes back to that again, doesn't it? The actual core gas cloud tech couldn't swirl. For a start, its voxels are quite a lot bigger than a ship. I don't know how big one of them ended up being, but I remember that you managed to lose a Caterpillar. You put a Caterpillar in the level and then you lost it just by flying away from it.
Yeah, it's just there for like a pixel, isn't it? You couldn't even see it. We had a test video before we finished the whole trailer, and someone asked me, I think it was you, if we could have a derelict somewhere, just to sell the scale. And I had four or five Cats. They are actually in the video, but you don't see them because they're so tiny. But the point is, like what you're saying, a single voxel of the gas cloud is way bigger than the vehicle. So if that moved, you would essentially get a Minecraft type of effect where a block just moves.
We do have gas cloud contrails. They were seen in the video. That's one of the things: the gas cloud itself has a bunch of data that we can use. So I don't think we're going to get swirls, but we do have contrails. So there are visuals. You're going to see something happening with the vehicle as you fly through the gas cloud, and possibly when you exit, while you're still in that transitioning area.
Do you have physics effectors on particles? Some sort of entities or markup or something. If you've got some smoke coming up, you can wave a thing through it and it'll...
Ah, yeah, there was this video someone made with vector fields. Vector fields for the helicopter blades, and it was pushing the rocket trails. Everyone's looking at that because it's so cool.
TL;DRIn the new flight model for Squadron they've been told gas clouds give drag, lift and buffeting tied to atmosphere data, with visual and physical density separate, so a cloud could theoretically be thick enough to chew you up.
Yeah, so we've had some discussions in terms of doing the gas cloud in Squadron. Do we get drag when you fly? If you fly too close to a wall, does it start to drag? And we've actually been told that you get drag, you get lift, all of the atmospheric flight stuff effectively. And that's tied in with data that says there's atmosphere. So I think there's a slider to distinguish how much is there for the visuals versus how much is there physically, because they're separate systems.
TL;DRSmall creatures like insects already exist in the game, and fish or similar might become possible with particles or a boids system once geometry runs on the GPU particle system, though they stress nothing is promised.
Yeah, Caleb did some. And I know it's been talked about, I don't know if it's ever been mentioned, but there's a boids system, which technically isn't particles. I think there'll be some crossover, with particles on a much smaller scale and then boids for, probably not particles for, electric eels.
I do think that once we get geometry on the GPU particle system, we might do more animals. I've seen this example from, what was it, inFAMOUS Second Son, I think. They actually had fish driven by particles, and they did something very simple where they passed the position of the player to that particle system. So whenever you were close to the fish, they were pushed away. I think that's doable. Not saying we'll get to it, but why not?
That's the same tech that makes the sparks that fall in the Hammerhead engine room when it's damaged, hit the geometry and bounce off it. The same tech, but make the particles fish so that they swim around.
Yeah, we've got a bunch of different options to do different sorts of movements, and I believe we can mimic the movement of fish, especially since we've got curl noise, which essentially means that lines can never cross each other. That means you can spawn a bunch of fish and they're never going to go through another fish. I can't believe we're talking about fish so much. Which is cool. I like fish. I have an aquarium.
TL;DRBetter dynamic shadow quality has been discussed for years, but it hasn't been done because it blocks no other content team, so work that unblocks others gets prioritized first.
Yeah, so we've had discussions about this on and off for years, in fact. For a lot of the static shadows work, we put a static shadow area around a hero location or something, to at least get the static shadows on it. We've had some discussions about trying to more easily support more of them, but also trying to support live ones that update. Within a certain distance, maybe you pick out where you need some dynamic shadows and you draw them over there. This is one of a dozen ways that we've talked about trying to claw back some resolution and not spend all the memory on the GPU on it. The reason we've not actually got onto it, though, is that, unlike a lot of the other things that we work on, it doesn't really block any of the other content teams. Nobody's waiting on us to make the shadows nice before they can implement something. It's always something that we could do and check in, and it would just be done.
You bring up a good point. Folks who follow our development very closely, who watch ATV, RTV, Calling All Devs and stuff, can probably get a sense over the months of how often priorities shift. Oh, I thought you were doing this next, and now we find out that this isn't next, this other thing is next. And a lot of times that comes up because of what you just talked about: blockers. We were going to move to this thing next, but that work is dependent on somebody else finishing their work, and their work is not done yet. So things tend to get reprioritized quite often based on dependencies. It's the things that free up more people. If you could work on this and it allows three teams to do their job once you're done, or you can work on this and it allows one team to do their job, or you can do this and nobody else is affected by it, it makes it a pretty easy decision what you're going to be working on next.
I mean, the static shadows work was in theory down at that priority. It's just that I think we reached a certain point where people were putting things in and it did just look terrible. And so we were like, okay, we can move this up the priorities just a little bit. We can at least get static shadows on a target location, because I guess partly there is a blocker there: the art team needs to see what they're creating. Does it look okay in game? They can't just put a load of stuff in and say, this is going to look great when shadows finally happen. So being able to see something in the distance with shadows on it, and see that it actually does look good, I guess that was kind of a blocker for them.
Yeah, I mean, that is them, really, isn't it? We've got a whole bunch of hazards that we want to put in there. I think we've skewed away from the gas cloud itself damaging the ship. Flying into it slows you down. Indirectly, it could damage you.
TL;DRThe rough plan for a gas cloud planet is to reuse existing tech by layering planetary clouds, gas clouds and textured deeper layers with VFX on top, though using gas clouds in atmosphere has unsolved issues like lighting and sorting.
I think we've had discussions about this. We really don't want to start an entirely new piece of tech just to do Crusader, obviously. I think the basic plan was literally to take everything that we're doing and throw it all at Crusader. These were very rough plans, as far as I remember them, but it was like, if we're doing separate planetary clouds and gas clouds, then we could have a layer of planetary clouds, we could have a layer of gas cloud, and for the deeper areas that you wouldn't get into, we could have a couple of layers of palm textures just moving around to give you the sense of all the extra layers. The gas cloud layer, you could embed the floating platforms and the cities and everything into, I guess. I think there would be a lot of extra things to solve along the way. Using gas clouds in atmosphere would be an issue at the moment. It might be a sorting thing. It's not just the sorting thing, though. People who've done quite nice cloud demos have some sort of solution for light coming from outside. The skybox needs to shine through the clouds to give it that rich lighting, which we don't have to deal with as much in space. But yeah, it's pretty much just layer up everything that we've got, see where the edge cases are or what's still missing, and then put VFX over them.
So the answer is yes. The lights are where the lightning comes from and where it hits. We don't have every individual zigzag of it emitting light individually, because...
Yeah, honestly, you don't even need to have it, because we can increase the radius of these lights so you still get some shininess in between. And from a visual point of view, first of all, it's so fast you don't even see that there is light missing in between. Second, you see the impact and the destruction happening after. So two lights are good enough.
TL;DRThey have many weather ideas such as tornadoes, dust storms and rain, but are waiting on some key planet-team work first, and rain also needs shader, graphics and volumetric work beyond VFX alone.
It's going to sound like the same answer, really. There's things that the planet team are working on. There's a couple of things that are going to get done and finished that will then open the floodgates for us to do our thing, if that makes sense. We've got tons and tons of cool ideas for weather. It's one of the things that really excited me about planets in the first place. When I first talked to the guys in Frankfurt, I was like, oh wow, we could do tornadoes and dust storms and rain showers and all that kind of thing. So we've totally got plans to do all that. We're just waiting on a few key things first before we can really go for it.
So the thing about that is, it's not purely a particles thing, because we could make a rain effect easily. We need to have rain affecting how the shaders look on the visor and the canopy and things like that. It's not something that the VFX team alone are going to be solving.
It'll be the graphics guys. It's a big, complex system, really: getting the wetness, getting puddles and such, maybe even changes to the flight model during rain or storms, and possibly, if the storm's happening next to water, fish flying out of it.
Not to mention that you can do particle rain close up, but if you're looking at a rainstorm coming in on the horizon, you can always see that there's rain. You can see this volumetric block of rain, and that eventually turns into actual rain. So we'd need something to do that. The thing that excites me, actually, is that it's volumetric, so it's probably going to be me.
But imagine being up in space and seeing the rainstorm below you as you're going towards that planet. That's what excites me, seeing that storm happening while you're safe from it in space.
Well, everything does in our game. That's the exciting and challenging thing, isn't it? It's real. It's like, oh, that's a storm in the distance, and now I've flown in and I'm in the storm. Lots of stuff to get our heads around.
TL;DRSolar flare and similar effects are on the VFX backlog and one speaker says they are doing them, but close-up stars pose big graphical problems, and gameplay implications were left to design, apart from the guess that getting too close kills you.
We weren't doing that up close. I think this is well outside. Going close to a star is a huge technical task but doesn't give you a lot of gameplay. But I know it tends to be on people's lists to do regardless, just from the point of view of the effects themselves.
Yeah, it's definitely on our backlog. And I've chatted briefly to Todd regarding gameplay permutations for that, but I'm not going to speak for Todd. I'm not going to speak for design on what the gameplay implications are. But logically, you'd think the gameplay implication is that if you go towards it and get too close, you die.
Yeah. Graphics-wise, there are many issues, but one of the significant ones is that we tend to treat the sun as a small ball in the distance. There are various equations that fairly reasonably approximate what that's going to do to the lighting. When you start flying right up to it, for a start, you have to dim it down, because the exposure adaptation on the camera isn't able to handle the brightness of landing on the sun. So you end up having to dim it down to what photos of the sun tend to look like. But then you're also landing on the surface of this ball, and some of those equations take shortcuts that don't really handle something bigger than the Earth that you're touching.
Yeah, I was going to say that we can do all that VFX, but technically the sun is so bright that you should not be able to see anything happening on the surface. So is it worth it? It depends on what we want to show.
TL;DRMirrors are on the roadmap and needed for a couple of Squadron scenes, but because of the rendering cost they would only work in controlled, small spaces like bathrooms, not anywhere such as a city.
Yeah, so mirrors are definitely something we've wanted. I think we need them for Squadron for a couple of scenes, so they're definitely on our roadmap. The caveat is that they can only really be used in some sort of controlled environment. They trigger a lot of extra rendering work. So if you're in the middle of Lorville looking at an advert somewhere, and we just replace that advert with a mirror, you've probably just halved the frame rate. The advantage of bathrooms is that they tend to be small. So we can set up mirrors in places where we can already afford the frame rate to include the mirror, basically.
And if one of them is small enough to be grabbed and moved, people will grab mirrors and put them in front of mirrors. The things that people will do with mirrors in an MMO environment will see no end.
TL;DRPre-simulated velocity fields for swirling gas clouds aren't feasible because offset texture reads in ray marching slowed a test by roughly five times and pre-calculated shadows wouldn't update, so static clouds with swirling particles outside are more likely.
No. The exact technical reasons for that being difficult: we did a test that had something similar, for different reasons. We were trying to break up pixel edge detail. When we're ray marching, we have this big texture and we're reading through it, taking tons and tons of samples. If you introduce something where you have to read one thing to offset where you're going to read another thing, it introduces a small delay on the GPU. And if you do hundreds and hundreds of samples, and each one of them has a separate offset that has to be calculated from another texture, I think it did something ridiculous like multiplying the time it took to draw by about five. So in theory, you could have a vector field that we moved along each frame, kind of like the vector field stuff we do on particles. It's just probably not going to be feasible. Also, things like the shadows that we pre-calculate for those wouldn't update. So it's more likely that we'd use something static and then put particles on the outside. Maybe those particles have the swirls.