 Test hello test one two Testing one two three. Hello. Hello. Hello Hello everybody Do you hear me? Yeah Do you hear me? It's cool. Yeah, okay. Thank you picture. It's normal or not Yeah, it changed resolution. So I think it's detecting the video projector, but maybe it's not Okay That's nice. Thank you. I'm sorry. It's not a Mac. Everybody's using a Mac. Yeah, so I will be a little bit less lost Maybe we'll see but indeed its first time I use the awful Microsoft OXPS file So I even don't know what what I'm doing So Yeah, it's not it works Welcome. Welcome to this workshop. It's about OSL. It will be a little bit hard sometimes I hope if you have question, you will have time to ask question after but if you are completely lost just ask and I will make a pause So I'm Francois Casteldo. I'm teacher. I'm teaching sharing writing Surely some of you saw my video on Vimeo about what I did with my students in sharing writing I choose to teach OSL because it's I Think the most interesting sharing language for a long time and it's easier also So let's start with compatibility Why is this conference in fact OSL was a nice project and Blender was near the first to adopt it really And so we have a huge knowledge about OSL and this year OSL spread everywhere in computer graphics and It's Romised to be the number one sharing language. So it's a very good things to Think about using our knowledge and adapted to everything And so what we will study at first Okay Yes At first we have a small remind about what is a sharing language It would be useful. What is the difference between renderers with some case to this about texture and materials And after we will talk about OSL pipeline how to integrate OSL pipeline and Then at the end there here number six you could ask many questions. Okay So and first what is a sharing language? Yeah Shading language is a nice way to make materials easier than not not so easier in fact just Shader is made to have exactly the look of the object you want That's the first part The second part is to be able to have this shader in your production and anyone could use it without having an expecting result most people Working a lot on this first part the right look and forgot this one with a 10,000 parameters to tweak a Good shader have must have a good user interface. So anyone in the production can use it So Yeah, the OSL is not the number one and it's not the only one sharing language in the world You surely heard about GLSL for OpenGL you heard about Meta SL from Montalray It was a really nice idea, but unfortunately there were no documentation. So We couldn't do anything with it RSL is the first advanced high-level sharing language ever existing. It started in 1985 so long time ago 30 years of RSL and and OSL is mainly derived from this language. It's a simplified version of RSL. There is a lot of Other sharing language we will not talk about What make OSL so specific and so different than all this language in fact So let's start with a spreadsheet. I really love spreadsheet. Yeah, spreadsheet I really love that What we can see here is that okay, there is just few language OSL is the only one that work without a light loop What it means that you can control how the light is applied to your object with OSL and you let the renderer do So the renderer can do anything he wants and that's the main interest of OSL It's that's very very specific to your renderer. And so you get the most of your renderer With all other language like GLSL or RSL You have render independent sharing language. You write a shader and it gives you the same pixel for every renderer So if your renderer is really top nice with a SSS and so on you can't have it so So it's really limited You can do really nice things But if you want to have multi renderer in your production use for example Mantra for volume and And Apple seed for global illumination You can't use such language because you will not be able to take advantage of why you are choose this renderer That's why OSL is now going everywhere just because of this The main problem with that is that it's not made for having a common shading language between renderer so so OSL it's not made for compatibility. So, okay, why is this conference? Why is this workshop? In fact, the main object of OSL was to have a common framework Unique language, whatever is your renderer. It can be unpair, unpair and par renderer It could be very photorealistic renderer using the same language So you don't have to relearn a new language each time you are doing shading and Also, it's open open source project So it's easier to put a language a shading language in your renderer with open shading language and That's a big thing because it's really open source and it seems that it's really nicely done because a lot of people adopt it now So using for compatibility between renderer using OSL for making the same shading between renderer is kind of kind of very dangerous Very dangerous way What you are going to do is not exactly what you want to do So When you hit render in VRay and you hit render in cycles, even if there's the same shader, you will not have the same result So it's nice to have common framework to take advantage of each renderer But if you have put too much trust in OSL, you will slip and fall, surely so OSL I said it spread completely the CG world last year in fact this year 2014 Two years ago, it was just cycles and Arnold at Sony Pictures and Spectral Studio and Autodesk Bisc was for now. There is a lot of more as you can see The one in orange yellow orange. It's the one I use in this presentation and And and there is more every day. In fact like XRT which opened to open shading language just last week and There is some strange renderer like paprika everyone know paprika here. Yeah, no nobody know and nobody use it it's It's open source and PR So non-photo realistic renderer Apple see like discover it Not so long time ago, and it's really really nice and also on internal studio renderer like Ubisoft for the I don't know how to say La Pancrita in English Okay, someone know no Yeah That's it. So they use they made their own renderer using OSL. Oh And of course Arnold in Sony Pictures. It was the first one. There's many many rumors. I will not tell you them But the future So let's start OSL implementation differences between renderer Yes, what's the difference between OSL in cycles the difference between OSL in V-rays the difference between OSL in others There is many many difference so we can have a nice spreadsheet So First I would to use it inside the software Second what can it do? So how to use it inside the software as you can see You must pre-compile. It's not a real compilation. It's pre-compiled in an OSL shader Apple seed is not able to pre-compile. So you have to use an external software to pre-compile You then once you have your shader you have to use it and It's not so easy in fact. I discovered that some things like Spectra Studio or Apple seed doesn't have no the editor So you have a shader, but you can't branch it to another shader So it's completely limits what you can do in a shader. You have to be a close shader And there is very very few software that is That allow to compile to pre-compile inside the software to edit inside the software and also to have external files There is just one Who is doing everything and with the latest OSL specification V-Ray is on 1.3 specification and in fact Brander is 1.49. It's near 1.5. It's just a one closure difference. So Microfacet And Spectra Studio is there is no documentation about what specifications so you have to Okay to try to find out which one and so Now Okay, you you already know this. Okay That's the only one which is doing everything it's blender So I think that for if you want to do OSL shading It's really nice start to start with Brenda and then adapt it to other software Second limitation is not the way it is used in the software is interface limitation It was big big surprise when I start to use many many around the world to see that Having input of renderer. It's not so obvious When you are the shader in cycles you have input and output If you are working with Apple seed, you have no output No output. Yes. So you have to use the standard CI closure So it makes an output and think like that. So it's the interface really the shader is working But the output and the input are Not the same. So another spreadsheet. Yes. Yeah. Yes. Yeah, another spreadsheet love that so for example The metadata is a famous metadata. I ask every year. It's about the winner At a variable only in spectral studio and very very very limited version in V-Ray. So in V-Ray Was the only thing you can do in metadata is to have a checkmark. Yes. No That's better than zero one in blender. But indeed Indeed in V-Ray, you have just color input. If you want a vector input a floating point input It's in parameter input. You can't have it So it's very very limited. I was thinking that a V-Ray for Maya will go a little bit farther But no no just color input also Except that in V-Ray for Maya you can make script in input, but it's not not not shading What is interesting about a pulse seed? It's a All axiom xml software So you can have everything include nodes connecting nodes and so on but by script So if you like scripting if you have a nice TD in your production with love scripting It's a good product. Even if there is just one output. It's ci As you can see Other things. Okay. Yeah Ci is standard closure output So when you write a shader it has one output by default It's ci if you write to the variable ci then the renderer is able to read this output Indeed it doesn't work in blender Actually in in cycles the output node that you have at the end is passing it to ci Okay, so and we we cannot use it elsewhere because the output node is passing it to ci So when you connect this the surface or a volume shader then passes it to the ci output Oh, so it's nice. So it exists in indeed. Yes, we will see after When you are writing a shader for V-Ray and for blender you have to put the ci If you want it to work very well so next step One good news is that all those limitations are the only one if you are not using closure What we call texture shader. It's just changing the color mostly Like a checker and so on if you are doing such a geometric and texture shader. There is no other limitation And you can have your script with just color output Uh compile it With blender and use it in apple seed. For example, it works very well If you are using in V-Ray, it's not the same way cell specification. So you will have a nice V-Ray crash Really nice and fast so and um But indeed if you copy pass the code it works very well But but a little bit What it is But there is some other limitation which are just the import export of the scene Like sense shader, a same size change Yes, if you have a 10 10 sense shader 10 times bigger in one under an another your checker will be 10 times smaller in the final render So it's not nice. Uh one stupid thing. It's a y-axis. It's really stupid, but you will have your shader just UV input UV input. It's also a nice surprise. It works Is a u and v variable working very well with V-Ray and not very well with blender. I did not have to them um working So I have to put an in a UV input in blender Indeed the blender is well known because you can have as many UV as you want in one object So what is UV variable in this case? so And uh also inverted normal everyone knows that normal are not in the same direction in cycles and in v-Ray No, nobody knows. Yeah, it's just the opposite. So you will have a nightmare on all your glass and so on And so There is solution of course, but if you take a shader You put you have your blender shader nice. It's working and you just use it in v-Ray on apple seed. You know what you have So the original one in cycle Yeah, it works Uh the one with v-Ray as you can see there is a huge size change and uh all triangles are so small that they are not visible And uh in apple seed, it's just the opposite huge triangle So I would to take care of this just you have the right to make photos if you want This because if you have to write it, it's not so easy Uh, so here are the solutions to make them to make shader takes your shadow walking between cycles and others The first use absolute value of the normal Just something stupid, but so you will not have inverted normal Indeed, it's not so easy to say if we're front face or back face. So it's uh Okay, it works if you don't want to have a different shader on front face and on back face Second never use the p variable alone Because there is a biggest change between renderer So I have on my scene on my shaders Uh size factor Which compensates the size difference Like one is working in each one in centimeters. Yes That's really nice And also I use standard transform to have an object space p Peace position of object of the pixel So Uh the transform object is at two main advantage The first one is that is local p. So it's the same between under the second one is When your object is moving your texture is moving with it If you are in world p when your object is moving your texture is not moving So it's a kind of special effect really nice for clouds And uh to invert to invert zed and y just inverted and y You can see here There is more more of course There is a way to have this automatized by the pre compiler And with an external file I call it who I am okay Uh do not do this in unix because it's a unix Instruction So I say what is the renderer and the size factor and then I apply it Okay Usually I don't use it because I'm compiling shader as far as possible as it's possible in blender So it's always blender Or cycles So I don't use it so much Can we yes Yes, and uh worst of all is 3ds max where you can change This in the software you can have the same software and put it in each or in centimeters And uh if you do that just what you have in p change but not your scene in the interface So yes, it's very nice for architect to have to work in millimeters or in kilometers But uh what we are doing So and that's why I have this size factor It's very very important and that's why it's exactly one inch in this case As you can see Uh, so it's a not so big limitation. I think oh it's easy to have an interface and write it so What it does As you can see the result is really much much better Just applying the things and uh Now you if I remove the name you have to tell which one is which one There is just one difference. It's the noise size on apple seed. It's not the same. I don't know why But it's not so visible. Okay So for texture shading, it's perfect. You can have really exactly the same if you follow those really simple rules I'm very happy with this picture The second case is when you have we are not doing texture material and texture shader but material shader Using closures when you are using closure. So you are writing directly to the renderer And other Very very specific rendering. So closure the hardware's begin. Yes Each closure are different Each closure are different even if you have the same name It's not exactly the same between renderer when you are doing a diffuse closure It could be not a diffuse the same source of diffuse for Vray or for cycles. So you will not have the same result So it's very dangerous to work with it Yes That's what I said. Yeah Uh, and other thing also, uh, usually the inputs could be different like the roofness the roofness of uh, micro facet Uh, there is some offset sometimes or factor. So you have to find it And so there is two way to work with closures. The first way is to say Okay, I'm going in documentation. In fact, when you are working with osl You are going in documentation very very very often about two minutes Every two minutes you are reading the documentation and you try to find which closure are working on every renderer and so The first strategy You use only common closure The one you can find on every renderer If it works you can share the uh pre-compile file. It was very well between for example cycles and apple seed You make a shader using just diffuse for example and you pre-compile it in In blender you take the point osl 5 and use it in apple seed. It works perfectly Indeed There is really a small number of common closure So if you want very specific things you have to do it yourself So you have to develop more and write bigger shader and bigger shader means slower shader and so on And even like this you can have any guarantee of the same result Oh, let's try indeed This is the second solution Okay, the second solution is do not use common closure and just adapt yourself to every renderer Uh, I like this one, but there is a lot of work because you have to make correspondence between closure What closure with such inputs is doing compared to what other to another one So there is a hard work to do here. So let's try the first one with a spreadsheet. Yeah So they are the common closure from the osl specification Not all I didn't talk about volume closure. I didn't talk about subsurface closure So and mostly they came from blender. So it's not a problem And what we can see is that there is only four common closure Things like fong are not in cycles. Oh fong is not in cycles. It's a good thing. Nobody use it But it's a main closure in vray So, uh, there is some difference between 1.5 on micro facet Blender is still using micro facet from 1.4 And 1.5 changed the way to write micro facet. So Not so good change and a big mistake about or and naya because on the first documentation that forgot this underscore underline And so everybody is using or and naya like this and And so you can't use the same It's just a stupid thing So if I want to make a nice example I wrote something that make a old metal Simple shader with brad reflection and doing old metal So here is the shader as you can see it's a little bit long for doing exactly the same as micro facet, but a little less perfect And so here are the results on the cycles as you can see there is roof reflection And a diffuse component And I can also do a nice reflection if you put roof net to zero It's a very very simple scene So let's try it as it's the same And the same closure Let's try it on another renderer In a pulsed Work nice. I like a pulsed A nice open source project And let's try it on vray Okay So Yeah, now what happened? In fact, I was using n perturbation to make the brad reflection But in vray you can't change normal with your shader So as I'm using changing normal it doesn't work at all And I have just a nice reflection not blurry at all So as you can see as I said before even with the same closure you could have very very different results So I think that using the same closure is very okay. It's easier because you don't have to To think about what closure could be the next one But there is some danger Indeed if you are just using diffuse it's okay if you are using emission even emission Yes even emission sometimes is missing Oh Even for making a light source it's not so easy to use common closure. So it fails. So what we have to do First thing is though the limitation. I already talked about that Is using specific closure so specific closure you have to read the documentation And find I want to make some roughness on reflection. I want to do it Okay, I find micro facet backman For example in cycle I find micro facet in apple seed and I find fun in vray and so And I find a lot of things and as you can see on different renderer Of course cycles a lot A lot of closure. It's because it's open source. It's well known So a lot of people are working with it A lot of people are asking for closure and some people are programming other closure So we have really a lot On vray if you read it's okay. It's just six months of osl So there is not a lot and not the best like bling. What care who cares about bling now Apple seed is really nice because he has a disney material definition Which is a very very nice way to have physically Based material So next in cycle. No, maybe It's open source And spectral studio, which is not well known They're the same as blender, but they stop development. So I don't know what happened And so here are the equivalency the chart you can make photo also or you can learn it Yes, okay in five seconds. I will give you every A paper and you'll rewrite it after Okay So as you can see the same Shader the same closure with the same result could be very difficult Just because the phone is not working with roughness, but with glossiness So you have to invert the roughness and with a two factor Nice So it takes some times to find it Many tests once you have it it could be really fast You just have to have this example and copy past in your shader But you need to spend some time to find the closure the correct closure to read what could do the best And what is the most close to micro facet backman? What is the difference between micro facet backman and ggx? And uh, is ggx possible with phones? No And so You have a lot of work. I just give you for my example I start to make a very long file at home With everything different like go and naiar roof nephers of often order and naiar with factor and so It works well, but a lot of Indeed you just have to do it once so if it's for production It could be nice One main advantage is that I replace this long shader, but this really short one Indeed it's too short Okay, so the result Blender. Yeah, not so big difference. Okay Uh, apple seed Apple seed I start to realize that apple seed is very very sensitive to clamping And I didn't clamp my shader as you can see there is no clamp function And so I have far flies A lot of far flies Uh, the difference of color it's mostly the difference between color profile I didn't try to tweak color profile between under because it's too much job not too much work to do So there is difference between luminosity exposure and color profile And with very so yes, it is working now and very close to blender Oh, it's working nice. So you can do really real shading between very and cycle Uh Zero is three So for me using specific closure you spend a lot of time in documentation a lot of tests But it's the best result. It's also the faster because the shader are smaller Um And easier to write because when you did all your tests and you choose which closer correspond to which closer You just have to copy past Indeed it's sometimes impossible. For example, if you want to make a subsurface scattering with him with apple seed It's just not possible. So there is no subsurface scattering with apple seed So even if you far you could try to find a closure, you will not find it If you want to make volume with a vray Vray is not making volume with osa So you could not so sometimes it's impossible But indeed it's not a big problem because when you choose your renderer you choose it for one reason For example volume or so on you want to have an architectural with vray on 3ds max and volume made with cycle Because they are very very powerful Then you make the two and you will not have need of volume in vray The goal is not to have exactly the same picture is to take advantage of each renderer That's why it's sometimes impossible. It's not so big problem So now how to do it? I already said it so you just have to read no What how I'm doing my shading now Always as blender is the best for developing shading because it's just all internal and so on I write and debug completely the shader in blender Then I think about going elsewhere going elsewhere I export it. I'm using sublime text editor just because he has osl pack Indeed I have no special feeling for sublime. It's osl pack Oh, there is also osl pack in the text editor in blender It works And so then once in sublime I save one shader per renderer with specific closure If you use four or three renderer, you have to have three or four shader each one with specific closure And if you make a mistake You will have a lot of error in your renderer Like you save vray and you open it in a cycle So be careful Then I pre compile and mostly I try to use the other file instead of the osl file So I have just one osl file osl file is safe On the production. I do not give the osl file. So nobody is trying to write in it So the osl file is secure. So I have the osl file in my project Okay Everybody knows healthy. No in fact, nobody knows just because in blender you don't need it So but when you are using a vray or a pulse seed Sometimes you need to compile with osl c which is a nice dust command. Yes Wow And um And it should work if you do this it works About every time about Uh, which means that you have to read the documentation And read the documentation because there is no software with all osl specification in Even cycles doesn't have missing missing feature and it's normal. It's uh osl is not made to have exactly the same thing on every renderer. So The first shader I made with vray was an ambient occlusion Three color ambient occlusion. Some of you are using this One ambient occlusion in red, one in blue, one in green And so with one render you have three ambient occlusion for compositing And it's nice, but it's uh, I Call on this one message passing are not implemented. So I could not retry the length of the array So as you can see here, you have to read the documentation and be very very careful of what you are doing There is some limitations that you will not discover until you are trying to do it There is no such things in blender documentation It's uh pity What we are not doing I know there is a lot of job for writing documentation So now oh Oh, okay Yes What about working in a production with many renderers and using 100 osl I think it's a good thing because you don't have to Think about how to do materials how to do texture every time you adjust one way to do it and then adapt So here again, you have many ways to open to to make this The first thing is about shader the famous about shader You are making one shader doing everything Yes What is nice is that you are doing one shader And then you have just said Click on reflection if you want to have reflection Transparency if you have some transparency and so on the main problem is that Each renderer will have different results and When you export your scene You will not export the material If you are using fbx Or think like that or an ambic you will not export your shader setting So if you have 1000 material, no, I know it's a lot less than 10 materials You will have to set one by one by hand on the upper shader on each renderer This object is blue this object is red and so on So you have one shader less shader programming less shader developing but more work But indeed, it's my personal point of view Okay, indeed In many production or in studios the best way to solve a problem is to give it to next step So I solve the shading problem you solve the material problem Okay, I am shadow writing. I'm not doing texture on materials. So it's your problem now I made a nice server shader. Okay, it's a Everybody who work in big studio know that and that's why people in compositing have a lot of things to do because they are the last one Okay, the second way to work is to have one shader per object or per material you want With inside this shader you will have all the setting You can even have no interface So you are doing the shading and the materials and the texture Then you have a closed shader and you just have to load it In your renderer So there is no possibility of error No people we make a strange setting And you will do the job just one once And you will have no UI problem Like you could have between visual and cycle Because you have no UI What could be the problem? A lot of shading development. You have to make all the job. It's not funny and Just in time compilation You know that osl is just in time compilation. Yes, surely If you have one thousand or ten thousand shader It can start to be slow and you can have a three five minutes of just in time compilation for ten thousand shader But indeed when you have ten thousand shader in one scene Surely you are not Well, but one or two minutes more It's a very very big scene. So if you have six hour rendering having two minutes more, it's not a big problem One very big default also is here Possibility to cheat You close every possibility to cheat if your blue is too blue because of color profile before because of anything you can change it So me i'm using a mix of the two some object are overshading Some others are very very specific setting So let's start with a nice example of what we can do Yes, so it's a scene for my dst render Which is a closed website now, so you will not find it And this scene is 100 o sl even the light the lighter osl There is no light in this scene just luminous object So it's a blender render a cycle render as you can see it's not so bad. It's really really good and So it's a reference there is one problem, but it's my export that didn't work well I lose the smoothing group here. So there is black things. So I have to correct it And it works. So what about apple seed for apple seed? I do just same Here's the result This time I didn't understand yet the camping problem So there is far fly a little bit everywhere um As you can see the color profile is not the same the camera is not the same. It's my mistake. I didn't saw that film size in apple seed is 33 36 or 34 something like that and not 36 so I have a smaller field of view and uh Otherwise it's working very well As both are in backman micro facet backman. We have the same specular We have the same shading. It's a little bit darker. There is no compositing first We're wondering in compositing you can have just the same rendering and the same contrast and color and virae Uh, virae is really close in lighting to blender really really close Uh, so I adapt and it's fong. So fong is not backman and we have a perfectly round specular. I really don't like it Indeed it works very well and all shading Even color checker and are just the same between under And if I do something and I need a part of one shader one uh render another It works very well so This uh, this scene is a good start and you can say yes, it's really really possible to work with many renderers the second scene I made it's a kind of nightmare for every renderer And it's really extreme and so here it is. Yeah Uh, the sun coming in near full global illumination scene Uh, though it's a nightmare because there's a lot a lot of computation needed And so with blender and cycles, this render time was about 25 25 hours And I have a lot of little far flies Far flies come from one thing. There is near 1000 lumino subject And it's very very difficult for a near renderer to find the 1000 lumino subject And make the correct lighting And sometimes you oh, I found one lumino subject. That's nice But otherwise there is a sun so much bigger and so So it makes a lot of problem Uh, the biggest surprise was apple seed with exactly the same shader. It's common shader Uh, apple seed is about 20 minutes And yeah What happened to apple seed? I don't know. I have some normal problem as you can see there is some black parts So I have some normal problem I have some final problem due to normal problem because you have very mirror things in a glass So it's due to my normal problem. I'm every time outside of glass and not inside Uh, but indeed, uh, I don't know how they did that It's uh Just I click render because I was falling and when I came back it was perfect. Wow. What happened? So So, um, now with the Vray, okay Who like Vray here? Nobody likes Vray. Yeah, you will be very decide Vray Vray What happened to Vray? Vray is with 3ds max and color profile in 3ds max is just nightmare And it doesn't work at all and So you can see the nice color of Vray And uh, that's not the only problem There is this white line What is this white line? I don't know Render error Now as you can see in apple seed, I correct my clamping problem. There is no more flashlight But in Vray, I try everything I can and there is this rendering error Uh, I don't know why I don't know why uh, luminous object are not so luminous Why not? And but this is luminous part. I don't I didn't want and uh On this object also, just like I put neon or inverted or neon occlusion on object. I don't know what happened So So I decided to get rid of problem of Color profile problem and to try Vray for Maya So it's the same renderer Yeah, and uh, yes color profile makes a very very big difference And uh, with a nice color profile And with a correct color profile, uh, indeed I lose all my luminous object So nobody's perfect you can have luminous object in Vray with bugs And you can have no luminous object with Vray with Maya Uh But indeed the result is nice because we have a common framework We have a same shading if I want to put here in middle An object I made with cycles with blender and render it with blender because of smoke and so on and reflection I can render everything with the set with apple seed Or with Vray and render just the character with the smoke In uh in cycle and make a nice compositing because it's the same lighting and it's the same thing So we can mix a lot of a lot of renderer like that In gravities they use Arnold they use Mantra and they use Clarisse on the same picture and And so now with osl it's possible to do this atom atom only atom and So it's a it's very uh Nice picture. I think that it opened many doors And just if you find one cheddar one renderer doing really things you need At the correct render time you can mix the renderer using osl Unfortunately it's not osl everywhere So now we are near the end. I think I don't know if I was too fast or too slow There is no clock. Yeah Uh Yes, it's time to use your cell phone camera So some useful links include one uh for the For the 3d scene I used but it's done doesn't work anymore Uh, I used some shader from uh From not in this right in this page Uh spectral studio Spectral pixels spectral studio is not available anymore. So it's just a button download soon For six months. So it's really far soon But I hope it will come back because it's the only one with osl on gpu And it's very very interesting indeed. I didn't show results with spectral studio just because each time I Eat render in my computer I come back on a nice bios boot So I didn't try anymore after two or three reboot. Okay. It's okay. I will not use spectral studio Uh, so I think I don't know why in fact, maybe it's my window version. I don't know why Uh What is interesting is the osl specification If you want to work with osl, it's the first file to download the documentation There is everything in it I tell you a lot So in the end, I want to thank some people who are greats who really helped me on this course He is really nice man and doing really really nice job and reopened to any discussion Uh, of course all cycle team and blender, of course But uh, okay too many thanks in two in three days. It's not so good Uh Michel Anders my Michael Anders, maybe I make a mistake Who is writing a nice book about learning osl and uh, I use some of this shader And of course osl community people who helped me people who I didn't write it as a Oh, don't remember his name who write osl for corona So there is no corona here because it's just a small part of osl now People and so on The main programmer of apple seed and so on We had a lot of mail But how it works and the the clamping problem and so on And so if you have question Yeah Yeah, I'm not familiar with um That my much shading stuff So could you tell me what is the performance of say osl versus glsl? Would you use osl for a game engine for example? osl is not for real time. It's really not optimized for real time and osl give Something to eat for the renderer glsl is computing a pixel So it's perfect for real time what you want is a fast result For osl it's really to make Shading for production To take care about what the renderer can do A glsl is to go as fast as possible And so it's up to you to optimize Okay, thank you and uh also Uh glsl it's uh mid-level. It's not low level language, but it's mid-level You have to take care about a lot of things about how your graphic card is working and so on If you want to make really pure glsl Osl is very very high level. It's stratospheric level of language. It's just a shading for them is sometimes Any other question Yes, hello If I'm a new To renderers and I want to use one Yeah Why should I what's the benefit of understanding osl to to pick to have a To choose between every every all of them. Why can I stay to one? So there is different case we need shading If you are doing a very short project like for tv and It's uh four o'clock and you need the animation at two o'clock. It's very specific from tv for tv You will not have time to do shading If you are on longer project And you need a uniformity between your object you need all objects to have the same look And do not write every time a new shader or to make a new material every time You need also have a common easier way for example if you are doing paper paper characters You will write a specific paper shader. So with Interesting feature like is a grid paper. It's paper with hall And so on very very specific And so when you use it you are thinking about paper and not about okay. I need 30 percent diffusion I need one percent of reflection and so This is in the shader you think about it just once and after you just have to use it so You lose a little bit time to make specific shading But after in the production if you have a lot of object You have you gain a lot of time Because you are just working in the way artists want to work You have shading for artists Also You can have Very specific look Sometimes in the renderer you could maybe have this look with Not three with 100 node, but And I did it With 100 node. I made some render tree in soft image was about 200 nodes The same shader I released it for blender two years ago on osl is about 20 lines So Nodes are nice to make fast things but not complex things When you are writing shader if you want to multiply plus and take care about clamping and so on It's just one line. You don't have to make one node after one node after one node For example, if you want to make a sss subsurface scattering Mostly you don't know what color to do to make on subsurface scattering. It's the main problem. Everybody knows this problem Okay, I have a Blue candle, but what is the color of subsurface scattering? And in fact there is a question to find it if you diffuse the blue So there is not the blue inside and subsurface scattering is not the blue. So red and green That's why when you have a blue candle and you write it you have a kind of a range color Yeah, nobody tries this. Okay And you can make this little thing in osl really fast and so if you have I said Everybody saw Sarkar punch with this nice shot with 10 000 of candle all in 3d But how to make all candle different how to make all candle physically correct By hand you will spend your life to do it if you write a shader Doing a candle with a noise Changing each candle you just take all candle assigns its shader you spend one day to write it But you save 10 000 day Assigning materials So that's a main interest in shading Yeah, yes Um, I have a small question about a gpu and the fact that it doesn't uh run on gpu and will it Be possible to run it on gpu later and if I I don't think so and How does the studio think about osl? About the fact that it doesn't run on gpu You will gain time On the pipeline doing this using osl, but maybe lose on the speed of rendering What is the future of osl on this topic? Oh, there's a lot of questions in one question So at first the gpu larry larry greets is aware of this problem So he's working on it Maybe he said in 1.7, so So not 1.6, but maybe in one osl 1.7 it will be gpu osl is using llvm Which is a pre-compire And llvm works a little bit wired with gpu Some people say yes we can other no, so I don't know what is the truth about that And so actually there is no gpu for osl just now Maybe in future indeed spectral studio made their own version of osl with gpu Okay, it crashed my computer, but they did it The problem after the Problem in production Not a lot of production rely on gpu render Gpu render has a lot of problem mainly because there is a new graphic card every two months And this graphic card when you launch a render on it doesn't give the same result So if you have a long production with six months of computation Uh, it's not so good a second uh, second things Intel it's not so bad Really not so bad And if you are doing correct way of programming your shader even in osl We show one example gave by pixar on osl shading Just by correct programming of the osl shader using uh, intel recommendation The osl shader was about 15 times faster So faster than gpu wow It was more i say uh It's an advantage to use osl. Maybe it will kill the gpu and the gpu usage gpu is useful Really gpu is useful. I think that when you are doing pre-visualization, it's really really useful But when you are planning on two hours of rendering per frame gpu is not a so big advantage So because there is memory limitation you can have a 64 gigabyte of memory on gpu and so on So it's a little bit Now who is using osl and who is not using osl and osl is in development step Two years ago when cycle decided to choose osl. It was a very very big bet Will it works? Will people know will like it? And it was a very very good choice at the end uh because rsl is near that The previously the renderman trading language is not enough powerful As I write it Uh rsl is not enough powerful. There is problem with not connectivity There is program or if you want to take care about what your renderer can do If you have a strong past racing rsl is not so good So there is a need of a new shading language taking advantage of advanced rendering And osl is here for this So more and more studio are using osl, but it's on the growing step It's growing now. We know that if you are going to see the next pixel film next year It's 100 percent osl so It's finished. Okay, so it's finished Thank you Are you That's a problem Oh Could not set the configuration Could not set the configuration Yeah This is a signature of a... ...crazy guy. Water? No?