What's new in Unity's Universal Render Pipeline?

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] w hello everyone and welcome back to unity's live stream I promised you all last week that we'd be talking about graphics and vender pipelines this week so that's what we're going to do today we'll be talking about urp specifically which if you're unaware stands for the universal render pipeline uh at unite 2 weeks ago we showed off the beautiful 3D sample scenes and how smoothly they perform pered on mobile platforms uh you may have already seen that but there were also some other talks from our product managers that took place outside of the keynote and I know many of you couldn't be there to watch that talk and neither could I for that uh matter so we brought the team here today to go over all those juicy urp details and I'm going to be learning right alongside you uh this is your chance to ask any graphics related questions you may have since we'll also be doing a Q&A at the end the team who who's coming on today prepared a lot of great topics on what's available for Unity now and the peek at what's coming in unity 6 so without any more delay I want to bring the team on uh so let's cut to the urp sample scene trailer and then introduce our guests [Music] [Music] [Music] [Music] and we're back all right I'm here with our amazing guests I'm here with yonis Oliver and Matthew uh some of you have been here before uh I think Oliver maybe this is your first time on the live stream but uh for anybody who's watching we'll have all of you do introductions uh we'll start with yonas to my uh to my right go ahead yeah all right hello everyone I am yonas I am a technical artist and I work with the urp team I've been at Unity for 4 years now a bit more um and what I mainly do is just work with developers uh to to make sure that that our features work the way that they're supposed to and and also you know we we we talk about priorities and stuff like that and then for the past year I've been mainly working on on this new set of of sample scenes that we've just released so I'm super excited to to to to give them to you guys and and have you try them out we've already gotten some some great feedback so so it's it's very cool um I'm happy that about the reception that that it's gotten so far so happy to have youis thanks for joining us and we'll go clockwise down to Matthew go ahead hey hey everyone uh hi it's so I'm mat I'm product manager for graphics uh I was product manager for hdp um and now I'm product manager for urp as well and I'm sharing the the the duty with Oliver so that we we both manage the the two Pipeline and the script T run the pipelines and I've been at Unity for almost yeah 9 years now more than 9 years and um and I studied as a a solution engineer so traveling around Europe and talking to many people people helping people on the ground and um uh since about four five years I have managing the strategy technological strategy in different areas so yeah um happy to be here happy to have you mat thanks for joining us again and uh last but not least Oliver yeah hello everyone I'm Oliver I'm um based in Germany and I'm uh also a technical product manager on the graphics team working alongside with mature on or scriptable render pipelines or srps in short like with urp and hdrp um because we want to also um look at them as a cohesive um platform and um yeah I work with the engineers with the designers um and with technical artists like yonas here um so that we bring like all the um requests from the community like the asset store developers or game studios so that we really help prioritizing what's uh necessary what's good good um how to um make a better unity and I'm really happy to be here uh to present like the latest uh urp sample and with this also like a sneak what's like the next versions coming so yonas will show us in editor like a lot of nice things and yeah I'm met Unity since uh six years nearly now um so I enjoy it a lot and uh yeah looking forward to this year so great to have you as you mentioned we're going to be looking at uh urp and like what we have today and what's coming up in unity 6 we'll be and this is going to be a very visual show we'll be sharing screen in editor we'll be looking uh at code and we have some slide presentation uh presentation slides prepared as well uh but for yeah just maybe we can start with a bit of a high level start with yourp and a urp overview just in general what is urp you know the universal render pipeline Matthew maybe you can um kick that off for us and then we can talk about uh what we've been working on uh recently yeah so so so maybe a bit of History here uh we we when I started at Unity we were introducing Unity 5 and we were introducing the built-in Runner pipeline which was the first PBR pipeline um and then we we uh we went through um uh like we we went through some iterations on it and after four or five years everybody was using it almost and now um in I I mean four or five years later we started to introduce a new script of Pipelines uh the reason why was that we we had like three M main feedbacks the first one was that the buildin runner pipeline was a black box second one that like our pipeline was neither really optimized for lowend or for highend and and the third one was like a lot of as an artist it was kind of hard to um to work with unity because you need to assemble a lot of things by yourself so this is when we came with this idea of like having scripted ber R pipelines to open the black box and then build on top of this Universal render pipeline which was at the beginning the lightweight render Pipeline and um which was really which became the successor of the buil-in render pipeline but more like open through like with sharing the the source code um and uh optimize for mobile first which would allow to to reach the like the maximum number of platforms naturally um and then hdrp on the side on the other side uh optimize for highend platforms and with a lot of tools for the artist of the Shelf with materials lighting and so on like Advanced Materials and lighting so basically that's urp story in a in in in the nutshell um so here we are 22 LTS it's been four years I think almost 5 years we introduced urp so it's yeah it's it's getting um pretty good close to parity with butin and a lot of things so one thing which was missing was um like when you target that many platforms and when you can do this many genre of of styles and and games like how do you really start uh like from from there you know what are the settings that you recommend and how do you set up your scene and so on so we came with that idea that one sample would be really hard to cover everything so we decided to go and do like multiple like four scenes that would represent like different use cases and and at the same time you know like when you have samples maybe something I want to add is um like when you like in hdrp we added a a more advanced sample than what we had before and it really um like it really put the quality of our product uh higher because like at each version you have this reference scene that where you have all these features working together and at each version you can compare if it's going good or bad or or worst uh you can add a feature on top of the other one and so on and people can just use that right so these demos are like checkpoints even for the internal teams at Unity to kind of build and build upon the uh the features exactly and it's a contract with users as well you know it's like hey this is what you can do and here it is you know it's not like oh you could do all this stuff but we have no proof point of that right like you you will be able to open this up explore it yourself so that's that's the proof great you know for example like we we said Unity can build on that many numbers of platforms mhm but here with these four SC in yourp for example you can really like you can open and build it on on on your on your iPhone on your Android on on your quest on your PC on your switch and so on and and these these have been tested this way and this is our reference for us yeah and so the the scenes we're going to look at today they they all run on mobile platforms right yes yeah they all look amazing so I'm excited to jump right right into those do we want to jump into those right now yonas and share the screen yeah yeah we can do do a quick look at do a little tour of them do a little tour of the scenes all right awesome and and and we can keep talking as we as we walk through the scenes so let's uh let's open that up for anybody who hasn't yet I mean one one thing we we like we we share them in September already we had a kind of early access on the Forum uh so if there are people who are following the stream today like thank you a lot for the for all the feedback you know like we we internally tested it during the summer and a bit before and then in September when we release it to everyone we we saw all these great comments you know looking at everything and saying oh you miss this optimization here and oh you could add this and uh so it it was great to see yeah um and and and it was just available on GitHub now since what a week and two weeks since you night you can uh directly have it from The Hub so it's very easy to get oh perfect yeah yeah so it's just when you create a new project U for now it's only available on 22.3 but if you create a new project in 22.3 you you'll basically see it down here as like the the 3D sample scene urp and you can see on the thumbnail that that is this uh this project here um this version I have opened here though is in 23.3 so this is what what will eventually be the the unity 6 version so we can show some of the new stuff perfect in the chat we'll drop a link to the urp sample scene page as well so you can get an overview of everything we're going to look at today and and be careful to use the latest version of 22 uh because we had a few issues I think one or two versions ago where the the sample was not loading well so like if you check be sure you downloaded the latest version of uh of of unity mhm yeah and so as as was said we have we have four scenes and this is one of them the terminal and and this is the place that's going to be loaded up when you start the project and that's because we we decided because we decided we wanted more scenes than one we we also had needed some way to Traverse them and that's basically what this is It's both the space to do you know you can drop in your assets and and and check that they that they look that the way that they're supposed to look in yourp but you can then also move around um each of the different scenes and then there's one room for each and we built uh a nice transition effect inside these rooms where you can see that this is really cool the screens will turn on yeah and then I can then place my Crosshair on on this hologram in the middle and it'll start like dissolving this entire room and if I look away it'll cancel it but if I if I stay on there it's going to eventually re reappear as this new location kind of like a a seamless transition completely smooth I love that yeah yeah we're happy about it as well it was kind of a an opportunity to show how to do it's actually a custom post processing effect that that's doing the actual fading and it's doing some nice tricks with with using the stencil buffer to to mask out so it it doesn't happen on on the content that's that's consistent between the two shots right cuz right cuz the like if I go back in here you can see all all that's on this screen is going to be consistent between the two cameras cuz if I'm here it'll be on screen and if I'm there it's going to be the world right so we can basically make the transition when everything else is black so I'll just go back here so we can see it it's not just an image it's really a real camera looking through the the world right yeah exactly it's it's rendering twice so it is a bit expensive it's it's not a cheap effect and just for a moment right where where there's two cameras rendering right yeah so it's why it's while you're here it's two cameras so so to get proper parallaxing you basically need this we you could probably do a trick where you do like a cube map or something that's parallx mapped but but but that's like that that's for a future thing we can do for for low end platforms but for now this and we have we have lots of questions coming from the chat and please I encourage you to keep asking questions we'll I'll ask them throughout and uh we'll also do a Q&A at the end and so we have a question from uh flight fight 42 asking will it be possible to use the stencil buffer in Shader graph in unity 6 so that's not a feature that we're planning to have um so what you can do is I actually thought that there were Sten settings on on shadra I think there is I I think there is right uh let's let let's let's check it out let's let's see let's find a let's find the Shader uh let's see here maybe we go to the uis and we can find asking us the good questions right right off the bat I like to Chad the chat knows what's up yeah maybe while y's loading what's also nice about the transition effect which said it earlier is like that is not only loading like the scene and the content in the background but it's at urp even switching the renderer like when when he translated or transformed into the Japanese garden we were using the forward plus r R like the new one that we added to 2022 okay and uh this is basically like a different renderer that allows to have like more real time lights on it and when you then go back to the terminal it's loading the standard renderer of of uh of urp there so it's like um basically also like the seamless transition of different rendering algorithms that you can use in your games depending on the scenes on your content so that's also I think worth mentioning here so you have more control basically this time around great uh yeah so the the Shad graph itself doesn't have any stencil settings and now I'm looking at the materials no so yeah it it it's not it's not something that we have I guess what we do have is this render objects where you can you can override the stencil setting but that's that's definitely something that we're missing um I'm going to have to to check with the team if if it's something we can do in like a short amount of time it shouldn't be too complicated but yeah I'll have to check that out keep and that's great that's why we do this right we get questions that maybe we didn't think about from the community and take that as feedback so I really appreciate that question always listening but you're using the stencil right uh Jenice on the uh yeah so what I'm doing is is using it to to basically filter the rendering logic but this is all set up in the renderer so if I go in here and pick my renderer you can see that that I'm actually I have this this uh full screen mask and this is overriding the stencil value and this is then what I'm comparing uh when when rendering everything else so so I'm basically using this to to render this densil effect and then the the actual I think maybe that's let's see here so I think also this will do some stenciling ah it doesn't look like it yeah I I can't remember exactly how this stencil is set up here but at least at least the renderer is doing the actual stening and then the comparison must be it's in the shadow oh it's oh it's in here here it's available yeah okay so it's only available in the full screen Target that's that's what it is which is there's actually no reason that it should only be available here but yeah if you're doing the full screen Target which the the the the dissolve effect is a full screen effect then you'll have the the stenc override settings down here so that's what's happening so render the guess something you you you'll bring to the team I guess after this yeah yeah yeah I don't see I don't see a reason why this should only be available on the full screen pass it should be on on on all any Target perfect and oh go ahead goad M now full screen is a is a new stuff also so maybe not everybody knows like it's a it's a possibility to do full screen effects directly with Shadow graph um so it's this this new node like basically you can almost do everything by was using Shadow graph uh no not everything everything but like a lot more in the Oasis we also use it to do this FK and that's actually something that that I was thinking we could we could go through and and try to kind of build from scratch to see how how you work with these like with a full screen Shad graph but also how to to work with with image effects and post processing in in Europe in general should we walk through the Oasis for a bit just to give people a little look around sure yeah yeah and and uh so everything is like in the these scenes look really beautiful do it does it look exactly like this when you take it to mobile platforms or are there certain adjustments made how how does that work yeah so no it's uh this is on the PC high setting we have a couple of quality settings in here uh which I can't change while we're running but um you'll see that we have two for mobile and and two for PC okay and and it'll it'll look different of course the mobile high is still pretty pretty good um the processing is is different oh this doesn't look right so I think the the the postprocessing volume might be wrong for this so this this as I said is is our Branch that's going to be up that's going to be the unity 6 Branch so it has some things that are not working but imagine that this was pretty yeah yeah we'll do that um and then yeah so I guess it makes more sense to compare these so it is a bit different right you can see that the Shadows disappear we're now on the low setting on the PC low it's it's very low like uh not very powerful PCS we just go we don't do the the the additional Light Shadows like this Shadows at all so you can see here we have a real-time Shadow on high if we go to low it'll be much less defined that's because this is a shadow mask I can quickly show using uh like if I go in here there should be a debug view here that where I can show The Shadow mask so this this rendered Shadow texture here it's like a we're using this for Shadows on low end but only and then on high and we only use it for the distance Shadows it yeah yeah and this scene is basically recommended for like iPhone 8 or up or like typically handheld consoles that you find on the market uh like Nintendo switch uh you can run it quite well like with uh with good frame rates here yeah a it's a higher quality of all we wanted to like this is the one where we're pushing a bit High the settings okay yeah exactly and and the currently it doesn't have V effect but we we have a have another Branch where where we're going to add a lot of Def effects like sand blowing in the wind and adding some more animation to the to the actual terrain material as well that'll that'll make it a bit more Dynamic and alive so so that'll push the requirement a bit more um but but it's a good it's a good way to show that that that we also can do that right and it's not saying that it's going to be too high for mobile it's still going to run run very well 60 FPS on like an iPhone 13 or something not and I have it running on my iPad a here but I'm not sure if it's like it's probably not not with the with the bright yeah it's like a little dark but it's really like uh nice and fluid like on the device directly so can you show it show One More Time full screen you so you can show it off yeah but it's really bright we see you walking around it's live it's live put it at an angle a bit yeah bring it closer to the camera let's see yeah I don't think like yeah no it's okay we trust you we trust you we trust that running on I mean if if you look the if you look at the the Keynotes from unite like uh Steven who was showcasing the samples he was running them live so you can see the image of how it looks and we'll drop a link to the keynote in the chat right now as well yeah and the garden scene is I guess optimized like for like as a reference device iPhone 6s so it's like a 8-year-old phone maybe um um so we um we often use like iOS devices to have like a reference point um so that people can compare it and say like okay that's like um the suggested um phone we use here and with all the realtime lights it's really running well on on this device and uh yeah of course like you can also lower the the content that you might have to even reach like lower end devices so but this is like a reference content we wanted to show because we also wanted to show like really like a modern game style that you could reach with urp and not just something that was already possible like uh with all the other rendering before yeah and uh for today we we're get a lot of our focus is going to be on uh post-processing script templates and the render graph but if you want to see all the details that went into these uh these sample scenes we have a GDC uh talk from uh this year and we also have uh the previous live stream which was the LTS release live stream where we Dove really deeply into all of the features like forward plus rendering the LOD cross fade and uh all kinds of other uh features but um I think today the focus will be more again on render graph and the appr processing uh script templates Y and a bit peek at Unity 6 as well or we'll discuss some of the features for that maybe we can jump to that yeah I mean yeah I mean you like for example the dve effect that we showed at the beginning you can watch it on the GDC talk um the present there is really amazing uh it's it's j us here um and uh yeah no it's really cool he did a really good job at like a a very good live demo also showcasing a lot of the things that we've shown now we make a better one today yeah exactly more ambitious today so it'll probably fail and there is a there is a unite talk as well also uh we did a talk together at unite detailing even more uh features on that that will come be coming soon yeah uh but yeah so this one is exclusive is exclusive demos for you yeah perfect love that love getting exclusive stuff on on the live streams so Unity 6 yes let's jump right into it so yeah maybe I I continue my story um so it's funny because we I've been telling this to some people for some time you know explaining that 5 years ago you know when we stopped uh we we stopped kind of investing more on builtin and investing on srps that it was a kind of unque 6 that we were starting but on top of unity 5 right uh because we introduced the package manager so we thought hey we can actually add like a new renderers and all this stuff on top of unity 5 um so it's funny because I've been saying and now like 22 LTS and and basically 23 LTS is a kind of like a wrapping up of that cycle where we we wanted all the things that we've developed for the four five past four or five years we wanted them to work well to be like super production ready and and um and working well together so so that's why I think maybe that's why we call it Unity 6 now uh we could have cut it Unity 6 5 years ago but it's it's a Unity 6 where it's actually it has shipped games you know like urp we see we see now almost every Studios that we talk to are using urp or hdrp to to build games since one or two years um and most of the games that we see released today also are using srps so it's funny you call you call it when it's done you know somehow some people were saying hey unity5 became real you know like uh maybe in 2018 you know and uh it's it's the same I think what we've done is becoming really real uh like in 22 LTS and unity 6 so and it's also to to have like really like an easier aiming schema in the end like because it's like sometimes weird like when you have like um like a version like now 20222 uh is like first it's like not hard to to to tell but we are like end of 23 now and it's the recommended version so we thought like it's easier to to get away from the the yearly naming schema uh and really have more like uh like this Unity 6 release and I think it's it's much clearer while it's still like a very um production ready um tooling already with the first name of unity 6 because as mat said it's validated by like hundreds or thousands of games that have like reached millions of players um or billions of players even so like it's really like um like really like the render pipeline uh that the majority of Studios uses these days for like really large Productions and and so in unity 6 we we do uh we have a few features um we spend a lot of time polishing and also being sure that the core is right um but some some of the I would say quality of features uh also that we added so for example the Cod less shed globals you know like we wanted also as much as possible that tech tech artist uh don't need to add too much boiler plates for nothing so for example in the in 22 LTS on our samples that we have we have a a global fog that uh that Jas will will um also redo now in front of us but like you have these global settings basically that you want to share and before you had to to write some BO plates C for that now you have a dashboard for it or if you have a wind system for example that you that is managed through the sh graph you can you can use that um we have also like it's a it's small things it's actually like a passion project from one of the one of our QA in the team who really wanted to to like to work on that for some time uh like it's your screen space lens FL uh maybe Jonas you can you can you can play JJ Abrams live yeah yeah let's let's do some we're actually looking at this right before going live so so so in 20 in 21 I think or 22 I forgot we added SRP lens faires so it's a lens fair that you add to a given light you know you you take your directional light and then you CH you choose which exactly which um elements of the of the lens you will display so it really looks like a the way you would do it in fils with After Effects and so on you have a lot of artistic control but then you need to place it on each light uh and then it only works on on lights it doesn't work on specular highlights um so this one is like very automatic uh we can see it here you just add a uh screen space lens flares so yeah it's it's on the on on the post processing menu and you just add it and just boost the intensity get it up there and there's also streaks if you want to go like full sci-fi let's go like this and and here yeah as you said Matthew JJ Abrams would be proud of us right now like oh look at this and it's nice cuz it works on emissive it works on specular highlights I don't know if we see it on Reflections on the on the water but like you would also get the the highlights so if you have a racing game for example it's perfect to have the lens SP on the on the yeah see it here on the water it's Prett cool cool yeah so it's great you know like it's very easy to to add and um and it's it's it's a nice thing it's kind of combination of Bloom and andl yeah yeah it's a little a little gift you know and it's great when you have people motivated uh to to land something you have to be careful with it though CU it it can get pretty expensive it's it's kind of like a a feature that I would reserve for the for the higher end cuz it uses the bloom buffer but it has to do additional steps right it has to resample the bloom buffer a lot of time and especially if you're doing streaks it has to do a lot of passes to to draw out the the buffer like this so just yeah be a bit careful with it and and and remember to profile yeah yeah it's also great you can use it in like cut scenes or for moments like that basically always have to be on at all times yeah yeah and they are like it's it's kind of the same price of the bloom right now like Al together I think a bit like not too far away and there are ways to to reduce the cost a bit somehow with the samples and if you don't go too crazy with the effect as well yeah so it's on top of a bloom right so it it's running Bloom and then you run the lens flare on top of it so it's basically taking the bloom buffer and doing extra work on it to to give this this FL exactly nice um and then we also like something we've been working on as well like for a long time it's the next slide I think um is uh the uh is to is like we have a team which really works on on also unifying the pipelines and aligning the workflows uh down the line so for example you know in in HP we had Global volumes so so that when you open your project basically you can have stuff set up by default you know so that it's everywhere on every scenes you would have the bloom or not or the the the different effects already set up for you and the uh and this is now also like this is exactly the same now for urp and hgrp you have the same system we could see in the editor or not but and and the the good thing is too that you for each quality level then you can choose a volume that would override uh these global settings so that after for each quality settings you can override for example the for example you could just uh like enable the screen space lens F on on um on the global settings and then override it when it's too low to to disable it by default and then it will be automatically disabled and if you want I'll just quickly show it so here in the quality settings we have the the P Asset for for PC high and we can then at the bottom here it'll have a a a volume profile assigned right and then I can add I can do the screen space lens flare on on this one only and that will mean that that here it's it's it's running but if I go to PC low it'll now not run the screen space lens L exactly which is a really important here to not is that we improve the performance a lot on the volume framework so that it's actually usable on like also lower end platforms so that it makes more sense for for urp on all the devices on hdrp it was neglectable like on on most platforms but like the urp that was really important and hindering like to to use it full-fledged and now with the new Revisited um volume framework you can use it like here for the global volumes for quality settings but also to blend them in in your scenes and so on so that's really really good yeah we really wanted like volume to be first citizen for srps and and us around there like that's very important to align the the also the workflows between hdrp and urp yeah and and we had it some some details s maybe or like for example uh just to note uh we for example before you were placing a a global volume on the global settings um but you could you could have a volume just setting Bloom for example and then you had no idea what was the default value of the other post processing now it's really listing all the post all the post effects that are possible so that you're sure to control exactly what are the default values cuz some people were like oh uh I don't understand it's very expensive it's like oh you have this enabled and they say no I don't have this enabled and then you're like he go to the global volumes oh it's not enabled ah yes because there is this default value which is hidden and you should add this this value you know so now it's very clear this way yeah little uh improvements or quality of life kind of accessibility improvements great uh we have a question that's coming for the the other feature that we're adding is this new template for for for post processing right J I think uh as sorry we just had one question from the chat I don't know if if yanis can hear me actually there might be a oh janess can you he us I I can't hear us oh that's why we'll get that we'll get that fixed um but yeah we have a question from the chat asking just in general um this this comes up quite often I think it'd be good to to address it a lot of people ask about the render pipelines and uh if there are plans of unifying render pipelines at all how that will work urp hdrp how we're approaching this uh at the moment so yeah so as as I mentioned we we like we started already two three years ago to work on like aligning more the pipelines so really we really worked on on all the graphic settings and on the way we are setting up this the pipelines together and our initial goal was to align the workflows and to be able to have two pipelines in the same project so for example now uh you can actually put a a universal render pipeline asset on on a quality setting and an hdrp one on another one like you can actually have the two pipelines in the same project it's possible but it's not really like I would say supported you know that's the direction we want to go uh you so you can test you can test by yourself um but yeah it's a it's a it's where we want to go basically to be able to have the two Pipelines coexisting with better alignment on the workflows uh this is the direction we're going to but for we we already have like a lot of teams working like on both pipelines like both of course like the Shader graph VFX graph they work with both you can have like the the targets there but also on the foundational things it's really like a shared uh engineering team a shared product resources Q&A so that we really like converge the two over time it's of course nothing that we can do like from one minor version to the other so it's really like but it's it's like a goal for us to have like the scalability much easier but still keep the benefits of the two pipelines like with hdrp really uh reaching like a full physical based rendering with um highend visuals on like the modern consoles or like for all PC and console but keep like the um really the extensibility customizability of urp to really create unique lighting unique styles for your game so it's like two philosophies we also have two like different uh um Target devices like a mobile phone is really different from the architecture of the GPU than like a tether device that consumes like a lot of heat a lot of energy but it's definitely that we want to have alignment more on the workflows on the extension points and everything um but still keep like the really the uniqueness of both pipelines intact so I think that's really important um and we also careful there yeah that brings up two other questions uh one about uh unified uh shaders for both urp and hdrp uh people are wondering if there's going to be such a thing as a unified Trader for both so they don't have to convert urp assets to hdrp assets and and uh vice versa I mean you can you can do it already today like if like if you're doing a shadow graph Shader you can select the both urp and hdp as targets so it's it's already possible um and that's basically that was our Baseline you know like internally we we've done some tests where we have a project and which is like which has a two pipelines on the same project we have only Shad graph shaders and then you can swap from one pipeline to another one um so it's it's possible what we're missing is to have a standard one to define a standard one which would be the default one and works for both shaders that's something we we are considering very strongly for the Future Okay um but yeah it's we wanted to like we really wanted to to go faster on this but down the line we realizing also that a lot of like a lot of people end up using also naturally just one pipeline uh in production and so like the coexistence was a bit less important than actually polishing and finishing some of the features of urp and hdrp so we spent our resources on this uh more for now but that's definitely on the top of the stack for the future okay great and earlier you mentioned having both some urp features some hdrp features in the same project some light some hdrp lighting for example and something's done differently in urp is is it the case that if you want to build let's say for the switch or for a more lightweight platform you can just turn off the hdrp feature so to speak and then have a different looking version that's built for the lightweight platforms and then when you want to build for you know a Sony platform or Microsoft platform you can just turn the hdrp features on is that kind of the goal the vision I mean yeah I mean probably down the line there like we want to align the artist workflows that's the first thing um but then the real question is what do you redo you know if you go from low to high what where do you spend your energy redoing so that it looks better um and sometimes you will redo the lighting you know because you you won't you won't be able to bake like you you will want more realtime lights you will you will want to tweak the quality of Shadows you will want to to to balance between what is bake lighting and indirect lighting and so on so you might redo the lighting uh but still we really want to the vision is to have more line workflow so that you don't have to place twice the lights for example um uh but yeah but down the line very often and and you could potentially do it already uh in 22 LTS is if you have a lighting scene for example uh with your post processes and your lighting uh and you have a urp1 and then you you if you want to move to hdrp or vsi then you create a like an hdrp lighting scenes then you keep like the set sharing the same shaders with Shadow graph and all the placement then you could swap the scene and then you would have a lighting made with one by plan and the lighting made with the other one yeah okay yeah but as much you mentioned earlier it's not really like the supported or use case that we would advise right now it's like you could use it for porting your game so if you like start on like PC and consoles with hdrp but would like to uh to to you realize you also want to Target like a lower end platform it's possible to use like the coexistence to to Port it easier but it should not be the default case right now that you use both pipelines for one title on the same time there are titles that did this like Lego builder Journey For example uses hdrp with rate tracing and a lot of features on on PC um and console while on on iPad and so on they use uh urp but again uh yeah on switch as well so but again like U it's also like often times like more like uh a choice of Art style um urp is also leveraged like a lot on PC games in the end where they really want to extend it or override the light Loop um where hdrp is right now because of its physically correct rendering everywhere it's last l a little um boxed more um so I think that's also important to to to understand that urp is not only for for mobile right now it's really like more for like a a genre type or like a and I've I've interviewed many creators on the Creator spotlights that we do here on the live streams who have building games for PC using urp and the games look absolutely stunning uh just one example lost and random was a game that they actually started in hdrp but then decided hey we can make this look just as good in urp using just a few different tricks here and there yeah and uh the game looks absolutely stunning you should definitely check that out and the Creator Spotlight is available still on our YouTube yeah yeah I mean we we will share more I hope like next year on the on the on the vision and so on uh for the future but yeah it's it's top on our mind definitely it's a one of the super exciting stuff after Unity 6 yeah definitely amazing so basically the vision and philosophy going forward is aligned workflows at the very least and we'll we we go from there and people in the chat by the way are very excited about any quality of life improvements they're they're mentioning they're like plus one for any quality of life improvements so yeah that's right also keep them coming like really like sometimes it's the small suggestion that we might Overlook like I mean we we of course like aware of like some some shortcomings and work with ux to improve it sometimes it takes like longer than we all wish of course but like uh keep like recommendation so we we try to do our best to get like really less clicks as possible to to achieve the things um you can do right that makes a lot of sense so we'll continue with the the presentation maybe we can bring the slides back and Matthew you can keep walking us through it yeah I mean I I will let the the mic to to join us cuz he he will show us how you can now do uh custom post processing effects like as a tech artist um in6 so yeah to you all right yonas oh we can hear can we not sure okay oh there we go okay so yeah there we go what I what we added is a new template a new script template for for post processing effects and I I thought I'd just show it off in in the editor yeah please so I'm going to open up the Oasis scene here where have this this fog in in the background here that it's a bit more complex uh it plays a bit more with with with the light than than than the built-in fog in in urp so what I'll just do first is I'll just uh disable this one so we can actually replace it and let me just create a folder for for it here U so what we added is is a new item in the create menu under rendering called a u postprocessing effect and it says in parenthesis render a feature with volume and that's basically um that's basically what it is so when you create this you get you get two scripts one is the render feature which is like a uh this this this thing that was part of U for for the longest time it's it's basically an easy way to to inject passes into the pipeline and then you have the the volume component which is then setting up all the data that that's that's tweaked through the volume system and already out of the box this actually does something so I'll just add it I go to the renderer here and then I'll just add it uh at the bottom we now have this height fog renderer feature and I'll just add it and we'll see that that everything is inverted and doesn't look like a fog at all but at least it's doing something and this is just our like out of the box um effect image effect that we just added to to so you can validate that everything is working and what's great about it is that it of course also comes with with the volume volume so this is the this is the existing fog volume that I'm just going to disable and now in postprocessing custom we have the the height fog here and I can add it and it just has a single property which is going to be the intensity and that's work working so the pass that's injected via the renderer feature now listens to this this property that's controlled via the volume system and and you can build your your custom post like that yeah and that's a good example of a quality of life so it was probably possible before like with like a lot of boiler plate code or where you need to know where to to click and so on and now it's like a a menu item that is generating like a a very basic effect for you and you can start from there and inject your code so it's much easier and and hopefully uh brings us a lot of extensions for our users so that they easier can customize urp exactly and and now I'll just uh create a material or like a Shader that we can then replace so we don't want to run this in inversion effect we want to run our own stuff and this is where we create the full screen Shader graph uh that that was also discussed before let's call it like this I'm just going to create a material as well that that uses it yeah and we discussed this before as the fog that or the haze that's in the desert sample scene right using this full screen note exactly and and now we're going to do the same and and this this target is very simple it's just has a color and an alpha and and we'll make sure to set the blending mode to Alpha so we can control it through this and just give it a an orange color for now so nice what we want is to basically see this orange color color everywhere and that's a sign that we're actually running our Shader instead of running uh running this this inversion Shader so I'll just copy the path to to this material here and open up the the render feature and yeah so this is the auto aut atically generated code and it is quite a complex file it has a lot of lines you can see it's like 300 lines of code okay but that's because we wanted to cover the most General cases that you want to do with post processing so what it's set up to now is to basically uh copy the screen content to to a texture and then sample that in in in the inversion Shader so you can kind of so so which is a very common thing to do right you want to you want to know what's on screen already so you can modify it if you want to do tone mapping or for or any any other effect and but we we had these have these nice regions in here so you can it's easy to modify and what we want to modify is this material field here which is one of the feature fields and it's uh assigned down here in in the the create method you can see that there's the material here and it's just loading up the acid from this path and what I did was just copy the path to my material instead so I'll just paste that in here and that should then mean that we're seeing the orange color that's just the you know the solid color that was assigned in the oh we don't because of the serialized property yeah so this this is taking if it's null and it's not null because it was already assigned to the inversion material so let me just assign it out here and it compiles yeah so this is the color and the fog and it's very pretty and it's done and it's done this is the fog veryy pretty foggy yeah lot of dust very very dense you just jumped into a pool of orange juice yeah exactly now I'm I'm going to enable the the frame debugger here yeah so we can so we can see what's actually going on and we can see that we're actually injecting two passes down here the HDE F rener features injecting two pass and that's what I talked about where first it's injecting a pass that's just this custom uh post pass color copy so it's just copying the content to an offscreen texture to use for later but we actually don't need that for this effect cuz we're just going to Alpha blend this fog on top of what's already there we don't need to sample it in order to to to to modify the value somehow so we want to turn this off cuz now we're just raing wasting resources doing this copy and that's what I said where we wanted this to be to to basically cover a lot of stuff up front but uh also be able to modify it so we have this copy active color and we don't need this so it's just a matter of I'll just set this to false and now when I go back here I won't see any changes but I'll not be doing this this extra like unneeded pass down here and we just have the single pass that's that's doing the fog on on top of of everything so that's that's really nice now the thing that my pass currently not is doing is it's not considering this intensity so so let's let's change this and uh yeah so I'll I'll jump into the volume component here and this is where we the intensity property is defined and I'm just going to replace this with like a density property instead and call it density and this is going to be the density of the depth contribution of of this fog and this is just you know regular volume stuff there's nothing about this that's that's urp necessarily mhm and and then in the actual render feature is where everything is is hooked up so if we go into this shared rendering code section we'll see that there's a a custom volume component section and this is where the volume is is is fixed the volume component is fetched and we're then setting sharer properties from here so I'm just going to set this uh depth density instead of setting the intensity and then of course uh get it from here and now I can declare a a property inside my Shader and then use that in my Shader so up here I'll just declare this depth density property and you can see here that to the Shader yeah yeah exactly and and this reference is is what I I basically have here setting the float and just as a test I can I can just put this inside the the alpha here and now we should see this blending with the the density value oh there we go so that's that's how how to set that up but of course we don't just want it to be uniform we want this to be based on depth so I'll just add a scene depth Noe and set it to IM mode and IM mode basically means that that this value that comes out here is going to be equal to the distance from the camera to that specific pixel or fragment got it uh in in World space and I could just do I guess the the most dirty way to do it is to just multiply the density on top of this this this distance I'll probably need to saturate it because it'll go really high saturate just clamps it between zero and one and now if I bring my density down we'll see something that looks kind of like a fog it's not pretty yet um and and I don't really like to fall off we can see that it it falls off like slowly and then it gets like a critical point where all of a sudden it it moves really fast right so I'm going to do something else which is like an exponential fall off here so what I want to do and this is some math that's bit hard to explain but it's basically we're going to use this exponential node um with with a two B this is equivalent of doing like two to the X so like two to the input is going to be what's coming out here and then in order for this to work we need to actually do the negative input and then we also need to invert it in the end and yeah I I I was thinking about showing this on like a graph plotter but I think in sake of time I'm just going to do it and hopefully it works uh and then here we have a much nicer fall off and oh yeah at different densities this it's it's much softer and it's much more it's much closer to how particles like this work in in in real life yeah now that was the depth uh depth component I do want to add an offset to this as well so we can basically determine a distance where the fog will like within this distance there's not going to be any fog and then it just starts a bit a bit later in in in the in the distance so I'm just going to subtract this depth offset here to just move my distance range away uh I and then I'll just make sure that it's positive all right let's see and of course this value is is means nothing right now we need to hook this up to to our our volume component and to our and with our render feature as well so I'm just going to copy this it's just going to be a regular float doesn't need to be clamped um and this will be the depth offset and that's what we see here is also typical Unity right so that you can program here in C go back to the editor it compiles super fast and you get basically you can extend the editor how it uh behaves you create your own volume and iterate over it all in all in C here to really extend Unity to your needs um I think that's also important yeah totally and for everybody watching if you have any questions about what we're on you miss an H I did on the on the on the first one on in the volume on the no on the on the component it here yeah dep ofet yeah yeah luckily my ID fixed my typo uh did everything compile now it didn't if only everyone had a mat while they were cing to catch the uh You' have been looking for that age for hours uh but I didn't catch the the aror though oh I didn't save this way sorry about that so now we have we have the offset and if I go so now I have another property here right and I can just push the The Fog bag and something I like to do when working with stuff like this is actually to to just put this straight into the color and just keep the alpha to one to get kind of like a debug view of of of what my fog is going to look like and I think this looks uh looks pretty good probably want to do a way lower density here so we got I I like how this like frames it with with the foreground not having any fog and then you know we gradually move into the background until this this hill down here has has a lot feels like there are a lot of layers to it now yeah exactly and I want to add I want to add a height component as well so right now this Dune is completely in fog and I'll just uh I like I like this here to be more foggy than than this up here and yeah and so that's just a matter of of adding you know the we're going to do the properties again this will now be for the height so we added depth but now we want want to add some height yeah yeah we want to add like a fall off from height so it's more dense as as it gets closer to to the to the to the ground basically yeah uh I oh my God and this is of course the height offset and the height density oh did I not yeah there it is so that should be the the C done and then for the for the actual fog um I'll just add the properties boom boom height height density and hide wow offet and yeah this is this then works pretty much the same but of course instead of using depth we're now going to be using the the actual y position of of the fragment and this is where the full screen graph is is really awesome as well because you know what it what this is actually doing is it's just rendering like a a triangle that that fills up the entire screen and and that's basically the the effect right and and what the position node usually gives you is the position interpolated position of the vertices but it doesn't make sense to have the position of the vertices because they're just like really close to the camera or and pushed away and but what this what the full screen Target will do for you is it will actually provide the position of the fragment instead of the position of the vertex that it's interpolating so that's that's really useful it's it's it might not it might sound trivial but but it makes your life a lot easier so otherwise you would have to recreate this from depth but this is actually already done for you oh nice and I can just uh get the Y component here and and and start working with it we'll we'll subtract the offset like this and now this is going to work a bit different because this gets more dense as we go high but I want it but what I want it to be is dense you know at at the bottom here so um to do that um I'm I'm just basically not going to do the inversion at the end here but that also means that I have to invert my density so as I multiply the density that's going to be uh inverted then we still negate it and put it in the exponential but then we don't do the we don't do the the one minus here so hopefully this works and if I look here it's very wide mhm but if we go down here it's because the density is very high so I can bring this density down and and you will see that now we have this this fog that's that has like a it's 1 M high in the air and we can we can move it up and down using this this uh offset here and I'll put it like here at five then we can kind of tweak this until we see like I want this nice fall off here on this Dune where it's like the top is kind of dark but the bottom is is white and then we can just multiply these together to get you know the aggregated effect like this and and this is going to be the the mask for the F or the alpha for it just keeps looking better and better yes hopefully we'll get there cuz now we're going to move on to the color cuz the color is not amazing it's just this very dull orange one right yeah yeah um so the first thing I'll do is I'll just add a color to the actual properties here instead of just hard coding this to Orange We'll add it and same as before we go into to the the volume we make a new color parameter and give it a default I'm just going to do yellow because that's fast um and then we read this and assign the property inside of the inside the the render feature so set color this is going to be the color property right and what I'll do already here is I actually want this to be an HDR color and that's that's what really cool about doing your own F like this that you can you can you can kind of use some more more advanced uh you know graphics features and and and colors so I'll just make sure that that this picker here the Color Picker for the volume is going to be uh it's going to be in in uh in HDR which going to give us a lot of brightness and can you explain to people what the HDR colors are yeah so by default or like for if if you don't have HDR it means means that that you can only represent a very limited band of colors you basically have brightness zero and you have brightness one and you're not able to to represent everything that goes beyond that yeah but if you have HDR that's going to be high dynamic range and they kind of two two two it's used in two different contexts one is an HDR monitor which means that okay I have a monitor that can both understand complex color data and also display it but you can also just have HDR you can also HDR is also useful even if you you don't have an HDR display because if you have like this this very precise um color buffer for your for your screen you can then tone map it and that's what that's what makes Bloom really nice and and and and colors in general work well on on these pipelines like if you don't use HDR you get saturated things a lot you know you get like things which are becoming all white because you couldn't get that Precision to to display like to calculate it yes exactly so you calculate it in a in a white color space and then after you turn map it so you turn map it so that your result is just uh displayed in the end and in in HDR display you turn map it towards that new display but with a A Wider color range yeah and and what we'll see now is that we have we have the color and I can it's an HD HDR color so I can start increasing the brightness but but what we're seeing is is not amazing and and that's actually a good example of what we were talking about where where HDR color buffers even if you don't have an HDR display is great because you can use tone mapping but the problem here is that our pass our our height fog render feature here is is is basically running after the bloom so so the bloom is calculated which adds all these nice you know glowy effects and but then after that we're doing the fog on top of it so our fog is not getting bloomed and that's of course a problem so the fix for that is to go into the renderer feature we changing the order yeah exactly so we're going to set in the beginning of the script here in the feature meth methods we have the the add render passes function and this is where we're setting up an event and you can see that it's it's doing it after rendering post processing what we want to do instead is go before and hopefully that will make this very very bright fog like interact better with the en environment right so now we're actually getting nice glowy bits around here and the color seems much more reasonable that's HDR at work basically yeah let me bring the color back so I'm just going to copy the color from the old fog and it's not it's not done yet but we're very close cuz it's still very mute it's not a a lot of of of color that we're getting in here and that's because we're missing the contribution from the Sun okay and that's the last thing that we're missing so I'll just go in here and then add the main light so this is a note that's not actually part of of the regular shadra Library as you saw it was inside the subg grabs here and it's one of the nodes that we created for the sample scene and we use it in a lot of places it's it's really useful and and creating a node like this is so simple it's just we just have the custom function here that's running a bit of hlsl uh script it's just calling the urp get main light function but then instead of having this custom function everywhere we're just wrapping it in a in a in a subgraph which basically it's almost like your own little node library right where I can have have a node like this and what we want to do with it is we want to dot it with the view Direction so what I what I have in mind is to add like a halo effect around the Sun so to as if the Sun is hitting a lot of of particles in the air and then and then entering my eye so I'll do a quick dot product here which kind of like gives me the angle between the the angle between this the view Direction and the Sun so this is almost like you know adding adding a as if I was standing inside a big sphere so we can see the sun is is over here oh that's weird uh okay I don't know why that looks like that but at least here you can see that that we have this giant Halo so it's on the wrong side right now which Al so I'll just invert the direction here and in the chat are uh really loving this uh walk through so far and people who are wondering the if there will be a recording of this it's yeah as soon as this is done uh when we go offline the recording will be up on YouTube right away so you can go right back and watch it at your own pace and uh follow along yeah yeah I was worried it was going to be too fast but but yeah I guess if it's uploaded it's it's perfect it's great it's perfect all right so the Halo is here uh I don't the fall off is very sudden though like the the the the color change from here or intensity change from here is is very harsh and then there's like almost no change here so so we'll fix that quickly with just doing uh let just doing a quick power to this so we'll just do a Power put in eight and the reason this is pink is because of uh actually shouldn't oh yeah let's let's saturate this product so saturate so we don't have any incorrect values going into the power mhm and now yeah we power put the power to the eight and now we have a much much smoother for smoother fall off it not a har transition used before it was here and then it stopped here but now we have a nice fall off it's a bit small now though so I'll just I'll just take this dot product and and bring some of that value back by remapping it so this is going from negative one to one right now we're only using the part that's from zero to one so how now here what I'm doing is just remapping the part that's like so some of the negative value get mapped back to zero so we basically are considering more of of of this of this dot product than than we were before so that just increases the size of everything but we still have the nice fallof yeah and it's Yas is tinkering around here that's really what we want to achieve with urp that it's so extensible that you can like really uh achieve the look that you want to create for for your game so that uh that's really um in the in hdrp it's like uh the focus is like a really important component that is locked because it's uh calculating all the lighting to be physically correct so that's really like a different philosophy we have here and on urp it's all about extensibility like override create your own F in this example um to really like um yeah get like the style that you want to create here and uh yeah don't care if everything is physically correct maybe you like uh uh a different look or style so I think that's really important to highlight as the difference between the Pipelines got it yeah yeah what I just did now was I just took the the color coming out from the main light Noe and multiplied that onto this Halo mask that we built and that just that just gives it this so it's it's that easy and if you have the main light Noe it's it's it's super useful for all kinds of things getting color as well and if if it's not really relevant for this but the node also has this Shadow attenuation so if you want to do something with shadows you can you can do that as well and now we just have to add the existing fog color while you do that Oliver I just wanted to follow up on on what you mentioned so with with this being more um suitable for like stylized looks for urp over hdrp can you achieve similar things in hdrp as well it's just is it's just a different process or how would it work if you wanted to do something in HTP but also stylized and custom like you you could use the you have exactly the same um uh like buffer access and depth so you could actually copy paste that uh that exact uh script here and and put it into hdrp where it's getting more complicated uh it's more like when you want to manage it in terms of like having the right uh intensity value so that they are physical so that they reflect well in screen space Reflections in all the Reflections in the baking for example of of lighting of lighting it's really the the combination of features uh that you get at some point which is making it harder but you you have exactly the same access to the to the like to the nodes like the the full screen Master node is cross like is is the same for all pipelines you have access to the depths to the color buffer exactly the same yeah yeah but at some point you break basically the promise of this physical based look so that your materials work in any lighting condition that's of course like as soon as you like um over write something that is not plausible in reality it might also look like your material might look totally off in a different scen while if you don't like break hdp like L logic it would like look correct like everywhere so that's where we then just have to be careful but of course like as mat you mentioned it's still Unity it's like you you have access to the data so you can do it but like the combination of everything together is um where it's getting then like just a little where you need to be more careful where urp is more U more easy to to do it here yeah makes little sense you you build a St from the Round Up in yourp you start from the basic rendering and then you add pces on top of each other in hdrp you you you add all the things that you have in hdrp and then you tweak your style from from the top down somehow you know you will you will twe this St the real world and then tweak basically EXA exactly it's like a real movie you know you you put a you don't change the color of the light you add a filter in front of the light you yes you know and it really requires an a prerequisite understanding of just how the real real world uh lighting works and that's of course it takes a bit of research but at the same time it can be really handy like if you're let's say you're building a mansion and you want a very particular light bulb with a certain amount of Lumin you can literally replicate that uh that look in in real time which I think is very interesting but it's also like a goal in the long run end to also have more physical units in in U so that at least what we discuss a lot internally so like it's it's not that we uh don't want to have this kind of um real world units uh in U but yeah it's also like both pipelines have their meaning there so it's really like a different uh yeah style that you can create with it y makes sense yeah and you were about to show us the uh the the result right when you jump maybe I said one one thing before is um actually you know the full screen pass here that you see um and if you are using hdrp uh if you go on the pack package manager and you go on the hdrp package there are like um samples in the in the sample Tab and you can see also samps of full screen SP like this to do like raindrop effects on the camera or outlines so again like we we what we're showing here is really kind of generic to the pipelines yeah and same philosophy yeah mhm that's great sorry go on Jon yeah yeah so this is pretty much done so I guess where we where we left off it it was looking like this I just multiplied the oh oops I just multiplied the the color the the color of the sun with with this mask and then I'm just adding in the the color of like the for color that's defined in the volume so now even if we look away we have we have some color over here the color is weird should be orange like this I don't know why um and then just pluging in the alpha that we that we built in the beginning into the alpha and that's that's pretty much the effect done and everything is then controlled through this uh through this volume here it's really cool looks amazing can you just mess with the values while uh Live While yes so I guess yes I can even turn it off and we'll see the defaults which are going to be very ugly and I guess this is a good way to to talk about the default values that M mentioned as well because now what I have is in my project settings in the global settings yeah I have I basically have settings here and here you can see that my height fog is now showing up and because the the volume this outdoor volume is no longer overriding the height fog it's now taking the properties from this default one in the global settings and so here I can I can I can set the settings right and I can make sure that it has a has some some values that that makes sense we do and it's important to change these default settings because as you create new scenes and you want to have new environments you don't want to start every scene with a big glowing orange ball of fire exactly and sometime it's the opposite right you want every scenes to be the same and you don't want people to add volumes to every single scenes yeah that's that's the power of it also you know that's right that's right so now it's very hay nice it's really cool uh yeah that's really nice looks amazing and and and you can use the master node also um like this this so the full screen Master node you can use also it on um to make custom Rend textur also if you want to do procedural textures you can do this like a similar thing to generate texture that you will reuse in another Shader for example like it's super powerful um all the things you can do um in in in hdrp you can also use it to create procedural fog for example if you un plug it into the The Fog material so it's it's really opening huge possibilities for Tech artists and here we use the I node so it's like from from the camera right but we had some comments in the chat like could this be used for creating for example very popular genre Battle Royale you know that usually there's a ring of a circle that closes in on you and usually there's like a smoke or a fog somebody had suggested that in the chat could this feature be used to create like a circle that's closing in on you uh yeah yeah it could the the thing is that that this will like this position nodee that we have currently is is going to only it's using the position so if there's no geometry like if in the sky if you want to see the shield in the sky you have to to manage that explicitly because there's no geometry up here so the the if you have like I can I can quickly do do something probably so if we just do we just take the position the position Noe here prision and we just do like a length and then we just do a quick step here so maybe like five units and then we put that in the alpha and keep the orange so now uh that wasn't what I want uh five units probably not enough let's do [Music] 25 let's see nothing is working uh let's see here l in uh oh this this should of course be the position in view space no view space cuz I wanted so here I'm I basically have this right so this is a circle that's now around the the the camera basically right and and and you can do anything with this and and and I guess if it was a like a like a battle royale um I I can no in a battle royale this would instead of using the The View position this would be a position you probably sent to the Shader right yes so instead I would I would maybe like I would have a a position property here that's that's updated through my render feature and then I'll be like okay what's the difference between the the the like how how far is is this is there a distance not yes so how far is it from the position of the current fragment to the to the position of of this origin where where my my pubg level or Battle Royale level is shrinking to and use that instead of instead of this link perfect so that's a yes to everybody in the chat you can use it for that purpose yeah now go build a battle royale go do it off with you it was a nice ni yes yeah exactly great okay yeah I'm not going to bother fixing this up it works yes that was a great tutorial and for anybody who wants to go back into some details again this is going to be available uh as soon as the live stream is done this is going to be up on the YouTube you can go back and and uh check it out uh I think then the next thing we want to talk about uh is the aps so I think we have some slides to show this off and Matthew you you'll talk you'll introduce us to apvs so what what are apvs yeah so apvs is adaptive prob volumes uh it's a system like so you know when you do um when you when you do Global elimination which is really what's giving this kind of photo realistic look because you have the indirect lighting or even like for styz actually it's very useful as well but like having all this light bouncing on the world you know if you have a red wall an engine can usually only compute the light on that wall but not on the ground if it's white because otherwise you have to send Rays you know so that it boun sees so that the the light going through the red wall is making the ground red kind of um so to do this you you need to either bake or to do to send Rays at real time and sending Rays at real time is very expensive so usually you're uh baking uh this data and to bake you could use light Maps basically uh so that will just store all the um all the uh uh like all these indirect lighting into these textures but the problem with light Maps is like you have to have special UVS like for the light map so that they can store them uh so that the geometry can store this indirect lighting um it's also quite long to bake CU you're sending Rays everywhere on every single part of the world um so and and then it doesn't light the dynamic object so you add light probes normally on top of it and these light probes are kind of low quality uh it's it's very low frequency um so you you really it cannot really replace the light Maps right now um it it's just here to light the kind of dynamic objects if they are not too big you know and that's that was the status until I would say uh Unity 6 um now we we we're coming with apvs so apvs is is kind of light probes but with a higher quality uh of of of rendering so the the good thing is that you can you can render larger objects basically so down the line uh you you can have you could like you could even imagine that you can light totally your your world uh with apvs or at least you would need a lot less light Maps so which means that it's faster to bake you have less UVS to do um which is great but the problem with with the light probes that we had also was that you need to place them manually so first it's very long and then two if you change the world then you need to remove them by hand you know and and you need to change yourself the density you know like I I want to place more near the wall so it's a lot of work actually for apvs it's automatic automatic placement so basically by default you just you just place an a prob volume and you can say like give it in the entire scene and it would just place all these probe volumes for you and it's not just automatic I but it's adaptive which means it will look at where the geometry is and it will place more probes close to the walls and less probes where it's an open space um it will do even more than this uh because it's it's not using Collision but it's really using a kind of SDF like sign distance field representation of the world so it can even know if a probe is inside a wall you know and if you have a probe inside the world it could create some leaks and stuff like that um here it will invalidate the probes inside the walls and if you have a probe which is too close to a wall and could create problems it will push it back um so that's what we called adapt that's why it's called adaptive Pro volumes because you have this adaptive placement and then it's not totally automatic I would say uh it's I mean it's automatic but it's more than this it's actually a um assisted placement so for example you you can place another prop volume on the scene and say you want a different density here you know because for example you have your world which is pretty large but most of the things are taking place in one place and the rest is just for the background you can decide that in this place of the world I want a higher density of probes and then on the on the one like further way a lower density of probs and you just place a volume and then it will bake it for you still adaptively but with just more density um you you're always laughing in any kind of automatic placement you still have some issues sometimes with a probe uh kind of fighting a wall depending on how you you you bake your LEL so you can even add touchup volumes for example that will force the props to be pushed from that wall you know so it's really like a way once you assist it then each time you iterate on your world the probes are automatically placed and automatically baked and um so it's really cool and the second thing is like it's probes uh because they are in a very regular structure in the world they are very fast to bake so for example in the fantasy Kingdom uh demo that we showed that at the keynote like the world is is huge right and we were like we actually were working on it the day before to to do the night lighting and the baking was like five five six minutes something like this for the entire world to place all the props in the world um so it's it's really really fast you know with light Maps it would take a long long time um so yeah so so that's really what adaptive Pro volumes are maybe I touch very quickly on on why probes look better than light probes you know the Adaptive probes look better um it's just that it it does a per pixel lighting uh which means that like the probes uh the light probes that we have you you have an object and we will just sample like the three probes around it that's a classic probes and we will look at the color of the probes and then we decide uh we do an a edge and we will decide what's the color of the object in the middle um here it's really inside of the Shader we will actually draw the entire object sampling the the Adaptive Pro volume structure so that you can have like proper lighting for the objects so for example if you have a a big sphere between a red wall and a green wall and the light is bouncing um when you shade the sphere when you render each pixel you will see that there are some probes which are green on the left so the the pixels on the left will be more green and the pixel on the right will be more red and and because per pixel sampling could be expensive on some lowend devices on lower end devices we also allow to do per Vex sampling so you still have a nice quality of lighting but with less things to calculate basically you just calculate the the per vtex lighting so still you basically you have three things you can do light probes you do per object lighting yeah and with apvs you can choose between per Vertex or per pixel lighting and that's a choice so you can set set one on and exact basically exactly you choose if you if you're where you're sampling the probes in the vertex Shader or in the pixel Shader um where pixel might be better might look better but it's a higher cost exactly and if you have a a good density of of vertices like if you have a uniform density of vertices in your world then actually it can it will almost look the same uh with per Vex lighing yeah um and then like this brings like a lot of benefits as well well um because now that it's it's a structure that we control because it was not hand placed you know um we can really uh add a lot of convenient uh features on top of it so for example uh we can stream in and out uh for you uh the the apvs because we we we have full control over the full structure right so the further away we can you can just give a budget and then we will we will stream out the the like the the probes which are not fitting into your memory budget um and then the the other thing that it brings also is the fact that for example if you have a game which takes place in in night or in day you know like you have an adventure game and you start during the day and then you come back later in the game and it's a night right now you like making these two scenarios is kind of complicated uh you have to do a lot of boiler plates and so on uh with APS we have stuff called baking sets so you can you can create baking sets and you will Define your night baking set your day baking set and then when you switch from one to another you can bake one or you can bake the other one or bake all of them um so and then switching from a baking set to another one is kind of uh is quite easy as well um and you can even blend between them so this requires a compute Shader but you can for example blend you can see it on the bottom left uh you can blend here we have 12 scenarios which we baked um like uh 12 2 4 6 seven eight because the the further you go to the evening the more you need scenarios cuz the lighting is changing actually a lot um and then we blend between them and it creates a day night cycle which is very cheap right because you it's all pre-baked uh but it's it you have the the full cycle with a visual Fidelity so yeah um so that's it and then we have another feature which is coming also together for apvs is the fact that sometimes you don't want to B all these scenarios um and what a very nice information is how much that you can store in in the probes is how much of the sky you can see directly or indirectly and so if you cannot see with this you will with it's called Sky occlusion with that you will be able to know like while the sky is changing you will be able to recompute the indirect lighting dynamically which kind of simulates a a time of day with just one set of probes um so yeah so so that's that's it kind of like very quick um we wanted to do a demo but we didn't have time uh and and we we hope that probably one of the next one we we in the future we do a demo but there is a great talk at jdc also if you want to to learn more about it which talk is that it's called it's here on the slide it's called Uh lighting with adaptive probe volumes uh yeah efficient and impact lighting yeah great check that out I love this feature you're putting uh people who place probe volumes out of business with this uh feature I don't think they will mind yeah exactly and what I love about this is it it um works with the reality of Game Dev which is a nonlinear process where you know you might do the level design and then you'll put in the lighting to see how the game looks and you'll you you'll go all the way to create a vertical slice but then you know you adapt you do another pass on the level design and you need it to change and then there's a series of a domino effect of of things you need to do you have to reposition the lights reposition the probes but this adapts to this to the real workflow of game development exactly which is why it's such a great uh and that's why it's also like such an important feature for us for Unity 6 so like where you because it really gives you so much flexibility and also runs like on lower lower end devices so not only like on on on top end devices to achieve like Global illumination look but really like combined with other features you can really achieve like nice visuals with it like also on the wide range of platforms yeah amazing and it's um and you know like if you if you have to manage indirect Global elimination uh I mean indirect elimination so Global elimination in the game um most games that you do need to run on a quite even if you do just a PC and console game usually usually you you need to reach users who cannot pay for like real time Global elimination you know like in hdrp we have screen space Gi we have R SGI but then the moment you need like the moment you have one like a group of player or half of your players won't be able to afford it you will need a way for them to get it you know and and that's why adaptive Pro volumes is great because it's really it's a practical way of of of authoring indirect lighting that's really scar on a wide range and gives you the super good visual Fidelity you know that you expect um so that's that's really that and and it's it's the same for the two pipelines as well you know it's compatible with urp and with hdrp and it has his its own particularities on each pipeline so on urp you have perex lighing for example on hdrp um for example the fog of hdrp will be sampling the Adaptive Pro volumes to light the to light the fog uh it will be a fallback so that screen space Gi is a bit cheaper if you want to still have some Dynamic Global elimination it can be used as a fallback for retracing so it's it's really integrated here um in both pipelines I I think that kind of represent the vision of how we want the two pipelines to work just I was just going to say this is a perfect example a proof point of like the the philosophy going forward exactly yeah yeah beautiful thank you that was very concise very clear and it's great to have some of these visuals alongside and again if you want more detail check out the uh GDC talk lighting uh with adaptive uh Pro volumes um which is up on our YouTube we'll drop a link to it in the chat as well uh and so thank you Matthew the last thing we're going to go over now is the uh render graph uh so yonas if you want to we can jump back to your screen and you can uh give us just a quick so what what is you will walk us through just what is render graph and what you're going to show us yeah I think actually Oliver should uh should or Oliver sorry go ahead yeah no it's fine like we can also directly jump in like really quick um but we saw like already like in the other example of for like that really extending unity and especially urp is is is critical and but what's also important to to keep performance so we uh often refer to performance by default but of course like the more you extend uh the rendering the less control we as Unity have or what's going on on the stream on the screen on the screen sorry and um but that's really important like out of the box urp is super optimized run also on low-end phones and everything we have control over our own effects like bloom or whatever but as soon as you U create custom passes or custom renderer features like we saw before and probably even ones where you use more different textures where you sample textures and and um write or read from them um we have to be much more con conservative like um on the performance because we don't know what the custom effects use which which buffer so we can clear less of these and this is especially then uh not so good on like mobile gpus where you have like a tiling of your screen into many small tiles that are rendered after each other because as soon as they need to um bring Textures in and out from memory it's really bad for uh for the memory consumption it's really bad for the battery and for the heat of the device so you will see that um you you consume much more energy than you should because it's like an expensive operation on mobile uh to really uh load these textures and that's why we introduce like uh render graph now with unity 6 so that you um that we basically learn from your effect which um which textures or which buffers it uses so that we understand where can we optimize the things so that you can uh still get like um best performance and get the memory allocation basically or the memory bandwith really down so that we have an optimal footprint basically of your custom effects and um and also for this we had to like really adjust like the API a little of how you extend um extend the the renderer here and that's what yonas is now going to show like how how would it look like what's like the changes and how how it's easier to extend it and it also comes like with a new context container class so it's much easier to access all these resources from your frame and uh yeah I think that's really important and it's also not only about battery consumption but also like the devices when you generate too much heat they will clock you down so that um you are not consuming so much energy so you lose basically performance and yeah with Rendog graph you can like create customer extensions or can get them from the asset store um and you can be sure that they are performing by default um directly and the the render graph a optimizes the the the resources yeah it's it it fixes a problem you know like when you write a render pipeline it's it's just a big file where you hardcode you know I'm doing this and then I'm doing that and then I'm doing this and then like when you have an engine like Unity where people customize it in many places like each time we want to change something in this order then you would break everybody you know like oh now I'm going to move it here and then everybody assumed that you were doing this in this order and even in your own pipeline you might change orders of things and then you have to rethink the entire thing so render graph is really here to replace that big description of what the the order of things will be with something that you just make contracts on your render graph and then we will recreate all the right orders for you and manage the resources yeah and what's then also nice you have like this debug viewer where you see really what visually what's going on like which PA is using which texture and when in which order and then you can really understand like how the renderer works without like uh jumping through the code or or reading through the the C code of urp but really get it Visual and then then also when you extended you understand where the textures are used and maybe where your performance going down and then um you can also see like how Rend graph is then merging the passes and and calling the native passes of the different devices yeah now I'm just going to do a a quick quick example here so for the sake of time I'm going to do it a bit less in depth than than I had planned but but we are adding to the sample this this pause menu um which I've started making here it's not very pretty at this point but but this is what it looks like it just has a sensitivity slider it's going to probably be different but but what I wanted to do is is is add a nice background to this this panel here and and I kind of had this idea of doing a frosted glass so kind of like a very blurred um representation of of what is is behind the the pause menu um I'm not going to be able to build the entire thing uh I do have one uh TV trick which is I think I should have one that's working somewhere but but I'll just start off and and then see how how quick I can go through this so it's going to start similar to the postprocessing effect but instead of being uh this combination of feature and volume it's just going to be the the feature um and I'll just talk a bit about what's in this in this template here so for anyone who's built render features in Europe before you'll be familiar with this but what you won't probably be familiar with is this function here which is the the record render graph function and as someone who writes passes quite often for u i I really I really love this this new API so before and and on this bottom section you had to overwrite these functions here and it was it was it was not as as flexible I would say it was it was harder to understand it was harder to get a grip of of the API and I think this new API is much much nicer designed it's much leaner and and it's also much more confined to make sure that what you're doing is is actually supported by by by the pass um so this record Rog graph is the function you want to override it it it gives you the ragraph itself and then this context container that that Oliver also talked about which is godsent um and then when you write your pass or you just do this add R render pass called there are a couple of different types of passes and and the rest pass is is the it covers the the case where you're just rendering directly to a single Target which is a very common case and it also is the case that we're able to optimize the most so this is this is what's cool about this API is that that we can add different passes and then you know expose different API and make sure that that what you're doing is is actually optimal um and then I guess as what I will do just as a as a very short example is I'm just going to try to split the screen contents to an offscreen texture that's that's the only thing that we're going to do so what I need is I will need to set the the the render attachment of the of the texture or of the PA sorry to be uh this offscreen texture that I'm going to create so I'm going to start by creating it I'm going to need a texture handle which is the the Rog graph representation of textures you we have a lot of different representation for render textures and Targets in in in unity but but this is the one that you care about when now that the ragraph is here and it's nice to be able to just care about this now I'm going to call this the blur now and there are there are a lot of helpers and knowing about these helpers is of course useful and and you can see that we try to just add some comments in here to make sure that that you have some place to start and and you're going to see me write a lot of this stuff so right now we're here right I'm going to use the universal renderer do create render graph utility yeah in the Forum there already is already a um a discussion going on on on render graph so there's a lot of active users so um maybe we can link the this also later or I can send it to Haan so that we can uh people can also be active there just give us feedback also or we we will try to help you on on porting effects or that's also important yeah please send it my way I'll drop the link in the in the chat uh yeah and and this this create ragraph texture function it's going it need a a render texture Des scripture which which is just going to contain information about the the the resolution of the texture and the the what kind of of color color it's going to have like the the the graphics type and uh we're going to get that from just the active camera so this is where we're going to use the context container that that that Oliva talked about and it's it's it's super easy um we're going to what we need is the universal camera data which is a class um which is a class that contains this this uh camera Target descriptor so this is the the descriptor that that's for the current camera that's what we want to reuse for this offscreen texture but and then getting the camera data is very easy it's just calling this Frame data which is the context container doget we just say please provide us with the universal camera data and and this you now have a copy of this and this will of course have the the descrip rtor like like this now this the scriptor or the main camera target has has depth of course and we we we don't want that for this pass it's just going to be a Pure Color pass or Pure Color texture so I'll just set this this to zero and now I can I can provide it to the the create render graph uh function here and we don't need to I'll give it a name it's going to be and we don't need a clear it and use let's use the B filtering all right so now we have the actual texture and as Oliver said what's cool about render graph is that we can explicitly tell you urp what the dependencies are and what resources we need and you do that by by making calls to the Builder so the Builder is basically where you set all your metadata of the pass so I'll I'll call the Builder and then you'll see that it has has this set render attachment and this is basically just telling the PA telling render graph okay for this pass please render everything into this blur buffer here and I'm just going to and if I if I didn't do this then then R graph wouldn't know where where to render stuff and it wouldn't know what if it needed texture or not so so you basically have to do this now the next thing is what are we going to be rendering from so that's where we need the the current color at at this point in the pipeline and this also brings me to this execute pass function here so you can see as we talked about add rest render pass it you you're giving a builder and you start setting up your metadata for your pass and then you also set the render function and the render function in this case is just calling this execute pass so we're going to put all our rendering logic in here and you can see that we are we are giving this this data this pass data class called called data and this is also provided uh it's outed here from from the call to the to the add restor render pass and this is where we have to put any data that's going to be used for the rendering logic we have to put it in here so and it's not like a it's not this is just a class that's private to this uh to this specific path so this is where we put that data and this is where we want to have a texture handle to the basically the source for this for this blit that we're going to do in a moment so I'm just going to do public texture handle source and then we of course need to get the the texture and similar to the camera data we're going to get this from the resource data the universal resource data and this is a new uh class that's that that basically houses every single uh texture that that's used by urp we get it using the Frame data again and what's and it's it's it's so great resource data and we can see here in the resource data we have basically everything we have the active color texture which is the one that we care about right now but we also have like we have we have uh depth texture we have the the normals texture we also have the the the decal buffers we have the G buffer if we running deferred rendering we have stuff like Shadow textures which we can then set as the target render stuff into we also have uh ssao so if we want to add our own ssao we can we can even do that with with with this and just basically override what's in in your pce ssao texture yeah it's great to see Yas excited about the new API so that proves already point I really I really like it it makes a lot of stuff way easier now this I'm going to uh then this pass data which was given to me by the the add rest pass function um I'm going to set the the source to be this resource data. active color texture so just passing it saying this is what I want to to to copy from when I'm going to copy to this this new texture that I've built out down here called the the blur buffer um and then again we always have for every single resource we need to be explicit to ragraph about what the dependency is so I'm just going to tell ragraph by by goinging to this Builder that I'm going to use this uh use this texture that I just uh that I just fetched from from the from the resource data so the ragraph knows okay I need to keep the active color alive for for this pass so now at this point we should be able to just do a a quick blit uh probably need a material so let me just do a quick static one here public static [Music] material uh let's just call it m thing and then I'm just going to okay load as this is a bit dirty but let's do it oops uh need to find the material I have some materials prepared here so let's just take this copy path add path and it's a material so now uh we ready to to blit and for this we also have a helper called the blitter so I blit the texture here and I'm just going to give it the the command buffer and for anyone who's who's used to writing Graphics code you're familiar with the command buffer now what's cool about Rog graph is and and what I said about the API being safe is that this Rendog graph context has a command buffer and it's a rter command buffer so it basically ensures that any call that you're making is a is a safe call it's something that that's that's okay to do and it'll not break any optimization that that rcraft can do uh we are going to grab blit from this Source texture which is the screen texture that that I passed by using the the the pass data then just some uninteresting scale bias and here we put in the material which is called that uh Peter in the chat says why not add a copy function to the blitter uh yeah so so we are actually working on on this so we have we have a developer working on making utility passes basically so so instead of of having to do this if you just want to copy to an off screen you can you it'll be like a single call it'll it'll be a single call that contains all this so on your record ragraph you'll just be able to to do a call and and and provide it with the text you way want to copy so so it it is coming it's it's I guess it's we first needed to to land the API so that um we made sure that they land properly in unity 6 and everything so and then like the utilities are basically next once we had the foundation laid out and and had everything uh that we needed as an API level like on the foundational level we can now add like all the helper function that we need to avoid like all the boiler plate codes so it's very very good advice here that we uh are working on it so it's it's really important yeah and just as a very uh simple effect I'm just going to to make sure that we know that it works I'm going to make sure that I get this split texture and then I'm just going to filter it really quickly so we only get the red color so if we see if we see the the screen with a red color then something is working and of course I also need to add it to the renderer so here on my renderer list where we added the fog previously I'm going to add the this blur buffer hopefully it doesn't explode and now I can take the framy buger and Hope what we should see is that I think I put it in after Skybox but it's not here there's actually a good reason for that that's because Rog graph is doing its job and optimizing the pass away because imagine what we're doing right now is that we're copying from the screen to this offscreen texture but then we never use it we never we never sample it to any from anything that ends back up on screen it's not used by any later pass in in the Rendog graph and we can I can prove that to you by going into the analysis this is the the Rendog graph viewer that that oliv also mentioned uh I just want to make sure that I'm looking at the correct texture the graph so here we see it and here this is this is also amazing this is a an overview and you can see all out here we have all the the different resources texture resources that are used by urp and then up here we have every single pass and of course there's a lot of passes and then we can see for every single pass how is this resource bound to this pass so you uh if it's red it means that it has right AIS if it's green it means that it's only needs to read from this texture and then we have our custom render pads here which is black because it's being called and and that's that's render graph doing its job realizing okay this pass is actually never needed so I'm not going to bother rendering it of course for for testing stuff that's not great so we have this nice handy call we can do to the Builder yeah before render graph we basically did not know what's happening so we were like disa ing all the optimizations which um as I mentioned was already bad like on a lot of devices so here it's really like um it's knows okay it's not needed it does not use any textures or so I don't need to be um slower than before basically yeah and then what you can do to bypass this in the case that you that you that you don't want to rely on it is that you can you can just explicitly set this allow pass calling to be to be off and that should mean that we now after the sky boox see uh uh weird oh custom pass there it is couldn't see it uh so now we are rendering into to this texture that we created with the red color that's never going anywhere so I guess I could already now into go into this uh full to this uh so for this panel here yeah so this this Shader here is for the background panel and what I'll I guess I can't okay I'm going to go to the to the the finished script so I'm going to open here but this is this is a bit more complicated and I I think this makes sense to maybe do a video about how to get from where we were to this to this bit um it has a it has it has a bit more stuff but mainly what it's doing instead of using the rest pass that that I introduced uh before is using an unsafe pass instead and what this allows me to do is it allows me to use this set render Target call and then I I'm basically free to to do whatever I want in my P and what I'm doing is that I'm I'm creating a series of smaller texture you can see instead of just creating the single texture with create Rendog graph texture I'm actually looping um from this hardcoded int uh I'm looping six six times and each time I'm creating and adding a texture to an array that's getting smaller and smaller so every time I I I decrease the size of the texture to half um and then after I have all these Textures in the actual execute path which we had before I'm doing two Loops one where I'm bliding I I start by blitting from from the screen like copying as we as we saw before copying into the largest blur texture and then copying repeatedly down using this Shader that's that's the and this is basically called a kaasi blur so I have I have some specific shaders here that that samples in a specific pattern um with some pixels pixel offsets and that pattern if I then first scale it down and then go back up is is going to hopefully give me give me a blur so let's see uh if it if it works I should be able to go into my High renderer here and let's remove this one and add the working BL buffer see what the fry buger looks like uh yeah so here it is so after after this pass you can see that here we have a series of passes it starts by just copying the color then becomes smaller and smaller and smaller and smaller and smaller goes back up and we have this blurred uh version of of of the screen contents right and then in the end I'm setting a global texture so I'm setting this blur buffer texture to the the full full resolution uh blur and I can then inside this pass where I have it set as a global I can then sample sample that that texture right now it's just this hardcoded color but if I use this instead we should see uh should see this frosted UI behind the the pause menu that looks so good H that's good um yeah so this is this is going to this is coming to the sample it's not there right now we have to build the actual pass menu and stuff but but I thought it was a good opportunity to build a bit more complex Rendog graph uh path and it's also going to have two versions both the ragraph and non ragraph path so you can see how you would do stuff in the different different um uh I guess domains yeah and the unsafe pass is really like um getting like a more responsibility to you then as a developer because there you like um lose of the auto optimization but you are like a little more free to use so it's it's okay to use it that's why we called it unsafe it's still like a good opportunity and it's sometimes faster to Port existing effects with this um and it just landed uh in like our internal uh developer build here that yunas is using but it will also soon be uh available in the public Alpha and then we will also add documentation to The Forum about it because it's it's very easy to just get your effect into like the unsafe path and then from there get it into uh like the a normal Ruster um Ruster pass y so yeah really nice thanks Jas I appreciate that and and we did actually manage while the stream was going on to upload uh the talk from from unite you may you may notice uh the excellent speaker you may recognize them I will be uh I'm going to share that right now in the chat I think we just got that uh can you give us a bit more context to what we discussed in that talk yeah so I guess me you had a section about about a lot of the features right the featur said yeah yeah there there was a section about a feature set like some of what we discussed today already um and then Jon has demonstrated a lot of uh of a lot of the features that we have in 22 LTS and how you how they work how we can debug it so for example 4 wat plus uh we were showing the difference between using 4 wat Plus or other passes how to debug your your views and use the rendering debugger also which is another uh component which is first citizen now in both pipelines um we were seeing uh how to use cookies light cookies to to fake Shadows um there yeah there were a lot of tips and tricks going through the the samples so yeah yeah I guess and a bit about so in the Oasis we have like this uh pretty simple uh R raced reflection as well so rate race reflection as as most of you probably know isn't oh wow isn't [Music] um uh let me see isn't yeah isn't available in Europe okay so but but then we just for this for this water Shader down here we did did a very simple one that's just you know a simple mirror reflection you that just rematches the the depth buffer and I talked a bit about that and and showed showed the code that's what we something we want to want to do as well just use there's like a lot of a lot of stuff in here that we can use for tutorials or use for Technical rundowns and and guides and stuff so yeah and it's already like it's it's a lot of most of it is using Shadow graph as well you know like having custom the custom reflection system planner reflection system all almost all made with Shadow graph so this is really what we wanted in this cycle you know with the srps that as a technical artist you open unity and you you can do a lot of things on your own without requiring to really hack too much into the pipeline yeah um what what we were seeing is Rend graph is really also like as low as you can get to to to hack the pipeline and if you want to go deeper then you have the source code of the of the engine yeah perfect well thank you all for joining me everyone in the chat thank you for your amazing questions uh really high level questions it kept us on our toes I like that um and uh people are asking they said they love the stream and they want to see the more more regular streams and we pretty much stream every week and uh we'll definitely have these folks back on to talk more graphic stuff uh I saw a lot of requests for a stream on the fantasy Kingdom uh demo as well so potentially that's something we can do in the future definitely very much in demand so we'll look at that we're planning to have a mega City demo down the line and next week we're going to be looking at a we'll be doing another Creator Spotlight with Enigma of fear so that we're going to open up that game look an editor look at how that game is made so uh make sure to subscribe and follow on YouTube follow us on Twitch to get notified when we go live and uh we'll see you soon thanks again everyone thanks thanks bye ciao byebye bye [Music] [Music] [Music] [Music] [Music]
Info
Channel: Unity
Views: 13,906
Rating: undefined out of 5
Keywords:
Id: Z-XCk8mXJtI
Channel Id: undefined
Length: 123min 16sec (7396 seconds)
Published: Wed Nov 29 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.