I'm a Senior Technical Artist, specialized in Shaders, VFX, Procedural Content Generation and any cool visual stuff that has been working in the video game industry for several years.
I've always been passionate about teaching and I want to share my knowledge in form of tutorials using this channel. I cover basic and advanced stuff, always spiced with some extra stuff that usually is never explained in standard tutorials.
Edit: I had a multiply node instead of a max node in the final section of nodes in the outlines. After finishing the video, the outlines aren't working. I've triple checked all nodes and connections as well as the Laplacian filter, no idea what's wrong as viewing just the outlines shows them to be working despite not being visible with the whole shader. On further inspection they seem to be "visible" but transparent, no idea what's wrong as every single parameter and node are the same. Any ideas?
@@VisualTechArt I did to double-check, and it still didn't work. After returning to this one, I realised that I had a multiply node instead of a max node, and after swapping them it worked. It looks awesome, thank you for making this video, all your videos are super helpful, especially the lighting one.
Awesome, very in depth stuff! I just downloaded UE yesterday, so I'm jumping in the deep end a bit. I'm up to the 5:15 mark, but I'm having the jittering issue that others have mentioned. It looks like in 5.4 there's no longer an option to blend it before tonemapping. Is there any advice you could offer to get around that, or should I just use an earlier version of the engine?
@@VisualTechArt Great, thanks! I tried that and it looked different so I wasn't sure if that would mess with the math. But once I finished up everything it looked great (after turning off motion blur)! Awesome! Now experimenting with your implementation in the physical based cel shading video. I skipped to the part where you modify the outline, and was able to get the basic ones working using SceneDepth. Got the final one working by iteself, but just not sure how to combine it with the colour of the scene as it's not just multiplying the colours like the others. I should be able to figure that out after building the cel shader.
trying to replicate the material function but it seems i fail. It always remains black and thef inished shader is nowhere soft in the viewport... and the outline gumroad file also renders awful. Whats with the settings.
My mom has been telling me to learn how to code for years, I was sure that it was a waste of ti,e and energy, amd also that I would have to get a degree in computer science to be able to understand what I am doing. You some how proved my mom right and not make me mad in the process, LOL Thank you so much for holding my hand while navegating the most shallow (but still scary) waters of coding.
If it can comfort you, I studied at the academy of fine arts, all the programming stuff is self taught xD I think the most important thing is to find an area of application that drives your interest and will to learn, like for me it has been creative coding and generative design ages ago :) And yeah, the key is also to find someone that is able to explain things in a way that resonates with you personally, for me it was Daniel Shiffman with his books :)
Hi-Fi Rush was made in Unreal and they made a really interesting GDC talk about how they did it (it's quite recent). Would love to see tutorials based on that talk.
Am I crazy that I see a weird big line that follows the camera? it's at a somewhat 'far' enough distance to look like a shadow from something but its there all the time
@@VisualTechArt Do you genuinely not get a thick line in the horizon? is there maybe a setting to make the horizon view distance longer? Seems im not the only one that got it, no idea?
I'm noticing some shadows glitching when I put the shader together. It's like the shadows are rotated on alternating polys. I think my post keeps getting removed because I had a link to the picture, DM for it. I'm not sure if it's a DX11 issue but DX12 doesn't help.
@@alex-qn5xp I didn't use hardware raytracing. That helped a lot. I had tried it with and without lumen and still had the issue FWIW. Also, changing a few settings on the skylight seemed to help IMO. Disable real time capture, reduce intensity scale to .005, and disable cast shadows. It appears to me like the shader accentuates the directional light and skylight fighting with each other, so the shadows move in jagged and unusual ways. Maybe it's just my setup! Adjusting the skylight made them crispy and Wind Waker like.
Awesome tutorial by the way! I learned so much about lighting and cel shading. I will probably continue to learn more once I rewatch your video for the fourth time! Lol. Then onto the outline vids. Thank you for sharing your knowledge and wisdom!
So I implemented bicubic filtering via a custom HLSL node, and find that the visual pros sink against the performance cons. I had a nifty and optimized material that transitioned between nearest neighbor, bilinear (default) and bicubic based on distance. The extra taps for many textures in an actual game scene? More costly than using a better looking 64x64 detail texture or other techniques. As much as I love my alternative filtering - I've also got Lanzcos, Gaussian, etc for other uses - anyone that I had take a blind taste test of bicubic closeup versus detail texture closeup, chose detail every time. There IS however a valley in the distance blending, where bicubic looks slightly sharper, but again, there are cheap/free alternatives to the extra taps/samples required for bicubic with any variation of algos behind it. Awesome video, not shredding it with the above statements by any means. Just blathering on ;)
Nah that's a fair point! Also because, for example, the bilinear has been around so much that GPUs have a dedicated HW module that does it, which makes it much faster :) Moreover you should consider Anisotropic filtering in the equation, which nowadays is enabled by default. Maybe you could try to repeat your test but first set your texture to Nearest Neighbour Filter in the asset itself and see what are the results! I would be curious :D It all depends on the use case, as always, I saw on my Discord server a guy that is making a PS1 retro looking game (so textures with no filtering and huge pixels) that added the Bicubic as graphics option and in that case it works incredibly well!
@@VisualTechArt I actually came back to say that bicubic and friends would always have a place in artistic drive, haha... Every now and then I do an audit, search for whitepapers, etc, to see if I can revamp old stuff. I swear somewhere, I have a paper on optimizing filtering. I wanna say it was by Nvidia, maybe one of the old GPU Gems editions? At any rate, if I can get a version of bicubic that was stupid fast, I'd have that in my master materials for non-deco, non-distant type meshes in a heartbeat. It *does* add just the tiniest amount of extra sharpness in different viewing scenarios, after all... Anyhow, keep up the great work! And if you could figure out how to handle an approximation of cavity/crevice mapping in HLSL (I have some hacky thing, but it's sampling a normal map 4 times, gross), that'd make for a great video I think. We can obviously bake these types of maps/masks, but with procedural being the wave right now, figuring out clever ways to handle some of our baked maps is going to be popular I'd guess ;)
Just use Octane Render, use Lino Grandi's method. I dont understand why NPR artists are trying ot reinvent the wheel, when there's one perfect method for NPR and CGI.
When you're combining normals it's always better to be in a space that simplifies the task by giving you a known reference point :) These methods are all thought for Tangent Space mostly
Hai il pisello enorme, i material (e la matematica che ci sta dietro) sono già un mondo enorme, ma capire e spiegare i limiti dell'engine è qualcosa di più della semplice conoscenza del framework. Davvero, complimenti
Works great, however when this is placed on randomly rotated tree instances it doesn't override the original rotation. So a lot of them are facing the wrong way or are misaligned. I'm looking to I guess reset the rotation of all the billboards to face +X in the material before doing the point towards camera operation. But I'm not sure how, any ideas?
You have to add a rotation before the billboard logic in that case that resets your rotation :) You have to find the 3 vectors that identify your rotated space axis and then use an InverseTransformMatrix to reset it
I wanted to know if this is applicable to games or is it maybe too hard on the performance for stable fps while playing? also: Do I need to credit you if I publish the game?
Hey it is a great tutorial and you explaining everything well, I had one problem which I hope you can help me when I am trying to choose the blendable location I don't have the option Scene color after DOF. I am using unreal engine 5.3. If anyone could tell me how to fix it it would be great thank you :)
I actually do want to see the details of how you derived the sigmoid equation at 21:34 -- I'm fond of sigmoid equations in general (I love 1/(1+e^x) because of how simple it is and how easy it is to modify its parameters, and how easy it is to differentiate and get a bell curve, which even if this isn't a normal distribution, is a nice reminder that the integral of the normal bell curve IS a sigmoid curve) so when I saw a sigmoid curve that can be tweaked to become completely flat in that way, I got super eager to analyze why it works the way it does.
I didn't follow any crazy mathematical procedure for that, it was more of a visual and logic process in this case :) I've just centered around 0.5 two mirrored exponential curves
Incredible content. Thank you for breaking everything down and explaining why certain things work or wouldn't work, instead of just showing nodes. Wonderful content.
I was giving this a go and also got the sample project from your gumroad, and an issue I'm having is that all of the cast/ground shadows have "banding"; after looking at the engine.ini files I realized my test project (where I am following the video step by step) was in DirectX 11, while your sample project is in DirectX 12. Do you happen to know if its possible to fix the shadows in directx 11? Edit: Another issue I may have found, maybe it involves the exposure settings, but any Unlit materials I add to the scene turn black without trying to compensate for Exposure in the material?
Can't help you with the first issue as I haven't tested it But for the second one I can tell you that when you have a PB Lit scene, you have to set an emissive intensity in line with those HDR values :) I recommend you to watch the relative part in my follow up video on lighting
Has anyone implemented it in their game? I was about to buy it on gumroad, but I would like to be able to see how it behaves on different colored characters, for example a dragon. I've bought too many assets that aren't what they seem, so I always want to go totally certain....
Hey guys, I'm new in UE5 making a game with some friends, and I'm interested in Shaders and stuff even though my Math don't math sometimes. On 21:52 I don't quite understand the Smoothstep he shows, is he saying that Smoothstep can also work instead of the function he made? If so, how does it actually work then?
@@VisualTechArt Okay cool, and UE5 wise (of which I'm still learning about) I saw the screenshot of what the material function you made instead of the Smoothstepper and I thought, I think I could make that! (I couldn't 💀) And how do you group nodes to create the SceneTextures in Pink that are the SceneTextures + Mask? I have no clue how to group those into what you make 🥲 Sorry for all the questions, I find the video fascinating and the Shader itself is incredible and fits the game I'm making super well, so I wanna try and make it myself and learn while at it 🙌🏼 Thanks in advance and for replying 😊
@@Danny3vans I'd suggest you to join my Discord Server and ask for help there :) So you can also post images to better explain yourself and is easier to chat
I've followed the tutorial but I have noisy/grainy shadow edges/artefacts. I've tried turning the lumen settings on and off as well as changing the source angle of the light. I'm on version 5.3.2. Thanks for any help.
This is super cool and exactly what im looking for, Its sad that someone making such high-quality content doesn't have more subscribers! Im following the tutorial, but at 9:15, when you set the light to 120,000 lux, my scene gets completely blown out. I tried messing with auto-exposure settings, but I can't figure it out, do you know what could be causing this? Im on version 5.0, as that's the highest my machine can handle.
Im also having trouble finding the RGBtoHSV and HSVtoRGB nodes you use. I have 2 options for RGBtoHSV, but neither one looks like what you're using, and i cant find any nodes at all for HSVtoRGB, are those custom nodes or am I looking in the wrong places?
For the Exposure, there's a setting in the Project that should be turned on, something like "use extended exposure rage" (I don't remember the name exactly) For the Hsl nodes, they're relatively new, it might be they've been added later, you should have two material functions tho, they should work the same :)
Any chance you'd go into detail on the math nodes (?) behind creating the dynamic S-curve? I've been trying to create something a lot like that for awhile now.
Dude this is like a master level course. Most tutorials end up with a shitty end product for the "sake of simplicity" but I suspect they just don't know how to make it truly great. What you produced is AAA level cel shading