Level Up with Karma XPU | Tim Van Helsdingen | SIGGRAPH HIVE 2022

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] and second last presentation of the day uh here is tim van helsingen and he's going to go over what did i say wrong huh nothing we're gonna go over uh the scene that he worked on from houdini 19 and he's going to talk about karma xpu you're spoiling it oh sorry goodbye all right everybody uh yeah welcome to press station uh level up with xpu uh thanks so much for coming here with all the cool stuff uh going on uh so wait was it okay doesn't want to go to the next slide let me just do it with the mouse all right uh so yeah my name is tim nelsinger i'm a uh freelance cg generalist with an effects artist uh so work work for a bunch of studios as freelancer and i also make tutorials which you might know me from i've been doing those for like six or seven years so uh if you've been trying to learn houdini is a big chance you've come across some of my tutorials and this was me when side effects asked me to come to siggraph because i always kind of wanted to go at some point so this was me doing a little dance um yeah i'm going to talk about a thing i did for houdini 19 launch which was a scientific snacks version 2 mojito magic which is sort of a fake commercial type thing which i originally was meant as a sort of a demo scene for the uh for fallon fluids which was a feature in houdini 19. and i rendered that in karma at the time with karma in cpu mode and now with uh houdini 19.5 there's a lot of improvements to xpu which is the sort of the gpu version of karma so they asked asked me to render it with with xpu and add a little bit of xpu flavor um so let's have a let's have a quick look at the at the short so you actually haven't no so you actually kind of know we're talking about here um so let's play that so [Music] all right so i'm getting getting thirsty already but i don't have to wait i guess um so i'm gonna talk in my presentation about sort of general improvements in xp1 karma since last year's release so some of the features that i'll be discussing already made their way into houdini 19 because they've backboarded some of the features to the 19 and some of the sub is completely new 19.5 so it's going to be mostly just about my experience first working on this shot in 2d 19 and then all of the improvements that have been made up to this release so yeah why didn't i use xpu last year for this thing because it was already available like in 19 there were there was an alpha version for for xpu um but it was very limited it's really cool that they that they introduced and have had people play around with it but there was just a lot of features still still lacking and i tried it initially but it was like very early alpha when i was working on this thing so i quickly decided i should probably just stick with cpus or it could actually be sure that i could render everything in time but with um 19.5 everything went to beta uh so still not completely full final release but beta has a lot of improvements over the um over the previous one so let's let's compare the one that i did last year with this one is of course it's the same sequence but uh just rendered with xp instead um see on the left is the the one from last year and you can see there's little differences in the way that i look or go over why that is uh a little bit but in general it's the same it's the same sequence and i was actually surprised that i was able to actually get everything through xpu which is uh i think saying a lot and yeah i know the glass here is rotated i didn't i i noticed i forgot it transformed out there after i ran the whole thing so by that means aside from that it's the same thing um but yeah last year i rented this whole thing in karma cpu and i was uh just karma cpu wasn't really that fast at the time so here's actually what i had last year on the cpu side so the thing on the left was actually the final render with a little noise and i had to actually do a doll of denoising and add a little like add some doubles and stuff to actually make it presentable and this was even rendered at uh 720p back then so it was and i had to like upscale it because i was just running out of time for the roulini 19 lounge so with but with xpu i was um so especially for this shot you can you can also see a clear difference in sort of sort of visual quality in general so you see first thing in the art you see a little artifacting on the old one in the depth of field because i didn't have time to actually get it through on my uh my cpu in time so there wasn't enough sampling in the z depth to do proper depth of field last year but now i could actually fire up enough samples so you have you have a much cleaner result and another thing you might notice is that there's um like the bubbles looking a lot nicer so because of the sort of the additional uh uh just render power that i had because i could actually throw this through xpu there is just uh from the um from the documentation just some um some new features in xpu so last year for example subsurface that scattering wasn't wasn't available in xpu so it was kind of a thing that kind of needed uh there was no point rendering there you couldn't met out objects there was there's a lot of stuff missing that i actually ended up using in the in the um in the cpu render um but let's take a little talk a little about the sort of the differences that you have now because they're actually sort of two different render engines um which use the same scene so you can use the exact same scene the same same lights except some materials but you actually switch switch between the two and both have sort of pros and cons uh so cpu has more features for now because generally they will develop features on cpu first and it will backboard them to xpu uh and cpu uh for now like has a little bit more options to tweak for example for sampling and stuff like that and as of right now it's a little bit more reliable uh but of course xpu is still in beta so like they'll stuff stuff will keep improving but of course the big downside is it's like it's a lot it's quite slow one on the xpu side it's a lot faster because you can use all your devices not just your gpus you can also use your cpu which also helps like for example if you're working in a studio which has a cpu render farm for example you could just have your artist work on the ecpu side and then still farm it out and then the farm will just pick it up on the cpu node so it will still render so kind of depends on kind of on the type of production that you're going to do if you're going to pick doing this in cpu or in xbu mode and it might be good to sort of pick the pic pick that early on but we'll get into that a couple of slides on so cpu you might want to do for or if you're doing really heavy for vfx or animation workflows with a lot with a lot of assets it's just going to be really heavy uh heavy heavy scenes uh if you need a lot of flexibility which like you're sampling and lead like aov setting stuff like that and xpu is for now at least probably going to be better uh with lighter lighter scenes without a lot of assets and like maybe some simpler like motion design type of things i'm not saying the motion design is always lighter scenes just giving an example there uh because of course you're still tied to the vram on your gpus and it's going to depend on the gpus that you have um so here uh our score so it's the same scene and you can already tell that they don't look exactly the same even though it's exactly the same scene same material same lights and one is rendered in karma cpu when around one is rendered in karma xpu um so they're trying to sort of bring together the way these these look i think eventually they want to bring it sort of parody with the loop but as right now they do look a little bit different uh so that's going to make it a little bit difficult to sort of mat uh sort of use cpu maybe on the uh on the same same shot so you might want to decide early on if it's a shot that you could render in xpu or in cpu another thing you might notice is the render time uh almost 17 minutes on the cpu side and two and a half minutes on the on the xpu side and so my cpu is a 3970x and the xpu side is to 3090s with uh of course also with the 3970x because it just picks up all the hardware that you have it's not a one-on-one comparison uh because um sampling settings are a little bit different on cpu and this is just the same scene so i guess if you went through the cpu and you tweaked some samples you could get it get this down but i do think it already speaks uh for so just the general speed improvement that you're going to get for something like this um there's no here's another scene speed difference here is a little bit uh less or less extreme um this probably has to do here with the fact that you're you're going to see that in the next slide as well with the gpu and the engine sort of it start will start rendering just on your cpu and then the the sort of once the whole scene is loaded into the memory on the gpus the gpus are also going to fire up and then it's going to start speeding up and if you just fire up your your rpr it might take a little bit of time for the entire scene to below the loading gpu so if you were to fire up the rpr for a second time in this shot the right one might might actually be faster than it's here so there's kind of sort of these trade-offs um here you can see a very sort of different ignore yeah you can hear see the sort of cpu side it's just uh really taking its time and on the gpu side you can already see it being well a lot a lot farther along uh especially it's not super clear but you can see on the uh on the right side you see which devices are rendering in the beginning the the gpus might display as idle and then they're loading up the content and then eventually they will start rendering and then you generally see a big big improvement in sort of like how fast your scene is rendering um so cpu versus xpu side on the less you see other left you see all the sort of the render settings you have on the cpu side and you have a lot more control there over for example just the quality like where do you want to fire your samples um for example you might in this scene specifically like it might make sense to fire more samples on specifically the glass because that's the part that's going to be the most noisy and you might fire less samples at sort of the environment um so you have all the control those controls on the cpu side on the xpu side is just brute forcing sort of just right through through the whole thing but of course it's going to be a lot faster because it's going to use all your devices so kind of depends on the scene i guess what you're doing um uh if you are if you need sort of flex flexibility there but this right now xpu there is with these sampling settings a little bit similar a little bit simpler so you don't really have a lot of things to to take care of which has both pros and cons i guess um so how to render in karma and xpu just in general um just a very sort of quick tip that i wanted to throw in here so the the you you like if you have if you've ever worked with uh solaris you already know probably this but on the left there's just the standard stage context where you built your scenes that's how i rendered most of most of my scenes but as a routine in 19 there's also the sort of the karma the karma rob which is similar to how you had the mantra rob just just in just in the out context if you ever tried to use that when you press the view karma viewport is going to have this pop up second window which i find really annoying especially if you're working on one screen it's just not not super ideal as i uh wanna want to have like to show you sort of a quick tip to get it more similar to sort of the mantra render view where you just have the render view and you press render and it starts start rendering um i'm kind of hoping the side effects will implement something like that maybe in some future release where it's going to be more similar to that but for for now what you could do is you could make a new network view uh then lock that view to for example nine or another number so you can look uh just press t sort of the the pin button you can lock it to nine and you would navigate into uh into the karma rope into your lob network and then link your viewport to it and then here's a video and then actually what's going to happen um you're gonna do the whole thing come to the out context going into our lob network as you can see it's just essentially just a wrapper for uh for for a lobnet but if you then link your viewport essentially you have just your karma viewport just in object context and then um if you space five on the viewport you could you could get uh just a regular render view in your object context which uh is kind of what i i would want with just the karma rob when i'm when more similar to how mantra was was behaving so kind of hoping that they're making something for that eventually on sort of uh as a native thing but for now i think this is a good sort of solution if you want to work with karma this way um so this is a general tip for for solaris i guess not specific to xbu but uh what if you want to render your shots in in xpu um so last year when i did this short i actually set this up with principal traders that was the way that you would build materials for mantra initially but principal shaders are not specifically supported in xpu they do do some conversion under the hood but it's better to just build everything in material wax so materialx is an an open material standard um which they're really building out in uh in in in houdini is really nice it's sort of a combination if you have uh usd which is of course a university in description also open format combined with material materialx is going to be great for the sort of exchanging uh exchanging files also later between other applications for example which also have interac support so it's it's kind of kind of good to get into the habit of learning to work with materialx anyway and if you're going to do xpu you need to build everything in materialx anyway uh so somewhere in the houdini 19 release cycle they introduced the karma material x subnet which wasn't available when it when 19 initially launched but this goes introduce a little bit later which is nice because if you just have to have the subnet you only find material x notes if you're working in there so it just makes the material building a little bit easier because you're not accidentally hooking up legacy notes in there so here's just a uh uh just an example of um yeah just a uh uh uh just a material x now it's just pretty standard sort of pbr uh shading and if you wanna sort of if you don't know a lot of about material building just go to your principal shader just look at the textures look what they're plugged into and just make the material x image nodes and plug them into whatever slot they are in the principal chair and that way you can pretty easily recreate your your materials like that um a thing here is that if you have regular images you would put them with materialx image and then if you have doubt images it's actually a separate note for that and you sort of pop out the tiling parameter and you link them up will be nice maybe in the future if there's some sort of a rapper that has sort of a unified thing for that but as right now that's how you use it uh and another thing that got asked in in by uh by someone on on discord and i figured that throughout in the presentation how do you use noises in material x because they're not as straightforward as the noises with the you you had previously just with the principal cheddar so if you have the noise uh over there on the left you can just directly plug it in um you need to give it grow the coordinates so what you would do for example um in swap context you will make a rest attribute on it so rest attribute essentially just the position of of the thing and it would be a static sort of position which could map stuff to uh you would plug that into the position and if you put a multiply in between and you put another parameter in there you can use that to tile to tile your noise so you could have skill controls over your noise and you could stack those to make interesting noise patterns and i'm kind of hoping that maybe at some point they will do maybe some presets or something like some other render engines have that would be cool um but for now this is kind of how you use the the noises um and again if you're doing xpu you need to do everything materialx so there's no using of the other stuff that that was already there uh so let's talk about some of the new features that xpu has that i that weren't there previously that i kind of needed in order to render this shot um so uh sort of point rendering and maths was something that wasn't available before i think point rendering got into somewhere in the 19 release cycles it was backboarded i think so that's for example used in this shot so you have the rain and i actually the i have to render the rain and the plants uh separately so here you can see the final uh final composite on the left and in the rain on the right and if you look closely you can actually see sort of a silhouette of the plant sort of just in between the rain which is very sort of standard thing that you would do if you just set up a a render scene you would map out your scene but that wasn't previously possible in xpu and of course if you have rain you might want refraction sort of of your scene through the rain if you're rendering it separately because if you're going to composite these together you probably want maybe some objects to refract to your scene um so if you have a render geometry settings and you apply it to if you have a if you're if you have your uh your lobnet you would apply sort of one branch you would put the render geometry settings you could put put the holdout mode to matte and it would essentially mat out the whole thing from your render and you will do another branch where you essentially can say okay which which radar which ray types should be rendered so if you exclude primary ways with uh dash primary then we'll only render the second like the uh secondary race so refraction and uh and reflection and would be hidden uh for full of the other stuff which means it would refract through the rain but not uh be directly rendered and you get like we have here you could uh get something like that so that was that was something that wasn't previously sported in xbu and it's just a very common thing you would do uh when rendering so that's that's definitely something that's really nice to have uh another thing mistakes were made uh so apparently my my short was used in the hoodie 19.9.5 release uh about nestor dielectrics for xpu which is not actually not available in xpu but it is available in cpu so i'm not sure exactly how that happened but i i think i was that i got a really uh like a list of stuff that was supported in um for xpu and i must have read one of the features that was supported for cpu as a xbu thing and then i rendered the whole thing and i guess side effects fought out it has nets of dielectric so i guess there's somewhere somewhere uh along those lines something went wrong but it's it's only available in cpu for now and it's going to be in xpu uh i guess pretty soon but uh or or not pretty soon i i don't know i don't know when it's gonna be there it's gonna be there at some point now if you're gonna be like what what are nestor dielectrics even uh let me still give you an example of what they are because it's still very useful um and then you already know how to use them if you're going to use them in xpu later uh so here's just a simple glass uh with some ice cubes and some and some indeterminate liquid uh which they're resting in uh and it might look like simple scene which it actually is but if you're going to look at for example the wireframe you might notice that the the ice cube is is intersecting uh the liquid now if you're going to render this of course like how does the render engine know like which which index of refraction which material should it pick if where the liquid sort of penetrates the ice cube and essentially what nester dielectrics is it's sort of like a render time boolean operation so it's just a images from the from the documentation so essentially it allows you to sort of do a render time boolean type operation sort of to be able to say all right um if the if the ice cube is inside the liquid then you should use the ice cube and not the liquid so it's just an example of sort of i gave priorities there on the right i just linked the sort of priorities onto onto one null i will show you how to do it in the materials in a little bit um so the lower the number the higher the priority that's different from some other render engines like maybe octane or or arnold i think those are the other way around where it's the higher the higher the priority is so this is inverted um so in this case the ice has the highest priority than the juice and then the glass but let's say if you were to sort of put the ice higher then it just completely disappeared so you can see how this can be useful sort of if you're rendering stuff to be able to say all right which material should be should be picked uh so it's very simple to set up you just put a carbon nested dielectrics after your standard surface uh that's also my by the way maybe something to mention the material extended service uh as right now i think it's the only one that's supported in xpu so there's a couple of other uh ones you can choose from but this one is uh uh the only one that's supported for materialx at the moment anyway you plug your material and then you uh you give it a initial index of refraction which you can pop out from your shader and plug it in so it matches or you can do something custom if you want and you can just say the surface surface priority you would do that for um for every single one of your materials and then you get uh yeah you get uh yeah your nestor dielectric is working again not an xbu yet but hopefully soon uh so some other sort of workflow tips that i ran into so i needed cryptomats but those are not supported as of right now in xpu so i had a sort of i have a working sort of solution to create sort of more of a puzzle matte thing um there is just a whole bunch of sort of just mattes for things i was using so in my composite i use those to sort of grade um create some stuff uh and since i already like i already made this entire sequence so i kind of wanted the same type of method i had before so i could just reuse my composite uh but briefly i was using cryptomats if you don't know what cryptomats are by the way they're a render pass which allows you to for example in nuke or in fusion or in after effects to sort of pick your mattes uh after the renders you would say all right i have my crypto method loaded in i pick okay i want to create a mask for my glass you pick your glass in the composer and it will generate a black and white mask which is super useful karma cpu is supporting that xpu not as of right now but i mean maybe at some point like it will it'll be be supported but sort of the work around i found for that was to create an attribute on soap level just call it whatever you want i call it matte you can call it cheese or beer or like pick a nice name you would load it in spring for so you have to use the print var reader which is similar to a bind node if you have like if you do uh just a regular material building with principal cheddar so you use the prim var reader reload the mat and you have the karma auv node where you plug it in and essentially it allows you to define an av and this and now the hacky part you plug it into a random slot that you're not using because then the material is going to load it i kind of hope that they are going to maybe do a sort of a custom slot for maybe aovs at some point to just ingest data as of right now that's not there so just plug it into anything that you don't use and then it will ingest it and then you can make on the karma render settings you can make a custom aov give it the same name and then it will just come out as a black and white image and you can use that as a as a matte in your in your composite so for now this is a workaround until cryptomats are supported and hopefully they'll also do sort of custom slot on the material because this can be useful for other stuff as well not just for uh for these mats so it would be nice to um to maybe have a custom slot for for ingesting aovs uh like making custom aovs like this uh so device filled so this is something that you might run into if you're using xpu where if it runs out of vram for example or there's some other issue then your gpu devices will display as filled it will still render your so your ipr will still run on your cpu but the gpu devices will display is filled i ran into this quite a few times and then when i tried to get a screenshot for it for the presentation i couldn't make any of them fail so i know that was never there but again you might run into that at some point so some things that i ran that i noticed in order to sort of work around that uh was uh what uh so what i what i found worked really well is just walking through your note graph because i think what it's doing i'm not completely sure but it's loading sort of stuff on the mount as you sort of refresh it if you start at the top it's going to load in those things if you walk down it's going to add those into into ram and i found it a little sometimes it might be a little bit more stable if you just walk through it and then eventually it'll render or you can find out where the issue is if you have device failures so that might be something you could do auvs will sometimes give some problems with it as well so you might want to clear out your iev see if that is a problem um and if you have the device filled thing just switch it between karma cpu and xpu and it will it will sort of reload the whole thing because it will keep displaying the device field as long as you keep it in in xp mode so just some things to keep in mind again it's still a beta so they will probably improve some of those but these are just some workarounds and another workaround is to just buy buy the biggest gpu you can so you have a lot of vram and it's probably not gonna gonna happen as much um so for just other stuff you if you thought of the sequence itself what's cool uh there's a 20 hour free course on just the other stuff of the vellum uh vellum fallon fluid stuff so uh that would that's available on the side of its website and there's another presentation that i did last year about fallon fluids uh we're also gonna release i think the source files uh of last year's stuff with the uh with the sort of xpu settings on there those aren't available yet but there will be at some point and you can download those and have a look through that um so yeah i i've run one minute late oh no anyway if there's questions and i'll take questions that was the thing no questions oh no oh there's chris in there oh wait oh i'm blind it's the interrogation lights hi is there um are there any limitations on the type of primitives uh xpu renders right now i'm i'm not sure if that's something you would know like does it render curves for hairdo uh yeah it does render curves right now i think okay if you can go back there's a whole thing on the go back to the whole thing there's to go back really far here oh yeah here yeah get more room curves uh points like maybe there might be some limitations i don't like i haven't run into any of those yet but like i don't know if there's other limitations that it might not do but uh in general for the stuff i was doing just runner just regular geometry just point rendering that that's all working okay working fine right now so thank you anyone help oh there's one over there could you show your noise slide again you mentioned it it was a little hard to see back here but um you said something about bringing in your noise or would you use the um x material noise uh yeah well this is this is just the material x 3d noise there's okay noise and there's a 2d noise the thing is just uh it's not super clear by the focus there's no settings on those no on the noise by default for like tiling and scaling and stuff like that so this is just how you set it up in order to sort of tell this and how to map it either to if you map it to the rest position it will just behave as a as a regular noise but uh like i thought this was like maybe not not clear to some people and i had some people ask me about this so i figured that's why i throw in sort of a slide um so you just have the noise you bind in the rest position and you can multiply the rest position in order to sort of skill your noise like make bigger make it smaller like stretch it out um so that's essentially how how that works but again like i kind of hope that they're gonna work a little bit on this to make it maybe maybe a little bit user friendly and maybe wrap some stuff like in a sort of more unified noise thing or something oh yeah you know wait oh do you know if it works with uh houdini instances uh i haven't tried well i mean like usd has its own sort of instancing system so like if you instance in solaris it's gonna work with uh with that um i think there's might might also be some improvements there i'm not sure because when i did some tests last year like i have the grass in the last scene it was instant and last year my scene was completely crashed when i was demoing it and xp and now it is rendering so i'm pretty sure it is doing fine with the instancing and picking up on the usd instances but i don't know any specific details on that apart from that it is actually working and also the ice scene that i that i have that was set up with a um with a custom point instance circus you have all of the small debris pieces which are also instanced so that is all working working fine if you're referring to any type of other instancing then i'm not sure no that's that's what i'm asking about what about uh like point attributes and you know reading and attributes to the materials yeah uh so if you load it as uh so there's two ways to load uh things in your solaris context it's uh sort of as an object level or as a swap level if you wanna uh as far as i was using it i was using the soft loaders if i wanted to extract attributes because then you just have a drop down you can select that which you want to load and then we'll bring it on as a prim var uh and you have installers contact you have a separate sort of spreadsheet type thing you can see all of your print bars that are being brought in uh that's also what i'm doing with sort of creating the sort of the mats where i'm creating an attribute called call the mat bringing that in as a printf and then i can load it into the material like into the material to um to do any of that so you can you know you can load attributes like that and oh what i think what you meant right right sorry for the the houdini instances uh so you mean the pack geometry on top level or yeah yeah oh yeah if you bring that in there's options on the uh on the object loader on the swap loader to make it native instances so you can set it up as a point instruction it will convert it into uh into international native instances so that that should should all work there were some problems with that last i had some problems with it last year but i tried it this and now the automatic stuff seems to work fine as well so that's uh yeah thanks anyone else all right that's a wrap oh time for beers yeah thanks everyone thanks tim
Info
Channel: Houdini
Views: 9,399
Rating: undefined out of 5
Keywords:
Id: YhZa1YkLwCU
Channel Id: undefined
Length: 32min 41sec (1961 seconds)
Published: Wed Aug 17 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.