Upgrading your existing project to Universal Render Pipeline - Unite Copenhagen

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello welcome everybody welcome to my talk on upgrading your existing project to the universal render pipeline my name is Uma schemas I am a unity developer at innoGames in Hamburg Germany and I'd like to talk you a bit about what it takes to do this transition so better enter play mode so when you do a literature search on the topic of universal render pipeline you find a lot of great information on what it's what you need to do to start a new project with Universal in the pipeline but not so much what you need to do and you want to upgrade an existing project to it and that's really the kind of knowledge gap that I want to fill with this talk and if like me you're working on a project that started out using the built-in render pipeline and is now at a good point to upgrade to the universal render pipeline then you are at the right time in the right place the congratulations because I would like to show you the ultimate way of upgrading to Universal render pipeline with guaranteed success or your money for unite back all right so there's a lot of information out there about the intro so we'll skip the intro there were some talks at this unite about intro to universal RP and there were talks at previous unites such as United away 2018 and there's also a tutorial series on unite loan about introduction to LW RF e which is what Universal RP used to be called before we get into the meat of the presentation I quickly want to touch on the acronyms that I will be using to remove any potential confusion so Universal RP is universal render pipeline which supersedes LW rpm which is lightweight render pipeline and Universal RPE is an SRP which means the scriptable render pipeline which is part of UT's new system to allow developers to hook into unities rendering and customize it customize it to their heart's content let's quickly go over what we will talk about we'll first touch on why you would you want to update an existing project to universal RP in the first place and hopefully once you're satisfied to a good level we'll get on to how do we actually do the upgrade we're gonna get to know universal RP shader library a bit and we're gonna talk about upgrading your shaders and upgrading effects and we also touch on some known issues with universal RP at the moment and potential workarounds and then we're gonna wrap up the talk and hopefully if there's enough time I'd like to ask the audience if any of you have gone through at least part of this process of upgrading to share some of your experiences with it because there might be something I haven't stumbled upon that you have and then everyone here can benefit from that as well and then we'll do the usual QA by the way this unity project that the slides are in and all the information and the demo scene is in will be available actually is available right now online but the URL will be revealed at the end of the talk so why upgrade the first thing that obviously comes to mind is performance we all want more performance and I found with my time with this package that unity has kind of collected all the learnings that they've had over the years and this time around we need a more performant and more flexible system and it's actually possible to notice a performance improvement as soon as you do the upgrade properly without resorting to any kind of additional trickery and cases of performance degradation are treated as bugs by the universal rendering pipeline team so if you upgrade your project and then you find specific instances where it's performing worst and built-in render pipeline you can report these as bugs and they will get looked at also the SRP batcher that we are able to use using Universal render pipeline is there much more improved and easier to use batching system then the dynamic and static batching system we all have a love and hate relationship with second point is usability using an SRP allows us to use shader graph to author our shaders visually in a node based graph which also would allow someone who's not a shader developer or isn't knowledgeable about writing shader code to be able to author effects it's also very easy to assign different rendering settings completely different rendering settings per camera through the inspector and advanced rendering features such as custom passes that draw specific objects with specific effects is also configurable via the inspector Third Point is customizability there are several levels of customizability when you're using an SRP you can write custom renderer features you can write custom renders you can write custom FRPs and you can also take universal RP as a baseline and fork it from whichever version that you want make your own modifications to it put it in your project as a local patch package and ship it final point is future-proofing so built and render pipeline is not being actively really improved anymore even though there might be bug fixes and such so really to be in a good place for the future you want to be on universal RP so that you get additional features and improvements down the line okay so now we get onto how do we do the upgrade the first two steps of the upgrade process is the same as you would in a new project you go to the window menu then go to package manager find universal RP and here there will be a install button right now it's up because both because it's already in this project and I'm in play mode and then the second step is to create a render pipeline asset which I already have over here you just right click create rendering Universal and the pipeline render pipeline asset create the asset it also creates this renderer next to it that's already linked automatically and then what you need to do is go to project settings graphics and drag and drop it in there and now we're actually rendering with Universal render pipeline what we're going to do because we're upgrading an existing project to it is we're going to see okay how can you replicate our effects and shaders in this new render pipeline and for that we're going to look at the simple let's shade er that comes with universal RP and get to know the shader library of it a little bit because it's quite different compared to the shader library or the library of code for writing shaders and built in RP and then we're gonna hopefully upgrade our shaders upgrade our effects so I'm gonna go ahead and open this demo scene that I have here and everything is pink that is because we are right now using Universal RP and none of our shaders are compatible with universal RP I have a little shortcut here in the tools menu to switch render pipelines easily and it has a shortcut alt shift our so if I click that I can switch between or with the shortcut Universal and built in quite quickly all this does is basically a finds no or our render pipeline asset object into this field over here I hope you can see that yep so obviously Universal RP is not working for our demo scene but let's take a look at what's in the scene and when it is working in built in RP we have a simple it shade ER for the ground tiles also for these props we have another shader for the vertex transformation based swaying that you see in this vegetation we have another shader for the coastline wave effect and another shader for the waters that's for shaders and by the way this is a battlefield seen from the tutorial of one of our games warlords of a tournament that they so kindly let me actually put in into this project that's already on github so let's take a look at our shaders they're over here custom lit custom tree sway vertex used for the vegetation custom water custom wave they're all relatively simple if I open them up in writer that's actually calls everything first and enter presentation mode how readable is that looks good okay this is the custom wave shader has a main texture and a wave speed is a transparent shader that does blending and very simple vertex and fragment programs same really with our other shaders so custom lit has again a main texture a planar UV stuggle which I will get to in a second and again simple fragment and vertex programs we have the custom tree so a vertex shader which has a few more properties like time offset band speed brightness and you can see in the vertex shader we are actually moving around the vertices a bit and finally we have the water shader which has its own properties and you can see the vertex shader is a bit longer and the fragment shader as well so we're gonna try to convert these to be universal art be compatible but before going ahead and like make messing with code to do this maybe we can actually do it with shader graph right because we can use it now let's switch over to universal and select any one of our objects this one has the battlefield Greenland water material I want actually a lit yeah if I switch back yeah this one should do this one uses a custom width shader first first actually let's try the simple lit shader to see what that looks like and then we're gonna try shader graph so if I go here and under Universal render pipeline select a simple it's a derp you see I'm actually getting something besides the pig color of the error shader so there is actually some lighting you can see along the coastlines and the color is just gray and the reason we lost the texture is because the name of the property that the simpler chater uses for the texture main texture is not underscore main text as it kind of was the convention before but underscore based map but that's no problem we can just kind of reassign the texture and then we get something rendering with texturing on universal RP but you can see there's something off with the texturing it's not quite mmm tiling properly between the hexes and the reason for that is this planar UV struggle that I talked about earlier so if I undo my changes and switch back and with this still selected come here and turn off planar you v's you see I get the same effect and the reason is instead of using the UVs that come with the model the shaders actually calculating texture coordinates based on the object space position of the vertices the x and z axes respectively so we need to replicate this somehow and unfortunately the simplest shader doesn't really give us a chance to do this it doesn't have a functionality to do this so any of the options here there is nothing that talks about kind of world space UV as this technique is known so we have to do something else and we might resort to writing our own shader and shader graph so let's go ahead and do that I will go ahead and create a new shader and here are the graphs and the PBR graph is really the only one we can choose because that's the only lit one even though we don't really want PBR but that's ok we can turn off many things that we don't want in there and I'm gonna name this custom lit shader graph open this up and shader graph at least in this version of unity I'm on 2000 19.3 before it's a little buggy stuff starts disappearing but if I just kind of refresh it it comes back to life so here's our master node if we don't do anything and just assign this shader to be used on this material in shader graph custom the trader graph we get an even worse result than with the simple wood because we don't even get any lighting it's just white so we got to do something here go back to the shader graph and we want to sample a texture and put the result of that sample into the albedo so I will create a new node for sampling a texture sample texture 2d and I will actually need to define the texture as a property here call it actually this can stay as a texture 2d but I want to name it underscore main text so it's compatible with our existing shaders drag and drop it in here feed that into the sampler and we're right now using the UVs of the model as before and the result in color gets fed into the albedo we save this and go back and I assign the texture and now we have the texture appearing through our shader graph shader now you see there's a bit of a highlight here it's the specular and I don't really want that so I can set the smoothness to zero save again and the specular goes away and now I'm gonna work on doing this world space UV and that's actually relatively simple in shader graph as well so instead of using the UVs that come with the model we want to calculate our own so I will take the position node which gives me the positions of the vertices in object space and then I could actually try to like directly feed it into UV see what happens save and go back and now we get like the stretchy mess and that's because the position has XYZ components and the UV only uses the first two it uses XY but we actually need to use XZ so we need to kind of do a little Swiss lling so let's come back here create node for splitting this you see how stuff is disappearing we just have to do a little refresh feed it in and then create a combined node and take the R which is the equivalent of X and the Z which is equivalent of P in here and then take this to value vector and feed it into the UV let's save it go back and now we have properly tiling texture but it still doesn't quite look right as it used to and that's because of the scaling because if we open the custom lit shader you see there's like a hard-coded scaling of 0.3 which isn't really where you would want to put it you would want to make it a property but in any case these changes aren't the most well-written shaders so let's just replicate this multiplication of 0.3 before we pass it into the sample texture node here we go get a little multiplication node in here refresh and feed it in multiply both values by 0.3 0.3 it's annoying right and then feed it out here to the UV save come back and that looks much better much more like what we had before in fact we can switch back so I use the shortcut to switch render pipelines go I need to change the shader on here back to lit and close enough now the problem with this approach is now I have my old shader which is only compatible with built in RP and my new shader graph shader which is only compatible with universal RP and if I use my shortcut to switch rendering pipelines if it decides to work yeah there we go we first get this pink color right off the error shader because it's not compatible and then we have to switch the shader we could do this we could also add this functionality to the shortcut to perhaps like have a mapping of one shader to another to go over all the materials in the scene and swap the shaders but it's really quite cumbersome and we would really like a solution that works without having to do all this extra stuff and there is a way but that requires us to write our own shaders in code just like the previous shaders and we're going to get into that so switch back to built in and actually our material is set back to the custom lit and open up our custom shader we're here the trick is to have one sub shader compatible with built-in render pipeline and have another sub shader compatible with compatible with Universal render pipeline so I'm going to go ahead and duplicate this and put it up top and then in the sub header tags I'm going to add a tag render pipeline equals Universal pipeline okay there's one more change mean to make we need to in the main path change the light mode from forward base which is some keyword that's applicable to the built in RP to universal forward and if you come back and switch back and forth between the built-in and universal you see that our litter is actually now compatible with both render pipelines and it's looking exactly the same which is great so we just need to do the same for the rest of our shaders right let's go to the vertex tree sway shader take the sub shader a little bit of manual work nothing wrong with that let's just copy the stuff though from the other shader that we wrote already take that take the tag go back switch pipelines and you see the vegetations also correctly working in the new render pipeline two shaders left water sub shader copied copy the render pipeline tag for the sub shader and copy the light mode tag for the main pass okay so that was the water now the water is also working whenever we switch and finally the wave sub shader is copied render pipeline tag copied and light mo tag copy means second here sometimes the shortcut just decides not to work or unity decides the crash that happens we just have to relaunch it funny thing is unity crashes and then unity bug reporter tries to pop up and the bug reporter crashes so I can't really do anything alright back to our battlefield scene and if we switch between the two rendered pipelines like it almost it's hard to believe that we are switching between them because it looks exactly the same so great our shaders are working it's this simple right no there's a little problem if we switch to Universal and click on our shaders we see this little message here our shaders are not compatible with the SRP batcher and it finds built-in properties that are not in some specific C buffer that is looking for and that caused the problem and there really isn't anything we can do about this unless we really convert our shaders to use the shader library of the universal RP and that's what we're gonna have to do because I mean you could you know get by fine like this but if you really want the good performance of Universal our Prix you want things to be SRP compatible SRP batch your compatible and if we look at the frame debugger we can also see this right now that these guys are being not really bad yeah that's bad ok so what does that take we're gonna have to take a look at the simple with shader because that's the simplest shader simplest little shade err as in the name that comes with the universal RP and kind of take all the bits from it that we need and throw away all the bits that we don't and I think we're just going to do this for a one shader because the time it takes probably won't be enough for all four of them so let's take a look at the simple with shader and actually first let's take a look at the organization of the package itself so we have Universal RP here and the shader libraries here there are several different fires our core lighting particle shader types etc and the shaders themselves aren't here and you can see the simple lit shader over there there are some other files called simple it for paths and bullet input we'll see how they play a role we open the shader so this is our shader it's quite long and it has multiple passes so a bunch of properties most of which we don't need for a very simple demo scene so like specular bump emission maps and so on and so forth and here's the sub shader and here's the first pass which is the forward lit pass and has the same tag that we used light mode equals universal forward and a bunch of progress statements bunch of multi compiles and the vertex and fragment programs to be used are declared here but they're not here to be found because they're coming in from the include files so simple it forward pass hlsl file contains the vertex and fragment programs this is where they come from and there's also a lot of stuff in here that we don't need but our best bet really is to just copy it in and remove the parts that we do not need and the other include file was a simple input include file and in here we have the C buffer and a sample specular smoothness function that we don't need and a declaration of a spec gloss map that we also don't need but as you can see this include file further includes other files in it so we really have to know from which level of abstraction that we have to pull these functions from and what we want to rely on and what we don't want to rely on in the shader library because you don't want additional cruft to get into your very simple shaders that might need to run very fast on mobile so switching back to custom lit we're going to replace our universal RP compatible subsidy most of its contents with the simple lit so let's take a look I want to make sure I'm switching between the right shaders here yeah simple it is here okay instead of using CG we start using HLSL which isn't that much different but there are just tiny few differences and we'll get to those so the name and the tag we have and the name doesn't really matter and the blends you write and call parameters we don't to change those from the default so we begin with HLSL program instead of cg program and end with and HLSL so far so good obviously we can no longer use the include files that we from the built-in render pipeline so I'm gonna go ahead and comment that out even though that's gonna right now if I were to go back Li two compilation errors we're gonna replace it soon enough and then in here I'm going to take this bit which is some stuff as it says required to compile GL es 2 with standard si period SRP library go ahead and paste that in there I don't need all this material options such as emission normal lab etc I don't need switches for main light shadows and so on none of these for now let's not care about instancing and then we just have to actually go ahead and take our vertex and fragment program so paste those in and then go to simple lit forward pass and copy those guys in and this is gonna look huge well we're gonna get rid of a lot of it so take this guy actually even the include for the lighting because we need that and back to cur custom lips replace the vertex and fragment programs with this monstrosity okay beginning with the attribute struct we're gonna get rid of what we don't need we don't need tangents because we're not doing normal mapping we don't need light map U is because we're not using light maps and we're not caring about instancing so those are gone this part is gonna be a little fast but if you have questions about it then you can you know catch me at the the QA session or afterwards and I can try to explain like in a bit more in depth we don't need normal apps so that stuff is gone but normal we need for lighting but we don't need vu direction because we don't have view directions specific effects like for now or anything like that we don't care about fog we don't have shadows right now and the instance ID and the stereo output which is for like VRA our stuff we don't need and I said we don't need light map we do not but this is like a macro to declare a light map or an SH and SH s spherical harmonics and it's necessary for ambient believe that as is for now so there's this initialized input data function which where did that come from so it's actually being used in the fragment shader fragment program to calculate some things that are going to be needed for the lighting so in there I'm gonna try to get rid of some stuff that we definitely don't need no Maps not needed view direction not needed if you look at these two lines it's just assigning the same value twice so might as well just put this guy in here oops that's better don't need view direction don't need shadow coordinates don't need fault or need vertex lighting big gi we still need because that is used for the ambient like I said so this is where we got and then we're in the vertex shader instance IDs are gone whoops cancel stereo output is gone vertex and normal inputs I'm going to leave for now fear direction guard vertex light fog factor gone normal map stuff is gone video direction is gone light map UV is gone SH stays fog factor and shadow coordinates are gone and finally the fragment shader again we get rid of this stuff this is an opaque shader so we don't have anything to do with alpha release so we can get rid of the alpha stuff we're not sampling a normal map or a mission map or specular map so we get rid of those guys and here we make a call to Universal fragment blinn-phong which does a lighting calculation that we're gonna need to modify probably because it tries it assumes that it has all this data like specular smoothness emission which we don't have so we're going to need to change this so let's copy this and a good way to work with this conversion process is to have both the built-in shaders that is the built-in render pipeline shader library and shaders and the universal render pipeline package in some text editor where you can kind of search through all the folders because then you can find you know what is the equivalent of transform some object space the world space in Universal RP so on and so forth so I'm gonna go ahead and search for this Universal fragment blinn-phong which is in lighting HLSL which we are including and I'm just gonna copy this and again get rid of the parts that I do not need so paste this guy in to mix real-time and baked GI we don't need specular color additional lights we don't care about a very simple use case with one directional light we don't have a mission specular it's gone and so on and we don't really have an alpha so I'm just gonna pass one and then now that we've kind of pruned it down so much we can get rid of the arguments that are passed into it so spec loss smoothness emission alpha all gone so we just use diffuse and we use input data and actually we don't have shadow coordinates and there is an overload of gate main light that takes no arguments whatsoever so we can use that and save okay just match it over here let's see where we're at we're gonna have several compiler errors step after step but we're gonna get through them so custom lit we have some problems with unity probe volume parameters where did we jump off to now we are in the shadow library okay go back to custom lip not that one and take a look at what is going on so we included lighting HLSL we have our own custom c that we were using for our own shaders that include the main stuff like our custom lighting and the main struts that were being shared among all of them we don't really need that anymore yeah looks good let's do a really important areas again now we're already getting it so tangent OS it's saying I'm using it but of course I got rid of it at some point so this one I think I can just replace let's take a look output normal now our output struct is the varying struct and the varying struct has the normal that we want to pass through and let's just passed through it as it comes in for now and get rid of this guy and that normal input is not needed anymore it says basemap st is not defined okay you remember when I said previously we were using underscore main text and now we're using underscore basemap or universal RP is using that you want to keep underscore main text because if the properties match in between the two sub shaders then we're not gonna have to reassign the texture in there we can just keep it as it is so here use main text and any other user just make base map here we go main text and main text and we actually need to declare main text so if you look at simple it oh geez how did i zoom in just now anyways simple with input there is a declaration here of the texture in the sample for the spec loss map but the one for the base map actually comes from surface input and since we're not using it we're just gonna copy it or using this include rather and just change it to main text so come here change to main text and to main text good that should be the Declaration of it done we don't need the ste where was that again over here you can just because we're not doing any scaling or transforming of the we're not doing any tiling with the texture outside of our world space using we can get rid of this transform and just pass it right through okay now it's complaining about normal because input does not have a normal but has a normal oh s yeah okay and we're using normal again here we can get rid of that now sample albedo alpha we don't have that in any one of our files that we included so we go ahead and search through the universal RP library for the definition of it which is right here and it's actually just calling another macro with this order of parameters so we can use that instead just paste it here so I can copy stuff over we're using UV and main text sampler Maine Tex there we go take this replace sample albedo alpha and base color so simple it had a base color defined we don't use a separate color value we can get rid of that one and the normal TS being passed initialize input data pretty sure we're not using that yeah we can get rid of that oops good we're almost there it says input data is not fully filled out that is true because input data struct is defined in here somewhere in the input HLSL file and it's this big guy and we don't fill it out completely and the compiler complains about that so we're going to copy it in and call it input data custom and replace all kind of usages of it with that there looks good and then get rid of the stuff in there that we have removed view direction shadow coordinates for coordinates vertex lighting that looks good okay no more errors seemingly and if we switch between built-in and universal now we see ok our texturing is broken again because we didn't really inflammation or we do the worldspace you ving that's pretty simple enough our original shader is down here here's the code for the UV switch and we just put it in here and just make sure we have the right names for the structs so instead of V dot vertex we have input that position object space and here input text cord X Y and we can get rid of this line there we go ok so now we have a slight lighting difference part of it is from the normals that this guy expects in the input data as worldspace normals so I'm going to take a quick look at the completed shader to see what we did with the normals their custom lighting comes from custom hlsl and we transformed them from object space to world space so go back to our custom LED shader and do this transformation so like so good so now the only difference is a little bit of kind of lighting intensity difference you see in the list shader and I've spoken to the universal render pipeline guides about it for immunity and they say it might be with how we're in gamma color space right now and how ambient colors that are not complete white or complete black how they are handled in gamma space so if we switch to linear space this actually looks exactly the same but this is something that can be fixed pretty soon I'm pretty sure ok good so we did all this work we got to a point where it looks almost the same as before and actually little lighting difference but for what so now when we click on our custom lit shader and switch to a universal RP finally finally we see that we are SRP batcher compatible so what does that mean if we switch to the frame debugger and enable we see some SRP patches in there so not everything because we didn't convert all our shaders to be SRP batcher compatible but a lot of stuff is now batch by SRP which is pretty good if we took the time to do the rest of the shaders that would also be the case and of course we would want to do it in a way that wasn't as hacky as what you just saw we would want to take most of the stuff that we customized put in a custom HLSL file and then use that in all the shaders that can that use the kind of same lighting model and the same structs and so on that's what it takes really to convert a shader the whole way to the SRP battery compatible in Universal RP it was a probably a little bit fast for those of you who haven't looked at any shader code or Universal are appreciated library before but it's not you can't really get into definitely second thing I will talk about quickly is converting effects so I have for the built-in rp1 effect here on the camera with the post-processing v2 stack on the post process layer the layer is disabled around the volume I have a grayscale effect very simple if I turn it on everything gets rendered grayscale right and there's even a blend parameter to go from full color full grayscale but if I switch to Universal doesn't work because Universal RP is not compatible with its post-processing stack v2 it has its own post-processing effects that come with it so if you go here we might be able to see them yeah so in the package Universal ography shaders post-processing you see a lot of the common post-processing effects that we know unity has had like bloom and coffee in depth of field panini projection and so on they're all there and you can use them but we're gonna do it in a bit more kind of lightweight way and one way to do that is on the render pipeline acid renderer we can add another renderer feature so here I'm gonna add the blitt renderer feature this one so the one above that the render objects one that's both say experimental that comes with Universal our key right now but the blitt one I actually took from a github repository of unities let's take a look there github hell WRP custom renderer examples it has LWR feeding the name actually but now you see it's called universal rendering examples and it's compatible with Universal rp7 and up and in this one there was an additional implementation of this blitt pass that I just took and it actually makes it really easy to do custom glitter effect on top of things so it's right here the bullet pass is a scriptable render pass has a bunch of parameters you can create it and then this execute gets called every frame once it's enabled and it actually creates this blur but pass actually the blitt see here yes crypto rendering feature creates the pass and kind of queues it every frame as you can see over here so that every frame this happens after what actually whenever you want it to happen so if you go back to where we assigned it it's over here we can say it should happen before rendering after rendering opaque objects after rendering skybox transparency after post-processing etc here we want to be done after rendering transparent and then I'm going to go ahead and put my grayscale shader in there and now you see the effect is also working in Universal RP if I switch between them it's just the lighting difference from before that's affecting it but both effects are working actually this is a really nice thing about universal RP is that many things that are kind of generalized effects or renderer features that you write can be just kind of plugged in here and you can just set the parameters and you can have multiple effects happening at different places of the rendering it allows you to really hook into different parts of the rendering loop very easily all right going back to our slides I don't know why we're in the intro one but let's skip forward here okay so we were here we open the demo scene we looked at what it takes to upgrade shaders and what it takes to upgrade effects there are some known issues though with universal RP that might be a blocker for your project to be upgraded and a couple of these are cameras tracking stacking and controlling UI rendering with Universal RP I'm going to quickly switch back to the demo scene to show you what I mean I have this overlay camera here let's make sure I'm in built-in RP I am and let's kill this grayscale there we go I have this overlay camera here and for most of us I'm sure used to having multiple care and cameras that can render on top of each other and this camera is set to only clear the depth and then render this cube that's sitting over here and the camera is right over here on top of what the previous camera rendered simple right if we switch to built universal RP that doesn't work right turn the camera my scene works if I turn it on it all writes everything that was there and the background type it was depth only before now there's don't care solid color in sky box but none of them actually works so this was something in the beginning they said they would not support camera stacking but so many use cases have been reported by you guys and others that they had decided to add it back in and it is in research and in development at the moment if we quickly go to the scriptable render pipeline github repository we can see there is a branch called camera stacking and if you pull this branch you know : suppository you can actually put the package this version of the package into your project and use this camera stacking feature it's just very early in development right now and you know you might get some wrong results but it is being worked on and one thing I would actually advise you to do is to keep a close eye on the script will render pipeline github repository for any new thing that might be in development you could look at all the different branches there are there are 450 of them but look at maybe just the active branches there are a lot of different releases you can get to know about them you can look at each of the packages you can look at pull requests that people have created and you could even go to insights and go to the network tab to see who has forked this repository and done what with it this takes a while to load so I won't wait for it because it's a huge repository that's one known issue that's another new an issue ok UI rendering so as of right now UI rendering is not exposed to the scriptable render pipeline at all as far as I have could see and also try to confirm with people from Unity if we take a quick look at universal RP runtime and the actual universal render pipeline c-sharp script you can see a lot of stuff in here let's see camera data keep going I want to show you specifically the passes the different passes that are being done maybe I don't see it here but forward okay here we go there are all these passes that can may or may not be run per frame depending on the features that you've been enabled so there is a draw objects pass trough skybox Pass draw transparent objects post-process etc there is nothing regarding UI unfortunately so UI rendering is still completely kind of in the engine and not so much exposed to SRP and they said this is something on their radar and they would like to work on it sometime in the next year kind of expose it but it's just not there yet so something to keep in mind there is a workaround for it which is that you can use a camera to render all your UI to an off-screen kind of render texture and then composite that on top of your normal image and then you can kind of do what you want but it's not as easy as it used to be at the moment ok quickly switching back to presentation to wrap things up okay there are a bunch of resources that I want to mention that we already actually saw a few of them so if you have upgraded your project to l WR p but when I go to Universal R P there's an upgrade guide that unity has published there is a blog post about it the documentation of course there is a feature comparison table that shows you the differences between built-in render pipeline Universal pipeline what is supported what is not supported what is in research there is this custom renderer is exemplar repository that you saw the script of render pipeline github repository that's really good to keep an eye on there is a blog post about the SRP batcher and what it takes to be SRP Bechet compatible really good information in here actually the stuff that's really not in the documentation but like here and there is a custom render pipeline tutorial from catalyzed coding that I liked a lot so if you want to completely write a custom render pipeline you could follow the series and learn a lot here's the project URL as I promised you if you go here you will find this project that I use just now to show you all the stuff along with the completely converted shaders for you to learn from thanks a lot [Applause] you [Music]
Info
Channel: Unity
Views: 36,477
Rating: undefined out of 5
Keywords: Unity3d, Unity, Unity Technologies, Games, Game Development, Game Dev, Game Engine
Id: ErsXwcb3n4c
Channel Id: undefined
Length: 43min 38sec (2618 seconds)
Published: Mon Sep 30 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.