 that's something so let's maybe get started welcome to this workshop and that first let me say thank you thank you for being here at the conference and of course at my presentation especially that we are in Amsterdam so this beautiful town has so many interesting things to offer but we here in this room know that the most exciting thing to do at this very moment is to talking about controlling texture coordinates and well if I wanted to talk about controlling them the standard way I would probably just walk you through the options that we have in the mapping note but we want to control texture coordinates like a boss that's why I will go beyond the mapping note I will share you such possibilities for example how we can distort the textures or how we can blur the textures which in fact should be just as easy as adding the blurring note but in cycles we it would be great it would be awesome if we had the blurring notes in cycles but we don't have ones so we have to use work arounds and I will be showing you those now here are the other possibilities such distortions are also possible and here is a little animation I created this just using two gradients textures and some clever ways of manipulating texture coordinates and let's now take a look at some more practical example this is the render and maybe there's nothing nothing special about it but I would like to tell you three things about it that may surprise at least some of you single material when we for example take a look at this floor here every single slot of it is a separate object and I used just a single material for all of them and the same applies to the chest here on the left where every single element of it is a separate object and just one material has been used for all of them and you see the variations you see that we don't have the repeating patterns every single element is unique so you may think that maybe I spent quite some time on UV unwrapping those objects which is not true because I didn't use any UV maps at all what about image textures what do you think how many image textures that I used to create this render and some of you probably already know that I didn't use any image textures so everything has been created using just procedural textures and using some some smart ways of manipulating the textures just a few words about myself my name is Bartek Skorupa I'm a blender foundation certified trainer and I publish this is my profile at Blender Network I publish video tutorials on my personal website as well as on Blender cookie so here are some examples from time to time I write some add-ons for Blender and I run a little post-production facility where we edit the visual effects and 3d stuff for TV commercials and I live not far away from here just a walking distance if I wanted to walk home from here I would exit this building turned right past just a few blocks on this crossroad I would turn right again and just a few more left and right turns I would walk through Germany enter Poland and head straight ahead to the capital of Poland Warsaw my hometown and it's a walking distance of 1200 kilometers ago according to Google Maps it would take me 241 hours to walk home I'm not a big fan of such long walks that's why I decided to take a plane instead to get here okay let's get down to business so what I am going to talk about I'm going to talk about manipulating controlling texture coordinates and a little outline I will go through some some theory I will explain some of the coordinate systems and the basic transformations then I will show you how we can create distortions and blurs and the practical example I will show you how I set up this wood material that I used in the renders in the render that I showed you at the beginning so let's get started just the basic what just the basics what we are talking about at the left we have the texture and on the right we have the object and we want this texture to give its colors to this object so we need a way to figure out which point of this texture should go to which point of this object and of course the most obvious thing to do would be to UV unwrap the object and we have the result here we can see some other examples of UV maps and the results on the right in order to be able to use those coordinates in order to be able to use the system in cycles materials we need to use the texture coordinate node and the UV output of it that we simply plug to the vector input of our texture and in this case we are using the image texture so even if we didn't plug anything to the vector input of it UV map would anyway be used this is the default but I have a habit of plugging something into the vector input anyway because other textures use by default the other coordinates so procedural textures by default use generated coordinates so we see how UV coordinates work I will explain two more systems the first one will be generated and the second one will be the object coordinate system let's start with the generated I have to go through this theory sorry such that we know that we are talking exactly the same language so we have the texture on the left we have the axis of course the horizontal line is the x-axis the vertical line is the y-axis the origin of our image texture is the lower left corner and here on the right we see the object and I have visualized the bounding box of the object because in generated coordinate system the bounding box is the basis of it so we see the bounding box we see the axis and how this texture would get mapped on to the object that has such bounding box here I have marked the corners of the texture a b c d and those will get mapped like this onto the bottom of the bounding box here we can see exactly the same bounding box but from a little bit different angle so when we are looking from this angle this mapping seems a little bit more logical this is how it get how it how this texture will get mapped onto the bottom of it and it will get extended all the way along the z-axis now when we begin to kind of reveal the object we see the results so this is how the generated coordinate system works this system has a little problem we are losing the proportions here is exactly the same texture applied to three different objects they have different dimensions different proportions and we see the stretching and when we don't want to have this stretching when we want to preserve the proportions we can use another system which is the object coordinate system so now let me explain how this one works okay again we have the texture on the left and the object on the right we know how the access works on in the texture space and remember that the origin of the image texture is the lower left corner and this origin will be mapped to the origin of the object the origin of object coordinate system is the origin of the object the access are exactly the same as in generated coordinate system the local access of the object but what is the most important thing is are the units so that are completely independent from the object shape from the bounding box from anything like that so the units are always one blender unit along each access so the total width of the texture will be mapped on to one blender unit along x-axis the total height of the image texture will be mapped to one blender unit along the y-axis so and it doesn't matter what the size what the dimensions of the objects are so here we are looking at some smaller object it's good to know that the scale of this object as well as the scale of the previous object that I showed is one so we are simply looking at the smaller mesh this is not that the object has been scaled down no it's a smaller mesh so let's imagine that we want to map this texture onto such object you see the units you see the object it will get mapped like this of course one texture is not enough to cover the whole object but the image textures simply repeat themselves to infinity and those this amount of textures is enough to cover the whole object let's now reveal the object and this is how it gets mapped onto this object using the object coordinate system and as you can see on this example we have different objects of different dimensions and we don't see any stretching this scale is preserved and so on but well this system is not perfect it also has some disadvantages disadvantages especially when we are working with image textures that are not styleable remember that the origin of the image texture is the lower left corner and this point marked with this white arrow on the left and this point will be mapped onto those points that are marked with the green circles on the right so when we are dealing with image textures that are not styleable we may encounter some issues so those are the points where the lower left corner of the image texture will be mapped but when we are working with procedural textures we don't have this problem you see that I have applied the noise texture onto those objects I have consistency in scale I don't have any distortion and for comparison let's see how it would look like when we used the generated coordinate system and we see the stretching we see the lost proportions that's why I in most cases when I am using the procedural textures I am using the object coordinate system and what I explained was just the starting points so we defined the coordinates but we of course can manipulate them to some extent and we can perform some basic transformations for this we can use the mapping node so here we we have a chance to change the location meaning we can shift the texture we can rotate the texture or the coordinates or we can scale them now let's take a look at the example of mapping the image texture onto the those objects using generated coordinate system and here in the mapping node I have set the Z rotation to 30 degrees and this is what happens this is the result the important thing when especially when we are talking about rotations or scaling is the pivot and as the pivot always the origin of the coordinate system is used so in case of generated coordinate system is the lower left most back most point so those points that are marked with those circles if those are circles are used as the pivots when we used the object coordinate system those points would be used in fact those points the origins of the objects of course in case of rotating around the z-axis it doesn't really matter but when we rotate along y-axis it matters this is the result and let's take a look at some other rotations here I have set 30 degrees on each of the axis and this is the result now the scaling let's say that I want to change the scale of the coordinates or of the texture and here I have used the x value of 3 now I am using the default option in the mapping node the point option which means that I am operating not on the texture but I am operating on the coordinates so the result that we are getting is somehow counterintuitive it's like reversed so I am increasing the scale but the scale of the texture gets smaller because I am increasing the scale of the coordinates if I want to have consistent results I should change this option from point to texture but I don't want to do it and later on you will see why now so this is the result I have increased the scale but the scale of the texture got smaller okay some other examples different values for location rotation scale some other values and now let's imagine bear with me just let's imagine that we don't have the mapping node at all but we would like to be able to perform all of those actions we would like to be able to shift rotate scale our textures or coordinates is it possible yes it is and in order to understand why it is possible and how it is possible it is good to look at the coordinates themselves at the moment we are looking at generated coordinates we are not looking at any texture that is applied to those objects using those coordinates but we are looking at the coordinates themselves so we see the colors and what do those colors mean here are the values of the x axis of the coordinates and those values are stored in the red channel and here we are looking at the y values and those are stored in the green channel and the z values are stored in blue channel so we simply combine those three channels together and we have the colors so we have the colors which means that we can manipulate them exactly the same as we would manipulate any other colors we can mix it with something we can add something to them we can multiply them but by something so let's say that we want to shift the texture shift the coordinates change the location here on the left you see the values that I wanted to use 0.5 something on x 1. something on y and minus something on z it's good to know that changing the location shifting the texture shifting the coordinates is nothing more than simply adding something to the coordinates which means that instead of using the mapping node we can use just a simple mix node with the add blends type and simply add those values to the coordinates so let's try to put those values into the second socket so well I didn't have any problem with putting the x value into the red channel y value into the green channel but now I am trying to put this negative value into the green channel so I simply type in minus 0.15 I hit enter BAM disaster I have 0 well it is simply let's try to do it again minus 0.15 enter BAM well it's impossible to enter negative values into the values of the color so I have to use the work arounds to be able to do it so for this I will use just a combined RGB node unfortunately here it is also impossible to input negative values that's why I can for example add the value nodes and plug them into each of the sockets and here I have recreated the behavior of the mapping node when I want to shift the texture shift the coordinates and I have the ability to enter any value I want to enter negative values into the colors into the vectors and thank you combine XYZ also doesn't allow to enter negative values vector but sometimes I would like to not to use art operation but for example multiply or anything else that's why is it a difference maybe maybe maybe but it's impossible to multiply one vector by the other at the moment using the okay please do thank you okay now let's imagine that we want to change the the scale so here are the settings that I want to use in the mapping node so I have set the scale to something different than the default of one and it is good to know that changing the scale is nothing more than multiplying so again exactly the same procedure mix node but this time with a multiply blend type and I simply put the values that I want and I have recreated the behavior of my mapping node when I want to change the scale now rotation is it possible to change rotation without the mapping node it is possible here I have the scenario I want to rotate the coordinates 65 degrees along around the z axis when I rotate around the z axis the z axis itself don't change doesn't change the only x and y axis changes I need some formula I need to know what would be the new x and y values and I found the formula so you see well we have to use a little bit of trigonometry some mathematical formula it doesn't matter okay let's forget it how it works just the mathematical formula and we all probably know that almost any mathematical formula can be recreated using the nodes so well we have to recreate this I have done this this is the node setup that does this well it doesn't look very nice so well but it's not a problem to drop it and I created three node groups one is responsible for rotating around the x one for y and one for z axis and that's it and I can use them but so just to sum up when we add something to the coordinates we are translating we are shifting the texture when we multiply we are scaling when we want to rotate just a little bit of trigonometry can do it for us but yeah that very important question what for we have the mapping node so why should we even think about recreating this stuff well simple answer let's take a look at two setups in the first setup we have the mapping node and in the second setup I have the mixed node with the outblend types and of course the first setup can do more because we can shift we can rotate we can scale the second setup the only thing that it is capable of doing is to shift the coordinates but the second setup has one huge advantage which is the socket the socket where we can pluck something so we can for example pluck some texture into the second socket which means that we can use one texture to drive coordinates of the second texture and that's this is cool because using this approach we can for example distort our texture and for this here I have created a simple setup I took the generated coordinates and I added the noise texture to it I added the noise texture to it and plucked the result into the vector input of my texture at the moment the factor of this add node that I used is set to zero which means that this setup does absolutely nothing but okay I will of course increase this factor so let's increase it to 0.15 and the texture the noise texture that I used used just the default settings of it and that's the result we have the distortion and probably some of you may be wondering what's this subtract thing what is this why didn't I simply plug the noise texture into the add node but I have done something to it well what I did was I subtracted 0.5 from every single channel from every value of the noise texture and why did I do it well this is what would happen if I didn't do it I simply muted this subtraction and you see that we have the shifting and why is it happening well when we analyze what are the values of our noise texture those are the values all of the values are something between 0 and 1 which means we are adding all of those values to the coordinates so we are shifting the coordinates and we are shifting them one direction some of the points will be shifted a little bit more because we are dealing with a noise some of the points will be shifted a little bit less but they will all go one direction now when I subtracted 0.5 from all of the values now I am dealing with the range of the values between minus 0.5 to plus 0.5 which means that some of the points this is the case some of the points will go one direction and some of the points will go the opposite direction so I don't have this additional shifting blur when we have the setup for this basic distortion blurriness is as simple as just changing the scale of our noise texture the default setting is 5 I have increased the scale to 1000 and that's the result that I have if I want to increase blurriness I simply increase the factor of my add node so here's the result and here even more blurriness so this is workaround and you see the quality of this blur this is not perfect but in many cases it works yeah I am okay so let's take a look at at the wood material that I used here in this render I wish I will show it to you basing on the floor so here is the scene the simplified version of it as I told you at the beginning every single slot of this floor is a separate object and I apply a single material to all of them and this material is as simple as you can see on the left just this nothing more well when we analyze wood we don't have any transparency translucency refraction we don't have to take care about this the only thing that this material is made of is just a simple standard mixture of the diffuse and glossy as the factor and this is a standard thing I think that almost everybody here in this room use this setup for almost everything so we are mixing diffuse with glossy and use Fresnel component to control this to control this mixture and this allows us to control it basing on the viewing angle so that's it but there are some things that are missing of course the diffuse color we need something to define the diffuse color and we would also like to have some bumpiness so we need something to be plugged into the color input of our diffuse color diffuse shader and something to be plugged into the normal inputs such that we can control our bumpiness and for this for bumpiness I will of course use the bump node so two things are missing the diffuse color and the height input of the bump node and for both of them I will use exactly the same thing which is the wood grain texture I will colorize this use this as the diffuse color and the raw version of it will be used as the bumpiness so as simple as simply shift a texture wood grain texture okay just kidding there's no wood grain texture I had to create the wood grain texture I created a group of notes that creates the wood grain texture and I use this for diffuse color and for the bumpiness let's take a look at this group this is how it looks like when we open this quite a few notes and I will explain how they work a little bit later let's at the moment take care about the shader itself so we have our wood grain texture it behaves almost exactly the same as any other texture it has several inputs the most important one is the vector input so this is where we plug the initial coordinates and it has some other inputs where we can control several parameters of our wood grain but let's forget about it at the moment and we have two outputs the grain pattern itself and the vector output this group creates the grain pattern but it also plays a little bit with the coordinates and I wanted to have the access to those changed coordinates because sometimes when I want to mix this one with something else using exactly the same coordinates is crucial so as simple as this and it is all based on procedural textures and for this as in most of the cases I am using the object coordinate system and probably you remember why I don't have any distortion and that's the setup so let's take a look at our scene once again and here on the right you see the whole floor on the left you see the single slot of this floor the dimensions of it is like six centimeters by two centimeters by 30 centimeters of course the scale is applied when we look at the texture on the single slot it looks like this and on the right you see the whole floor now let's take a look at another object how would this texture look like applied on the object of different dimensions one meter by half a meter by three meters this is how it would look like and here is the example okay we have the object of such dimensions two meters by two meters by three meters and we see that this texture is not perfect it's not infinite but come on are three trunks infinite no I tried to recreate the real world three trunks are also not infinite we simply have to keep it in mind when we are when we want to use this exact texture okay object coordinates and now the goal here is to randomize the pattern because well every single slot at this moment is exactly the same and probably this is not what we want so I would like to randomly shift the texture so I need the access to some random value and well I can use the input object info node and the last output of it reads random so I have the access to some random value but it would be good to understand what this random value is it is some value between 0 and 1 and this is the value that is generated per object so every object generates its own random value and here in the material we have the access to this value so when we take a look at those values the same material applied on several objects and you see variations so we have some randomness and we can use this randomness we can add this value to the coordinates but well because of the limitations that we have on the x-axis and y-axis we don't deal with infinite the texture I would like to add this random value only to the z-axis so okay mix RGB add blends type at the moment I am using the black color so it changes nothing black means 0 0 0 when I add 0 to something it changes nothing so let me okay use the combined x y z node and I will plug this one into the second socket this way I have the control over the individual axis I will leave the x and y-axis at 0 and up this random output to the z-axis and this is the result and we have the randomness now I would like to have a little bit more control over this so I would like to multiply it by something by some trials and errors I found out that the value of 300 works best so this is what I used so I have the coordinates I have the coordinates I have my wood grain texture and now the first output of it will be used to create the diffuse color and bumpiness so creating the diffuse color it will be just colorizing the grain pattern and mixing it with some other textures colorize for those additional textures I will of course use those changed coordinates that I talked about earlier so colorizing the grain pattern is as easy as simply passing it through the color ramp bam it's done okay now let's mix some more textures into it I decided to use two noise textures this is the result the parameters of all of them the amount of those textures this is this was just a matter of trials and errors I tried several combinations and I found that those ones work the best so I would like to use those ones and mix them with this colorized version of my wood grain pattern of course for them I need coordinates I will use those changed coordinates so those are the connections and this is how the first noise texture looks like and the factor that it generates the second noise texture and the factor that it generates and now I decided to pass the first noise texture through the color ramp simply to increase the contrast just a little bit and overlay this over the colorized version of my wood grain pattern so mix note with the overlay blends type and then so this is before this is after and then I decided to multiply it with this other noise texture so with this texture this is the result I found that it's a little bit too dark so I decided to add some values to this texture because before it is used as the multiplier and here the output of it is just a diffuse color so I have the diffuse color now the bump map as I said I will use just the raw version of this wood grain texture of course I passed it through the color ramp multiplied it by something of course it's just a result of some trials and errors and this goes into the height input of my bump note that goes into the normal inputs of the diffuse and glossy shader so this is the material in all of its glory so you see on the left the initial coordinates randomization and so on then the wood grain texture and how the diffuse color gets created how the bumpiness gets created and the mixture of the shaders so yeah here we can simply see it zoomed in and the mixture of the textures so who wants to know how I created the wood grain texture thank you so do I have time for this I think that I do so well I started with the object one meter by one meter by three meters and the thing that I did I simply applied a simple gradient texture to it but I changed the type of it from linear to spherical and this is what I came up with now as you maybe remember when nothing gets plugged into the vector input of procedural textures the generated coordinates are used which means that we are facing the problems with proportions and so on that's why I want to use the object coordinates so now I came up with something like this and I want to extend it all the way along the z-axis so for this I will multiply the coordinates by something and the values that I will use will be one one zero which means that I don't change the coordinates along x-axis and y-axis when I multiply something by one I change nothing but I have shrinked the scale of the coordinates along the z-axis to zero and we remember that we have kind of reversed result so when I set the scale to zero the scale of the coordinates the texture itself gets extended kind of to infinity so I have extended the texture all the way along the z-axis now the thing that I would like to do is to convert the gradient into the rings so for this I use just a math note and change the operation to modular and this is what happens when I use modular and as a second value I use 0.2 let me explain how this works in a human language so it's like okay what this operation does it takes the range of the values and simply starting from zero it goes all the way up until it reaches the second value in this case 0.2 when it reaches 0.2 it starts all over from zero until it reaches another 0.2 starts all over from zero and so on and so on that's why we converted the spherical gradient this way into into into the rings so when we decrease this value for example to zero point one we have denser rings and here we have even denser rings now operating on all those decimal values is not very convenient that's why I decided to plug something into the second input of this note and I decided to plug the math note with a divide operation it's easier to say one divided by five than saying a zero point zero zero something so and this gives me some visual representation of what I am doing when I plug this into the second input of this modular note this is what happens now I have one divided by five which means that I have five rings when I increase the slower value to eight I have eight rings and in this case I have 20 rings which is great but I have a problem that I am losing the brightness I am losing the brightness and in order to restore this brightness the only thing the easiest thing to do is to divide those values by the value that I used as the second input of the modular so this is the setup that restores the brightness and here's the setup so far in the middle we have this spherical gradient I have marked with it with the yellow color on the left we are manipulating the coordinates on the right we are playing with the values with the colors of this texture now let's try to use RGB curves that looks like look like this and let's plug them here so right after the gradient texture before this gradient gets modulated that this is what happens by using something like this I am playing with the density of the rings so you see that now we have huge density in the middle then the rings are less dense and get denser and denser the further we go from the middle so maybe it's time to increase the number of our rings let's set them to 50 this is the result and well we are seeing something interesting but it doesn't resemble wood at all we have to have some distortion everybody remembers how to distort the texture we have to add something and the best way would be to add the noise into the coordinates so those lines indicate where I should plug some more notes so here I am simply organizing the space a little bit better some reroute notes and so on so I am adding something to the coordinates I have set the factor to zero just not to see the result I simply want to prepare the setup and then I will be setting the values so I am adding the noise texture let's try the default settings of the noise texture that I will plug into the second input of this add node bum and now let's increase the factor all the way to one this is what happens whoa disaster so we have several problems well the first one is of course that everything goes one direction but we already know why because the values of the noise that we added are all between zero and one so well we can simply subtract 0.5 from every channel bam we plug this note here and the problem is gone now of course the influence of this is a little bit too strong so we can lower the factor I will cut it by half and that's the result and let's also play with a scale of the noise that we are adding let's decrease it from 5 to 0.2 and that's the result now this is the texture I am using the texture and I didn't specify the coordinates but I would like to use object coordinates for every textures that I am using here so let's connect object coordinates here and here's the result wow something that resembles wood but well we have taken care about the bigger distortions now let's take care about some smaller ones and for this I can simply duplicate the setup that I used here so okay duplicate in this add node the texture and so on and I will simply use the second texture of some different dimensions and I use the scale of 3 and decreased the factor a little bit so I have one distortion the second distortion and that's the result that I have so far okay we still have several issues and now the first one that I would like to address is the harsh edge where the pattern goes from black color all the way to white color and then immediately it changes back to black so I would like to have a little bit softer transition and for this I can just use the RGB curves node that I will plug after everything and then add a point move it up a little bit and change the type of this point from the default of auto handle to vector handle and then I can move it all the way up and almost all the way to the right and then grab the last point move it all the way down and that's the result I have the softer transition so this is before and this is after one problem is solved now well let's increase the number of our rings to 100 bam that's the result and of course this result is not interesting enough so I have to make some more textures into it and I will of course do it right here and again just some trials and errors noise textures those are perfect textures you can create anything from them so two more noise textures the first one with sat settings the second one with sat settings I of course want to use exactly the same coordinates that I used for my gradients texture so well that's the connection and overlay one noise texture over my gradient and overlay the second one over the result some different factors and that's the result that I have I also pass the second texture through some color ramps standard thing just playing with the values and see if I get what I want so that's the that's the word grain texture nothing more and well I simply grouped it I simply grouped it and this is how it looks like when on the left we are looking at our object from the top on the right we're looking at our object from the side and this is how it looks like on the object that has the dimensions one by one by three meters now this is how it looks like on the object that has the dimensions of the slot of our floor so well it's looking pretty nice so I have grouped all of those nodes and decided to extract some data such that I have the access to them from outside the group and here I have named and simply named them such that it means something to the normal human being and this is the material in all of its glory and that's the result just to sum up what were we talking about about which point of the texture should go to which point of the object nothing more we were talking just about this we know that we have several coordinate systems like UV generated object we know the basic the most important difference between generated system and the object system where in generated we are losing proportions in object system we don't lose proportions we know that we can manipulate our textures our coordinates by using the mapping node or the equivalents like add translate multiply for scale some trigonometry for rotation we know how to distort our texture we know how to blur the texture I have shown you how the module operation works which is pretty clever way of making more interesting patterns we know that we have the access to some random values and so we can randomize colors we can randomize coordinates we can randomize whatever and then when we use all of those techniques in a clever way using just a such simple mixture of diffuse and glossy shader is enough to create fantastic results so I hope that you find the techniques that I showed you useful and hope that you manage to remember at least one of our two tips and we'll be using them in your future works so that would be all and I am open to questions thank you I think it works I think it works yeah it's very so you understand okay ask the question I will repeat it it might be a little out of context but is there a way to use your method to add to normal maps sure of course I keep using this both of them into an ad node and that works yeah why not depends on what you want to achieve of course I understood the question do I combine normal maps also with something yes I do and when we use the term add I didn't understand this correctly as add the values together you know add the node okay combine normals with with something so I was talking about some more general maybe I could give you an example let's say I have a normal map that I baked out and I want to combine it with a bump map from a noise texture or something so you would node we don't write you would I think that you would but yeah or multiply one by the other hmm would it work do you think no it wouldn't it wouldn't yeah it will give some result but not exactly I'll just try thanks for the input on the picture there's in the middle a scratch which goes over three yes yes I didn't I didn't show I didn't show it how I created this because you know we don't have time for such detailed explanation but well how did I achieve this of course this is also done procedurally my goal here in this render was to use only procedural textures it was not okay create awesome render but created using just procedural textures so like and for this to achieve this effect that something goes across several objects I simply use another coordinates I didn't use the texture coordinate node but the geometry node and the position output of it when you use the position it uses the position the global position the position in the world so I used those coordinates to make those scratches and for those scratches I used just gradients passed through some color ramps and rotating them mixing together something like this a lot of playing and a lot of fun really yeah it's possible to apply this randomness to particle systems like you have an object and then it does it each particle have a random number assign also or I don't know I think I can but you know you have the output that says particle info okay thanks you have something like this so you have the access to some data of the particle but well I didn't use it so I don't know hey very good talk thank you I got tons out of it two questions one is can you explain just a little more what is the Fresnel node that was used right before the mixed shader well I must say that I don't know the science behind this but the in a human language it's like we are controlling something basing on the viewing angle so for example when you're mixing diffuse with glossy you want more glossiness on the faces that are away from the camera and you want less glossiness when you're looking straight ahead at the and this Fresnel okay maybe Sergey knows it better I don't know you know some mathematical formula that just manages this so but again in a human language I am basing something on the viewing angle and the second question is in this probably trivial but in the RGB node yeah curves you changed it to the vector handles and RGB curves yeah let me go back I don't have right now I don't have the I mean bum bum bum bum where is it oh I think it went from the curves to the straight lines I just I had never noticed that feature yeah it's like when you take when you just a few slides you have come on come on come on the whole presentation in that hey come on did I really make such money yeah I did you have this no no no okay okay forget it you have this little like I don't know how it's called in English there's something that yeah yeah yeah so so you have this symbol and you simply select the point and open this symbol and you have vector handle auto handle or something like this thank you hey thanks first and your example you're having the object info note to have the random value for every object yeah but having a Florida tile and you seem like 500 wooden tiles and having preference objects I think that really can get a problem with organizing your scene so having 500 options for just the floor and so on and I was wondering if there was a quick way of using other coordinates maybe to generate like let me tell you know this is just a demonstration of the possibilities let me tell you how I do it in real productions well I am using those techniques to generate the pattern yeah okay so I I can afford to create all of those objects and so on but then I kind of bake it all into the texture when when I'm happy with a pattern but I don't bake because come on so my baking is just placing the orthographical camera above the object and rendering it then I set the resolution and so on and and and then when I render it I use my render as the image texture yeah but so I am using this technique for creating those image textures I can you know talk to the clients yeah are they happy okay and maybe I can change something in the pattern blah blah blah so yeah okay thanks because the other thing is that of course when we use this for the final render I am using here I showed you that I am using several procedural textures some noise textures with huge scale and so on and just imagine how much time it takes to render it's like you know ages that's why okay I use this at the stage of creating the pattern and then bake bake it into into into the image texture and use the image texture okay one more question do you use do you ever use other coordinate systems apart from object generator and UV because there's a whole list in this yes I use reflection I use normals that's obvious normals for relighting for anything like that reflection sometimes I have once created the material the shadeless material that mimics the behavior of like let's say that you have the world with the angular map or or something like a equi rectangular map and I played with the coordinates such that I plucked the texture using the reflection with a mixture of something blah blah blah I don't exactly remember and plugged it into the emission shader so it's a shadeless material that render time is close to zero but you have the impression of like reflections from all over okay thanks yeah