good morning everyone I'm one see from the graphic studio from Bungie studio and graphics engineer today I'm going to talk about the Ultima Thule Aero degeneration system for the hill or Ridge so back to the history of our studio you know we have worked for many games in title like Halo one two three but surprisingly we haven't have any real arrow DS system we do have the option which allow the artist to create a low res model for a fiery case but unfortunately it turns out to be the most the rail used to feature in our system so but fortunately our s engine optimized enough we can't steal like ship of the game but in the Halo Reach you know which up we increase the bar quality bar for our game we have a lot of new more stuff need to be displayed in the runtime so we realize we have to have a audio system which can save us the the cost for the for rendering the
same and considering the the number of the acetate in our game and also the analyst iteration during the production we decided this system has to be automated which means you know any update artist made you know we need to generate the low res model for them in a by default so that's our motivation to design this system and this system was designed by three or simple our principles the first thing is like we need a automated automated Nash simplification system which can robustly simplifies the Romesh provided by the artist and also we can fitting the animation information in automatically for them which means you know if you have an animated character when we do the simplification the the low res version stare can be animated properly you know as an animator part ii sa is like we have really sophisticated material system which you know composed
by the qu torrance model tulip foam model and when we switch that's into the low res model we don't want to keep this kind of complexity anymore so we decide you know whether we can unify the mature model is just using one mature model to approximate in anything in our again and the the third idea is you know because this low res model will only be rendered in the far away case it sounds like not important to make sure every pixel correctly so we decided using the per vertex shading model another benefit for that we don't need to deal with you know the texture calling in the parameterization and the texture patreon page when we switch in different low res model so here's the case of three character in our game and when you're in the fiery case actually we were rendered that using this low res you know per vertex lighting model we
call this same in poster in our project so here is a life video we captured in our like engine in contrast the Sun is too loud in the halo so that's what you're seeing that in English if that Idol but actually in our debug mode only freeze the camera and this yellow line indicated the view frustum and when you're flying closer and closer to what really happened in the far away you see all this pattern you know on the Marines hand already switch to the in poster and even impostor is still conferring and you know killing the enemy and for the further case you are finding some jackal on the ground already switched to the imposter another interesting case of the imposter is the elite you can say you know this is a little switch to the pre low res model but the filling of the you
know alien material them you know metal filling still keep and the color and everything still looks approximately correct when you're getting further you will find a lot of environment stuff switch to wrist this really low rest defused looking you know stuff this is our special assistant to handle in the normally in be poster our talk about those later [Music] now let us turn back the time let me poster animate see so this is like you know imposed to really involving the combat with you so which means you know when you play the halo you know you might be cat killed millions times by this little a girl a low-res model but you know you don't really realize their existence so let's go to the technical
detail of our assistant the first system a first step for the Laura's in poster generation is a national publication so here we show the you know a case of the hunter in our game the hunter might be the easiest the case you know in our game because the whole body just composed by one single match but even as simple as the hunter case in a Europe notice the artist has been as tessellated the match really uneven delay if you're sending this match to the you know DX Progress match simple fire when you send a budget to be really aggressive you are get up you know most likely you are getting very unaccept accessible result so to walk around is problem the first thing we do we're trying to do capturing the walks allies the image of this model so we using orthogonal projection generate the depth image of this character from a different angle so along the sixth axis we get six
steps it means here you know the brightness of the gradients indicate you know how close that part of pixel toward you so using our really standard a visual hall technique you know we can generate our works like the representation of the character and then we apply a low-pass filtering and all this work sliced mesh we can something like this you ever notice you know the shape of this hunter has been uh pushed out a little bit but roughly keeps the shape but the tessellation of the Nash looks way better than what we have just now so when you're standing this thing Internet direct snatched programs mesh simplifier New York at the result like this so this one is around like ten percent of the workers count of the original match the original hunter match is around ten thousand the vertex this is wrong with 1000 vertex so this our national vacation idea so a lot of people asking us like why you do the wok stylization so I give a three reason for
that first you know the Myrtle ization can help us to remove a lot of unnecessary small feature over the character secondly you know when artists creating the model the using the pewter that each piece by our component and just you know putting them together you know they buffered in the 3d studio max so this box evaluation can help us remove a lot of unnecessary inside you know interior angles and a third benefit is like because we're using the orthogonal projection to generate the nash and walk slide action for everything in the later problem way through the material fitting you know we can easily align this match with our you know material parameters but that's something we can talk about later and butter the tool back for this reason is you know we do notice some case you know some small feature which your if you're hiding inside of some features because we only do the six way projection you might have the chance to be you know
ignored by rock solid nation but what we found is it's not a really a big deal because normally artists building a character by many many piece each piece is not relatively big so as far as we can get the general profile of that piece you know the hosting assemble together looks pretty representative for the original model so the next step we need to do as we promised we want trying to simplifies them or our complicated material so the way we do that is like we assume we have no idea how we in writing the shader code but we just try to apply the different lighting over the model so we when we just tell them the devious lighting you know we get something like like the case of the very where right over left and if we turn off all the lighting you know we get Canada kid the picture in the very right just show the self illumination of the character and then we can try manipulate
the view and in light direction we can capturing the maximum collection I'm sorry I forgot I have the tax on top in this case is show when NH n is normal H is half vector when those two vectors are together equal to 1 which means does mat mat maximal specular reflection and also we can manipulate n dot H to something less than 1 we can take try to figure out what's that how quickly respecter will fall off so this sounds pretty easy but the challenge is saying is you know for each pixel of the character you know there have different normal if you said one lighting direction the n dot n value will be quite different you know across you know the whole character so we try some method of like the PID F capturing we set a bunch of view and light direction and trying to say hey you know we were totally you know to be agnostic to the shader code and like be our interpretation like 20 lighting directions 30 view direction but
unfortunately you know we find you know this works perfect for the diffuse and self-immolation but it works horrible for the spectra because that's a really high frequency stuff so eventually we have to insert a little you know special code in our shader system you know just to manipulate the butyl erection for each surface pixel this one sounds really scary and complicated but you know due to our really smart sophisticated shader system we can totally compile out those special capturing section shader code in our release builder so which means there's there zero impact for our final game performance but make our Net Zero simplification you know way more reliable so after you get those four images represent four different than you know property of the material so we can roughly approximate you know this material material properties like the first images show the diffused component
we captured the second shows itself in your new mission component we capture and this one is specular so we summed all the three components together we'll get something like this actually this guy is composed by maybe five different shades but after after we do the material simplification you know we just got one material and and each pixel has three properties and for each work so you know we attach these material properties and we apply the mesh implication with the material property which means you know if you sending a texture cube because the texture has a different pattern as different material distribution Europe ends up with more than eight vertex but you know when you switch through to the perfect lighting you still can't keep the pattern keep the filling of the material so that's the trade-off so use you sacrifice a lot of the more we expose you but you get a better representation of the original
model and it's a texture so the next thing we need to do is like do the animation information fitting so we call that skinny formation fitting the idea is pretty simple so let's look back to the Romesh and for each vertex of the character you know we have a four different animation bone attached with that vertex and has a different weighting function the way we generate is the weighting function for each in poster bird X is we first looking back to original model find all the neighbors vertex and so we gather the you know get a list of the bones need be could be involved for an animation you know because you reference to more than one original vertex you may easily ends up you know with more than four and emission bones we're just sorting them by their original weighting and also the distance the waiting by the distillate to to this low res vertex and so we figure out which animation bone is the
most dominant one and so for the impulsive model we just animated character with a single bone rather than the full bone interpolation this one sounds like we sacrifice on quality but is an is ten order to be a really big you know improvement for the in poster performance because you know you only need animated one bone in your vertex shader so this is the like fit of the result so that's that's everything about our you know object in poster sister you know it's pretty simple based on three simple idea and but we do find as I'm challenged with of this system first you know when we do the walk so filtering with line of the feel thing kernel is really sensitive value because you're setting the courage to get kernel to be a larger you will get them you know smoother result and which means the master vacation result or well looks better you can using more aggressive budgeting but if you make that saying too aggressive you know you are getting
some better result like this because the neutral post of the jackal the two legs sitting pretty close to each other so when you apply in the filtering you know those two legs will be linked together and another like challenging cases for us is like the transparency we do try some technique or to detect also transparency stuff will run on different masses but it turned out to be not very reliable and another thing is recent jump ship because will do the watchful eyes Asian you easily makes a single face geometry to be double faced at work sliced that's that's okay we know generates the sauce walks allies the match for the simplifier but we run the simplification you can easily get the the front and duck face intersect each other which you know looks pretty ugly under the lighting so for those two challenging case you know our solution is quite simple we just say hey do nothing so we just give the option to the artist say if you noticed anything wrong just ten often poster for that particular part of the object and we try a lot of like different the character
you know and answer the inner again we found a like set up set up a reason of a buzzy thing it's very important so our experimental result is for the for the object we normally said twenty twelve percent you know we're just kind of the original mesh and we found out the transition distances transition distant means you know the distant when you switch from the object to the imposter we set it up to be the thirty times of the funding radius of the object that's a post of data are purely x-men and experimental result so which means if you're trying apply this technique in your own game you need to set up your own data so there's two data just for your reference and for the environment object Nina wishes to be a different story because environmental objects mostly like tree like Roxy nose those things are pretty static placed in our ring level yeah don't remove but there's they have a lot so we find like maybe we need a you know a better
solution for them so the idea is very simple is what about we just directly bakes the lighting result in top in our preferred color rather than run the shading the reason for that is because those environment objects they just taking one location they already know what exactly their lighting condition will be so yeah we don't even like do all the complicate complicated multiple stab like set up your lighting set up your material do the shading in the picture we just say hey start everything rendered object the second optimization we did is we trying to you know grouping all the neighbors environment option which with the similar size into one group group so which means you know when we do the rendering we just do one single to a primitive a call and we can render a bunch of them which should save us a big overhead of the cheap CPU time because the the direct and set set up the render call is not not not out of cheap and if you do that a thousand
times for each spring the overhead is significant so here is the video so our you know imposed to only environment object look at all this rock when we're flying camera further you are flying that this Rock had actually been failing to the only diffuse looking poster but you are no you will notice their lighting matched pretty good and it's pretty hard to notice and so fading in the back and now our eternal in the debugging mode which means you know when you fly in the camera way if you are already in poster we were using the blue a while frame to indicate the switching and but you are noticing when you're flying really far a group of environment object we are sending as a renders one jock Hall where you indicate that with with the light burning box so that's how our imposter system works with environment objects so that's pretty much you know
everything about our ultimate LD system for Halo Reach you know it's 10 out to be a pretty big way for our performance for the dynamic objects characters the in poster rendering is about 10 to 20 times faster than the original model rendering and for environment object it is about 550 200 times and a faster than the original one the reason for that we already explained because we just using per vertex you know pretty baked color rendering so it's it's supposed to be that cheap and on storage you eyes you know for the for the dynamic object which is around a tiny less so it's kind of like a little additional data you know sitting beside the original model and for environment you know we pay a little bit more because we need to bake the lighting which means which means you you know for the same for the same environment instant definition you know for because for its different the placement we needed to generate a different in poster this thing sounds scary but you know because the per
vertex overhead is so low it turns out that we still five times smaller than the real memory cost of the foreign poster of the for environment object and so we find it's a really valuable in an inverse investment for our system considering the three years production time of the halo race and we have hundreds of people's thing you know we rarely have the case you know artists need to do is the system to figure out they know something's wrong and they just go ahead created their harvest model they work at this low res model by free and we also realized you know it's you know it's really important it provides the manual switch which means you know for any broken case you know we mentioned before and some you know unsanctified case you know the artist and the QA team always has that option to turn it off so so there's still something we want to improve in our future like game developing one is you know we we decide we decided using the direct national fire and progress mash
but in the later we realize you know in a well be way better if we can write our own mash simplifier the reason for that because we do the capture capture of the of the model we capture a lot of information and our artist also artist has a lot of like you know idea and some you know hint information want to provide to guiding our national vacation but using the third-party massive fire we don't have the luxury to customize that and if we write on our own we can easily cooperate those you know information the guys give work to get a better result another thing you know we won't seriously adding allow the artist customized a low-res model because we find out the artist is still the guy who know you know how this thing supposed to looks like best so we can give them you know good looking for 90% of case but they stay over 10% I mean five percent of case they finally the week better I can create my own so we think this option is very important for our content team so that's all of my talk and thank
you very much and so if you are interesting with the Bungie studio and we have a bunch of opening and just feel free contact contact our HR and so if you have any question please step to the microphone thank you [Applause] yes I was curious if in this work if you ever enter the case where due to the reduced amount of vertices if you ever were running actually slow or doing things for vertex instead of per pixel seeing that fewer pixels were going to be the object hmm okay rapido Crestron yeah okay um in when you were using this system did you ever run into cases where an object still had enough verts in the object where it would actually run
slower per vertex rather than per pixel or was it always a win to do it to do everything per pixel at a distance we try to the per vertex simplification before like just sending the original mesh but the result is not good but unfortunately I haven't haven't have that same shows up because that's pretty pretty early try we run a bunch of the you know objects there and we're all I see no we need because when the artist created the model you know their tessellation is really you know a birch tree so we realized we're using the per pixel solution to make that or saw smashed tessellation as the Eva as possible we're benefited the the follow the submerge simplifier a lot so yeah hi um what simple changes did you make from Halo 2 to halo reach as far as
using imposters because in Halo 2 you could see the imposter sometimes when it was loading didn't you do some sort of line of sight changes or timing changes like what would be the simple changes in the halo 2 and halo 3 our we don't have an impostor system that we have a low-res arrowed low res model available which means for any object artists can create a separate low res model and attach the reset object and set up the transition distance the problem for that setting is you know for most case artists is just you know forget to you know create a low res model another challenge is you know because in the forest model you have a lot of fans in the theory and in the texture and looks awesome but we try to create a low res model you want to using cheaper texture cheap reliance upon to your model to make sure the two version looks you know similar to each other it's pretty challenging imagine like you have really fancy image here which can post with 20 different material and if you're trying to simple trying to you know mimic that
with just a simple form shader you know trying to find the right parameter for that it's not a trivial you know sayings for the content team thank you yeah so I think it's about the time okay thank you very much oh another one say you please spell the evaluation phone thank you good luck you thank you I think all I need is the F the sound thank you oh if everyone could shift to the middle so we can get more people seated you're coming in a yes
Auto-generated captions from YouTube — names and numbers may be misheard.
Distilling the key insights…
Game Developers Conference · 2026
Game Developers Conference · 2020
Comments