How Are Games Rendering Fur?
Video Title: How Are Games Rendering Fur?
This video has been sponsored by surf shark hello everyone if you’ve ever thought about hair for even a moment you could easily conclude that it’s probably hard to render when even movies are struggling to get good hair CGI that means it must be even harder for us to
Render hair in video games so what’s the big deal what makes hair so difficult to model and how are video games solving this problem hair and other similar materials are kind of unique in that conceptually they get very complicated very quickly I feel like most topics are only truly
Complex in one or two aspects and a lot of worries can be easily discarded or simplified for instance the smoke rendering for my Counter-Strike video requires an understanding of complex light physics but since it’s all done as a post-processing effect I don’t have to worry about triangle count or other mesh
Optimization issues because the smoke has no mesh in my video about rendering millions of grass blades I had to understand complex GPU coing algorithms in order to reduce the triangle count and geometric burden on the GPU as much as possible but I didn’t need to do much
More to make it look like grass so I didn’t have to worry about complex lighting or physics this is what makes hair so problematic it’s geometrically complex which is the first thing you would notice about it probably how could you even begin to efficiently render a full head of human hair the average
Person has 80 to 120,000 strands of hair on their head so how would you model that each strand has to be composed of multiple segments because otherwise it geometrically can’t curve so you’re looking at a few hundred, triangles dedicated to just the hair of one person
This would maybe be okay for a game with a protagonist that has a beautiful head of hair but gets eite into a universe where everyone is bald and is trying to kill them for having hair and it plays like vampire survivors unfortunately your game probably has many people with
Hair that can be on screen at the same time and the cost of that High Fidelity Hair hair is going to get very expensive very quickly we are also ignoring the hairy needs of nonhumans for instance a cat has around a 130,000 strands of hair per square in of their body which means
They require the expense of one full human head of hair per square inch but let’s imagine the scenario where you are able to afford this insane geometric overhead of realistic hair after all we could render millions of grass blades so we could reasonably afford fancy hair if we really wanted it unfortunately the
Trials and tribulation do not stop at the geometric level like with the grass in fact we are met with a much more terrifying opponent hair lighting models hair is transparent which immediately raises tons of red flags because now you have to do subsurface scattering since rays will transmit light through the
Hair Illuminating the volume underneath this means we have to do similar algorithms as the ones demonstrated in the Smoke video which is really bad because hair is composed of hundreds of thousands of strands so in order to get accurate simulated interactions we you would have to do at least tens of
Thousands of transmissive operations to get a convincing output for just one pixel This is complicated even further by the nature of hair itself smoke is easy because the transmission of light is consistent but hair is not consistent it changes Behavior depending on how old or young it is meaning that it is
Spatially different as you go along the strand of hair This is complicated further by Common outside influences on hair that radically change appearance such as moisture shampoos grease or bleach this is then complic ated even further when you consider everyone’s hair is radically different and the way it interacts with those outside
Influences is different too so we’re already looking at a lighting model that needs an insane amount of parameters to encapsulate the full extent of possible human hair types and the way those hair types interact with common natural phenomena this is made even worse because we as humans are much more
Familiar with hair and what it looks like so we are able to spot a regularities much easier and identify when the hair just doesn’t look right after all hair is a major contri contributing factor to The Uncanny Valley and a sort of perceptual bottleneck when it comes to making games
Look more realistic aside from the lighting problems there are also inherent Hardware problems with rendering hair because hair is often thinner than a pixel on your monitor how can you render something that is smaller than a pixel but don’t worry let’s imagine a scenario where gpus can handle infinite triangles and Ray tracing
Hardware has advanced 1,000 years to be able to handle hair light interactions in real time and monitors they now have infinite resolution somehow and games can also somehow render infinite resolution in real time unfortunately we still have one more major problem hair has to move otherwise it’s not very
Useful since hair moves that means hundreds of thousands of objects now need to interact with each other at real-time rates and this is not simple interaction it’s actually insanely complicated physics because the way hair moves is also dependent on the hair type and other contributing forces such as static electricity random clumping of
Hair grease and other General volumetric physical phenomena this all comes together to inform us that realtime High Fidelity Hair implies a great geometry burden light interactions that are as complicated as it gets and physics Tech you will only ever see in science fiction and remember that this is all
For just one instance of hair in the scene we would need to do this for every character with hair that is visible also don’t forget that for a cat it is 200x the cost of whatever it is for a human each one of these categories is complex
Enough to have its own hour-long video but today we’ll be looking at a tried andrue solution to the geometry dilemma a method games have been using for decades to fake fur grass and other similar materials it’s way simpler than you think and it’s still being used in games today but first something entirely
Different this video has been sponsored by surf shark surf shark is a popular VPN service dedicated to keeping your internet browsing activities private and your data secure a VPN works by acting as a middleman between you and your desired destination keeping you private from the death destination as they
Believe they are talking to the VPN this provides a number of benefits such as preventing your ISP from throttling your internet connection as well as obscuring your personal data such as where you’re browsing from in fact you can make use of Sur sharks servers around the world to pretend like you’re using the
Internet from another country this allows you to get around Geor restrictions enabling you to watch movies and shows that are available in other countries but not your own surf shark does everything you’ve heard about vpns before and more offering services for data breach alerts antivirus and a
Search engine that keeps you private but the best part about surf shark is their 30-day money back guarantee try out surf shark today risk-free and get three extra months on your subscription when you use promo code Ace Rolla or click the link in the description thank you so
Much to Surf shark for sponsoring this video now let’s learn about shell texturing question for a flat field of grass would you rather render 20 million triangles or 32 triangles surely we can’t visualize millions of grass blades with only a few squares or can we we start by rendering a single Quad if we want to represent a dense grass field on this flat plane then we should think of it like the ground that Grass Grows out of to visualize this as texture data let’s imagine that a green pixel means grass is growing out of that
Spot and a black pixel means no grass is present grass probably doesn’t have much of a visible pattern to how it grows so we can model it easily with white noise which is just random numbers while the CPU can make use of complex State machines to produce uniformly
Distributed random numbers we don’t have that sort of privilege on the GPU instead we make use of hashing functions to take a seed number and Shuffle it around so much that it results in a number that feels random ideally seeds that are close in value will have wildly different outputs and overall the
Outputs should be as uniform as possible because otherwise it won’t feel very random if there’s a general Trend to the RNG hashing functions range from simple to complex you can find a bunch of them on Shader toy so whichever one looks good to you will probably work just fine
For General random number needs with a hashing function in hand we compute a seed from the UV coordinates remember that for a square the UV coordinates range from 0 to 1 from the top left to the bottom right pushing the seed through the hashing function gives us a
Random number between 0 and 1 and if the value is greater than zero let’s interpret that as the presence of a blade of grass back in unity we see that our plane is entirely green at first you might think every number was greater than zero but no our plane is
Technically composed of one really big blade of grass because the square only has one seed value possible from the UVS in order to get more Blades of grass we multiply the UVS by a density value which will be the width and height of the field for example a density of 100
Means 100x 100 Blades of grass with a higher density we see a few black pixels but obviously the majority of values are greater than zero so we end up with a mostly green square but this makes sense because this Square represents the ground and where all the grass is
Growing out of so we draw another square but this one is going to be a little bit above the ground since the UV coordinates of this Square are the same as the initial Square the random numbers are going to be exactly the same but now when we do our grass presence check we
Compare the random number to our new Square’s height instead of zero since this square is a bit taller more pixels are black indicating that the grass in that spot was not tall enough but the majority of the square is still green so we should draw a third square and repeat
This process again with the new height and then we should repeat the process again until we have some arbitrary number of squares like 16 for example at this point there are barely any green pixels on the top layer indicating that most of the grass isn’t freakishly tall
But now the most pressing matter is that these empty pixels are blocking our view we can’t see our Grass at all it turns out we can get rid of pixels we don’t want by just telling all the pixel Shader to discard its work when certain conditions are met for example if
There’s no grass then discard the work this gets rid of those pixels but now we see that it’s a formless green blob to get some easy lighting we can multiply the color of the grass by the height of the square which gives the impression that less light is reaching the depths
Of the grass with our low IQ lighting we finally see the fruits of our labor 16 squares that stack on top of each other to create the illusion of a cohesive volume of Blades of grass since it’s entirely driven by texture data we can
Make the f as large as we want and have no performance concerns since it’s not real geometry like with my higher Fidelity grass but we still get the same result of a visually dense field for a fraction of the cost this technique of visualizing complex volumes with simpler geometric slices is called shell
Texturing and has been used in games for many years the most iconic example is perhaps Viva Pata which used shell texturing for their entire style okay I promis this was not all aoy to get you to watch a fifth video about grass but grass in her are pretty similar if you
Think about it so let’s convert our grass field into something that looks a bit more like hair now when I say hair I specifically mean fur because in the current day we can actually more than afford decent geometry for good-looking hair on people but for Animals it’s a
Different story when it comes to Shell texturing fur is probably the number one use case and you’ve definitely seen it many times over in lots of games the most popular example probably being C from Dark Souls we can translate our shell textured grass from a plane to any
Arbitrary mesh by extruding the shell out from the normal of the base vertex essentially for something like a sphere we just draw a bunch of spheres on top of each other and then in the vertex Shader extrude the shells outwards from the normals based on our desired
Distance this is all it takes to finish the effect we now effectively have a green furry ball that we can change to another color to look more like hair the sheer density of the strands and visual noise gives an illusion of complexity when in reality the mesh is simple
Obviously hair isn’t very square like this so let’s try and make it look more like thin strands it’s easier to visualize differences on the flat plane so let’s go back to grass for a moment the first thing we’d like to do is have longer blades this is as easy as
Increasing the distance that the shells span across but it immediately reveals a critical flaw of shell texturing if we increase this distance too much then it becomes very obvious that it’s just a bunch of quads and not actual Blades of grass we have a few options here we
Could simply not increase the distance and live with the length we’ve got which is what a Pata does we could increase the distance and call it the style of our game and pretend it’s intentional which is what Dark Souls does or we could just add more shelves to fill in
The new gaps it’s 2023 and not 2006 so we can afford a few more shelves than just 16 with 32 shells we can get longer Blades of grass for essentially the same price and we can take it to the extreme with something like 256 shells which makes it look entirely solid at this
Number of shells we do have several performance concerns but we’ll talk about that later the important part is that we can have much longer Blades of grass now without any obvious discontinuities but it still looks like something out of cube world to get something more strand-like we take the
Fractional part of our multiplied UV coordinates to operate in the local space that our grass blade occupies the origin of this space is in the bottom right which is kind of awkward so we translate it to the center and we can now identify how far away a pixel of the
Grass blade is horizontally from its local Center by calculating the magnitude of the trans ated local position now all we have to do is check if this distance is greater than our desired thickness and if it is we discard the pixel giving a cylindrical grass instead of cuboid grass ideally we
Want the thickness to taper off as height increases so we can combine our discard checks into one by multiplying our thickness with the grass height minus the Shell’s height different thicknesses have very different appearances but now when we swap back to the sphere the tapered strands of hair
Look much more convincing than the rectangular hair from earlier we can finish up the lighting by applying some shading to the whole body with the classic lambers and diffuse as described in my video on water this is a pretty harsh lighting model without any ambient light so I tried out valves half Lambert
Which is a non-physically based model that makes use of the full range of the dot product for shading instead of the clamped dot product which we multiply by5 and add .5 to translate the range from negative – 1 to1 to 0 to 1 the half Lambert breaks the laws of physics
Because it doesn’t follow Lambert’s cosign law but in my opinion it looks more pleasant here and if we aren’t going to have some crazy realistic looking hair we should do what looks good instead of what is technically correct I also like to clamp the dot product in the half Lambert resulting in
Formless midtone Shadows especially when we remove the fake ambient occlusion on our shells to make the sphere look like a sort of stylized Dand Lion at this point we have really basic solutions to the geometry problem and the lighting problem of hair but remember that hair
Also moves around so let’s look at a really basic solution to the physics problem let me preface this by telling you UPF front I’m not a physics expert nor have I done much physics programming so this information I’m about to give you is complete that I put together without doing much reading on
The subject mainly because there isn’t much reading on the subject available we want to do our physics after we have extruded our shells in the vertex Shader currently our hair sticks straight out and doesn’t droop at all in reality gravity should be pulling these long strands downward a more sophisticated
Simulation might treat the shells as discret segments of Springs and apply related physics while keeping track of velocity and acceleration but we’re not very smart around here so let’s just Define a default directional Vector that the hair will Point towards while at rest to represent the pole of gravity
This default Vector will Point downwards all we need to do now is add this directional Vector to our vertex position multiplied by the strength of the displacement while this is working just fine it’s not what we want we want the displacement to only affect the tips
Of the hair which we can do by multiplying the displacement by the normalized height of our shells when the height is zero at the base of the hair the displacement is canceled out but towards the tip of the hair the height is one and we get a full displacement
Our hair now droops instead of fully displaces which is great unfortunately if we move the ball around it doesn’t respond to the movement ideally when we move left the hair follows behind pointing to the right and the opposite for the other directions only the CPU knows what buttons we are pressing which
Means we need to have the CPU update our displacement Vector each frame but a roller didn’t you say that we should avoid moving data between the CPU and GPU at all costs I certainly have said that a lot and it’s still true but in reality some amount of data is moved
From the CPU to the GPU every frame to update variables that must be updated such as the current frame time the camera data and any other variables that change from frame to frame what we want to avoid is mass data transfer and that includes updating Shader variables we
Only want to update what we absolutely have to but updating a single directional Vector is not going to break the bank on the CPU whichever dire we are moving we set our hair displacement Vector to the opposite direction and now our hair responds to our movement obviously this looks ridiculous we want
The hair to transition between these directions instead of instantly snapping to fix this we want our directional Vector to be defined in the larger scope so that it maintains State over time then we subtract the direction we are moving from our Vector each frame and normalize it before passing it into the
Shader this way the direction the hair points changes over time instead of instantly because it takes time for our subtractions to result in the complete opposite direction this finishes our hair physics although you’d be hard pressed to call this physics it’s more like rudimentary State blending but it
Kind of gets the job done with minimal resources also this finishes our hair in general with shell texturing as a solution to the geometry problem very simple non-photorealistic lighting as a solution to the lighting problem and the worst physics you have ever seen as a solution to the physics problem we have
Created what’s actually an incredibly versatile piece piece of tech that games are still using today just telling you it’s versatile is pretty boring though so let’s take a closer look at some examples since shell texturing creates the illusion of dense geometry from simple geometry it’s ideal for materials
Like hair fur grass rugs Moss hay or maybe even something low scope like the bristles on a toothbrush I mentioned earlier that Viva Pata uses this technique for the fur on their animals which gives the iconic pinata look since the strands are rectangular and look like paper strips they also use shell
Texturing for the Short Grass which honestly looks more like a rug than grass but the intent is clear Viva Pinata is from 2006 though so let’s look at a more modern example with genin impact regardless of your opinion on the game you have to admit genin impact is filled with beautiful environment art
And also serves as a great reference for how simple tried andrue techniques still have their place in the modern era like Parallax mapping billboarding and even shell texturing genin impact makes use of shell texture string for moss on trees and rocks as well as the straw
That makes up the roofs of some houses and whatever this is supposed to be there’s probably more examples in the game but it shows that this technique works for more than just hair and fur the last big example is CF from Dark Souls unfortunately CF is where this
Technique begins to fall apart while shell texturing is an amazing solution when it works it turns out there’s a lot of scenarios where it doesn’t work so let’s take a closer look at some of the big drawbacks of this Tech shell texturing is an illusion an attempt at
Tricking you into seeing more than there is because shell texturing involves what’s basically a layer cake of meshes if at any point we are allowed to look parallel to the layers then the illusion is instantly broken and the effect falls apart this is why Si looks so weird
These strange artifacts on the body are the gaps in the shells we can see a similar effect on our own shell textured sphere and when we look at the grass from the ground’s perspective then we can easily see through the entire grass field this is also why I know for
Certain that gench and impact is using shell texturing because we can see through the gaps in the Moss when we Jank the camera enough so how do we fix this critical visual bug we don’t take it from genin Impact and Dark Souls these aren’t amateur Productions if they
Didn’t fix it you don’t have to either the unfortunate reality is that there isn’t really a good way to fix it otherwise they would one tried and- true fix is known as fin meshes which are artist authored additions to models that extrude from the mesh in order to C the
Camera when shells are viewed at parallel angles but this wouldn’t actually fix C because the issue there is that the distance between the shells is too large fin meshes also wouldn’t work for gench and impacts Moss because where do you put the fin there’s no way
To cover all the discrepancies and at a point you’ll have so many thin meshes that you ended up with a high fidelity Moss mesh which is what we were trying to avoid in the first place the problem then isn’t shell texturing but the camera if the camera is locked in some
Regard such as not being a able to rotate then the player will never be able to break the illusion this sounds like a joke but it’s really not plenty of games have fixed camera angles or limit the camera in some way in fact this is how Viva Pinata gets away with
It as their camera does not go low enough to allow the player to break the visuals Viva Pinata makes use of the other best solution which is to keep it as simple as possible this grass here is so short that there isn’t any room to see between the layers at all you can
See here how much of a difference the distance between shells makes when it comes to grazing angles lastly Viva Pata and genin impact make use of the last example solution which is avoiding realistic lighting our shell textured ball looks way cooler and way more fluffy and stylized when we erase the
Occlusion between strands this also allows us to lower the shell count because now there won’t be any cascading gradients creating obvious discontinuities in the mesh this is how gench gets away with such few shell counts on their Moss you can only see the gaps when you really try hard to see
Them because other otherwise it’s a formless fluffy blob from any other point of view if you try to have realistic lighting without also tanking the cost of more shells you’ll get C from Dark Souls where the lighting betrays itself and only serves to accentuate the broken illusion speaking
Of more shells our technique has one more villain that few people ever actually talk about one important topic we’ve glossed over this whole time is how our Shader is even discarding pixels if each shell is its own object and can discard its own work then how does the
GP you know which pixel to draw normally when we tell the GPU to draw an object its vertex Shader is executed to finalize its position and then the object is rostered to the screen and then its fragment Shader is executed for every pixel that was rostered and then
Its distance from the camera is stored in the zbuffer when we next tell the GPU to draw an object its vertex Shader is executed and it is rostered to the screen but now before we execute the fragment Shader we test the distance from the camera with what is currently
In the Z buffer and if the object is behind what has already been drawn then we can discard the pixel and not waste any more work but if the object is in front of what has already been drawn then we execute the fragment Shader and overwrite the pixel that has already
Been filled in this is called overdraw and it’s clearly not good because we have effectively wasted computational power on what was already drawn there it would have been better to draw this object first and then the original object so we could have skipped that
Work um Mr R I don’t really see what the big deal is with overriding a few pixels monitors are composed of millions of pixels so it would probably be bad to do something a million times only to throw that all away to do it again another million times especially if that work
Involves really complex lighting calculations Unity is smart most of the time and knows this is bad and tries his best to draw objects front to back to reduce overdraw as much as possible sometimes it breaks and ruins your day as demonstrated by The Game Dev Guru in his performance analysis of the forest
Demonstrating the dangers of overdraw so what does this have to do with our shell texturing unfortunately our clipping means our shell texturing causes immense amount of overdraw the outer shell is drawn first and its pixels are clipped which will be most of the pixels since it’s the top layer since nothing got
Written to the zbuffer then the next Shell’s fragment Shader will be executed and so on and so forth until a pixel is filled in or every shell has been drawn this means a pixel could be checked once or twice but the worst case is every shell clips that pixel and executing 256
Fragment shaders for one pixel is pretty bad for my ball of 256 shells you can see that when it’s far from the camera the performance impact of overdraw is insignificant since such few pixels are rostered and being overwritten but when the ball covers the camera our frame time increases a considerable amount
Since most pixels are being rendered to potentially hundreds of times this is why it’s absolutely critical to make the most out of as few shells as possible such as this fluffy fur break down that makes use of High Fidelity textures to make just four shells look really good
But honestly if you’re not going too crazy on anything else you might be able to get away with decent shell counts on a lot of objects in the scene if you’re looking to innovate on something like Viva pinata’s style since memory bandwith on gpus has increased immensely
Since then now I know what you’re saying gee this has been a lot of words describing something that breaks the moment you look at it slightly wrong and also makes it worse for everyone when you try to fix its issues why are you waiting wasting my time with this shell
Texturing is an archaic Graphics technique that mimics complex geometry using simple shells bypassing the cost of rendering extremely high triangle counts it is ideal for imitating materials like fur carpet grass moss and other shrubs the list goes on you’ve seen this in games like Dark Souls genin
Impact Viva Pata and tons of others additionally it has extremely high mileage for its performance cost relative to Artistic potential shell texturing is not perfect though and suffers from from major aliasing artifacts when you look at it the wrong way because in reality it’s just an illusion the technique also scales
Poorly because of overdraw so you can’t use too many shells since you can’t use too many shells you’re limited to simpler lighting to avoid making the artifacts worse if you play a shell texturing strengths then you will reap the rewards and if you’re an indie developer looking to improve your
Stylized Graphics then it is absolutely something you should look into none of this matters compared to the most important Boon of shell texturing though it’s simp Simplicity shell texturing is very few lines of code it makes for an excellent beginner graphics project but the true educational value of shell
Texturing is where it can go it is like the first upgrade in the tech tree that leads to tons of other discoveries like maybe trying to programmatically generate bin meshes or improving the lighting model or making the physics not terrible or fixing the aliasing problem with some anti-aliasing or maybe you can
Use shell texturing to visualize generic volumetric functions or even something as simple as making it work with textured data instead of white noise the extensions are endless and it’s a genuine stepping stone that has real world industry applications unlike many other beginner projects my old Graphics coworker Rory’s main portfolio project
That got him the job involved shell texturing because of all this I’m excited to announce the ace Rolla furry challenge I want you to learn and Implement shell texturing then I want you to improve it in some regard you can do this in whatever environment you want
But for Unity I have fully annotated my shell texturing repo that explains every single line of code to make this hurdle as easy as possible when it comes to referencing it and implementing the effect yourself you can also join my Discord server for some discussion channels and some beginner resources if
You’re new to shaders post your Creations on Twitter with the # a Rola furry Challenge and tell us a bit about what you learned and what you improved your deadline is Sunday November 19th and we’ll go over submissions in next month’s video as an added incentive if
There are at least 100 submissions I will eat these really hot peppers on stream when the next video releases also given my content style you may think I might prefer a post submission but no I value sincere expression of self more than anything and would prefer you take the subject matter very seriously
First before trying to be funny as a last reminder this code is freely available and fully annotated in the description below but if you just want to play with a furry ball then a build is up over on my patreon where you can also vote on the next next video topic
Since I am choosing the topic for next month for the 100K subscriber special as usual a huge thank you to all of my current patrons without your support I wouldn’t be able to enlist viewers to do Mass amounts of Free Labor also I’m live right now over on Twitch if you have any
Questions about the video or the challenge come ask away anyways that’s all from me I hope you have a great rest of your day and I’ll see you next time don’t forget to check out surf shark and get 3 months free with your subscription
Video Keywords: Shell Programming
-
Sale!
Wireless WIFI Repeater Extender Amplifier Booster 300Mbps
$29.99$14.99 Add to cartWireless WIFI Repeater Extender Amplifier Booster 300Mbps
Categories: Electronics, Wi-Fi Router, Wireless Wi-Fi Extender Tags: 300Mbps, 802.11N, Amplifier, Booster, Extender, mobile wi-fi booster, Remote, WIFI, Wireless, Wireless WIFI, Wireless WIFI Repeater, Wireless WIFI Repeater Extender, Wireless WIFI Repeater Extender Amplifier, Wireless WIFI Repeater Extender Amplifier Booster, Wireless WIFI Repeater Extender Amplifier Booster 300Mbps$29.99$14.99 -
Sale!
Full RGB Light Design Gaming Headset Headphones with Mic
$24.99$14.99 Add to cartFull RGB Light Design Gaming Headset Headphones with Mic
Categories: Electronics, Gaming, Gaming Headsets Tags: Design, Full, Full RGB Light Design Gaming Headset, Full RGB Light Design Gaming Headset Headphones, Full RGB Light Design Gaming Headset Headphones with Mic, Gamer, Gaming, Gaming Headset Headphones, gaming headset wireless, Headphone, Headphones, Headset, Light, Mic, Package, RGB$24.99$14.99 -
Sale!
Wireless BlueTooth Multi-Device Keyboard Mouse Combo
$39.99$19.99 Add to cartWireless BlueTooth Multi-Device Keyboard Mouse Combo
Categories: Electronics, Gaming, Gaming Keyboards, Keyboard Mouse Combos Tags: Combo, Keyboard, keyboard mouse combos, Mouse, MultiDevice, Set, WireKeyboard Mouse Combo, Wireless, Wireless BlueTooth Keyboard Mouse Combo, Wireless BlueTooth Keyboard Mouse Combos, Wireless BlueTooth Multi-Device Keyboard Mouse Combo, Wireless BlueTooth Multi-Device Keyboard Mouse Combos$39.99$19.99 -
Sale!
High Back Leather Executive Adjustable Swivel Gaming Chair with Headrest and Lumbar
$199.99$139.99 Add to cartHigh Back Leather Executive Adjustable Swivel Gaming Chair with Headrest and Lumbar
Categories: Gaming, Gaming Chairs Tags: Adjustable, Chair, computer chairs, Desk, Executive, Gaming, Girl, Headrest, High, High Back Leather Executive Adjustable Swivel Gaming Chair, High Back Leather Executive Adjustable Swivel Gaming Chair with Headrest, High Back Leather Executive Adjustable Swivel Gaming Chair with Headrest and Lumbar, High Back Leather Executive Adjustable Swivel Gaming Chairs, Leather, Lumbar, Office, Racing, Swivel$199.99$139.99 -
Sale!
Professional LED Light Wired Gaming Headphones with Noise Cancelling Microphone
$29.99$19.99 Select optionsProfessional LED Light Wired Gaming Headphones with Noise Cancelling Microphone
SKU: N/A Categories: Electronics, Gaming, Gaming Headsets Tags: Cancelling, Gaming, Gaming Headphones with Noise Cancelling Microphone, gaming headset, Headphones, Headset, LED, Light, Mic, Microphone, Noise, Professional, Professional LED Light Wired Gaming Headphones, Professional LED Light Wired Gaming Headphones with Noise Cancelling Microphone, Wired, Wired Gaming Headphones, Wired Gaming Headphones with Noise Cancelling Microphone$29.99$19.99 -
Sale!
Gaming Desk with LED Lights USB Power Outlets and Charging Ports
$349.99$249.99 Select optionsGaming Desk with LED Lights USB Power Outlets and Charging Ports
SKU: N/A Categories: Computer Desk, Gaming, Gaming Desk Tags: and Charging Ports, Charging, Desk, Desks, Gaming, gaming desk with led lights, Gaming Desks with LED Lights, Home, LED, Lights, Monitor, Office, Outlets, Port, Power, Room, Stand, USB, USB Power Outlets, White, Workstation$349.99$249.99 -
Sale!
Wired Mixed Backlit Anti-Ghosting Gaming Keyboard
$99.99$79.99 Add to cartWired Mixed Backlit Anti-Ghosting Gaming Keyboard
Categories: Electronics, Gaming, Gaming Keyboards Tags: Antighosting, Backlit, Blue, brown, Gaming, Gaming Keyboard, gaming keyboards, gaming keyboards and mouse, Keyboard, Laptop, Switch, Wired, Wired Mixed Backlit Anti-Ghosting Gaming Keyboard, Wired Mixed Backlit Anti-Ghosting Gaming Keyboards, Wired Mixed Backlit Gaming Keyboard$99.99$79.99 -
Sale!
Wireless Bluetooth 5.3 ANC Noise Cancellation Hi-Res Over the Ear Headphones Headset
$119.99$59.99 Add to cartWireless Bluetooth 5.3 ANC Noise Cancellation Hi-Res Over the Ear Headphones Headset
Categories: Electronics, Gaming, Gaming Headsets Tags: 5.3 ANC Noise Cancellation Hi-Res Over the Ear Headphones Headset, ANC, Audio, Bluetooth, Cancellation, Ear, Earphone, gaming headset, Headphones, Headset, Hi-Res Over the Ear Headphones Headset, HiRes, Noise, Wireless, Wireless Bluetooth 5.3 ANC Noise Cancellation Hi-Res Headphones, Wireless Bluetooth 5.3 ANC Noise Cancellation Hi-Res Over the Ear Headphones Headset, Wireless Bluetooth 5.3 ANC Noise Cancellation Hi-Res Over the Ear Headphones Headsets$119.99$59.99 -
Sale!
Wired Sports Gaming Headset Earbuds with Microphone
$19.99$9.99 Select optionsWired Sports Gaming Headset Earbuds with Microphone
SKU: N/A Categories: Gaming, Gaming Headsets Tags: Accessories, Earbud, Earphone, Earphones, Gaming, gaming headset with microphone, Headphones, Headset, IOS, Microphone, Sports, Wired, Wired Sports Gaming Headset Earbuds, Wired Sports Gaming Headset Earbuds with Microphone, Wired Sports Headset Earbuds$19.99$9.99 -
Sale!
150W Universal Multi USB Fast Charger 16 Port MAX Charging Station
$49.99$29.99 Add to cart150W Universal Multi USB Fast Charger 16 Port MAX Charging Station
Categories: Charging Stations, Electronics Tags: 150W, 150W Charging Station, 150W Universal Multi USB Charging Station, 150W Universal Multi USB Fast Charger 16 Port MAX Charging Station, 150W Universal Multi USB Fast Charger 16 Port MAX Charging Stations, 150W Universal Multi USB MAX Charging Station, 16 Port MAX Charging Station, 3.5A, Charger, Charging, Fast, laptop charging stations, Max, Multi, Port, Stand, Station, Universal, USB$49.99$29.99
Get an exclusive @Surfshark deal! Enter promo code ACEROLA for an extra 3 months free at https://surfshark.deals/acerola #ad
Thanks for watching!!
Dude, inserting cat video parallel to ad is truly brilliant idea.
All the physics were missing was to account for momentum
marketing team: "just make Game l00k gud, how hard can it be?"
game developer:
Well, there went Simulation Theory.
I came here for Viva Pinata, stayed for the explanation I didn't fully understand 😅. Surely won't look the same way at any strand of grass or hair in games from now on.
hi Rory
Your explanations are so thorough and have just enough balance of the technical and non-technical to be interesting and educational even to those with no expertise. You’re an excellent teacher.
that is the only way to do a sponsored cut away
I just miss Viva Pinata so much 😢
this might be an extremely dumb question and I can probably guess the answer myself, but why can't you render the shells from bottom to top, so you only need to clip each stack of shells only once when the stack ends?
Someone make the shells wavey, and collide with eachother. Bet itd make the side profile better.
I kinda want to see how well a temporal neural network based solution would do
21:34 pbrt jumpscare
Is it possible to, instead of having extra geometry for the shells, do it all in parallax occlusion mapping? I mean, I see why that would be hard for a furry ball that has "physics", but for moss or grass, I think that would work fine. Or is parallax occlusion mapping an inferior technique from the outset, and those extra verts cost less than the more complex fragment shader?
OMG help… i am studying Physics and this is killing me
the cat in the ad was genius
this guy hairs
I saw viva piñata in the thumbnail and I instantly clicked 😯
i love this video but there is one thing i don't agree with unfortunately, Jerma is NOT an average person!
"We're not very smart around here"
Turning cubes into grass:
I thought you would mention stray, which also uses shell texturing for the main protagonist.
I was watching this video and just paused it to implement this in my custom render engine, you inspired me to do graphics and I love it thank u for being syou
This is amazing! I'm just learning about shader programming and finding your videos super interesting. Is there any chance this can be done in Shadertoy? I'm assuming it might be easier with Unity because you can control parameters in the engine?
Damn, I got furry baited into learning shader programming again. I should try it.
What I’ve learned so far is that in 3D game graphics hairy things are chia pets
I think OG shadow of the colossus also did shell fur
I never realized this, one great game I found out that uses it is fluffy fall and you can see it quite clearly
I doubt that real grass grows in sn uniform distribution beween 0 anf it's maximum height, especially if it's mowed it should have a much more concentrated distribution. Probably because of this the resulting lawn doesn't look very realistic.
why tf is no one talking about the fact that he puts more shirts on every shot hes in