Thank you for the tutorial. Is there any way to use it with custom wheat mesh ?
@isaacolander82914 күн бұрын
Is there a way to keep the color? So it's not replaced by black and white
@VisualTechArt4 күн бұрын
You can multiply it on the PostProcessInput0 :)
@alex-qn5xp4 күн бұрын
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?
@VisualTechArt4 күн бұрын
Maybe try to follow the video that is specific to that outline, so you can see it in more detail and figure out any mistakes :)
@alex-qn5xp2 күн бұрын
@@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.
@Simon_Laserna5 күн бұрын
Great video. I LOVE that you show things being implemented and pause to discuss things. Thank you both for spreading knowledge!
@-jxvi5 күн бұрын
Underrated tutorial, underrated youtuber
@MattInTheZone5 күн бұрын
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?
@VisualTechArt5 күн бұрын
Set it to SceneColorAfterDOF :)
@MattInTheZone4 күн бұрын
@@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.
@user-xi1ic3tm1m5 күн бұрын
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.
@AglaeJuarez6 күн бұрын
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.
@VisualTechArt6 күн бұрын
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 :)
@Mcreator1216 күн бұрын
this is amazing! Thank you for this tutorial 😍
@Helgrind448 күн бұрын
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.
@VisualTechArt7 күн бұрын
They also heavily modified the engine to get some of those things working :)
@michaeldawn86909 күн бұрын
How can I render the game at higher resolution so there's no blurry pixels?
@VisualTechArt7 күн бұрын
Increase the screen percentage
@michaeldawn86907 күн бұрын
@@VisualTechArt That's on the three bars in viewport right? Does that apply to packaged game?
@AltoAutismmo9 күн бұрын
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
@VisualTechArt7 күн бұрын
Not sure man
@AltoAutismmo5 күн бұрын
@@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?
@geraldo.goncalves9 күн бұрын
This is Gold! thank you guys!
@3DModelingAnimationVFX9 күн бұрын
So basically, to follow this tutorial, I need to purchase the file for 50€ + VAT?
@alex-qn5xp7 күн бұрын
You can make the entire thing without any of the assets, just follow the video.
@VisualTechArt7 күн бұрын
Exactly, you don't need to pay anything to watch the video :)
@travisfarley64219 күн бұрын
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-qn5xp7 күн бұрын
That's probably lumen with software raytracing, disable lumen or use hardware raytracing.
@travisfarley64217 күн бұрын
@@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.
@travisfarley64217 күн бұрын
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!
@mr.hamzik10 күн бұрын
The innermost secrets of the Epics have been merged!
@dovahfruit950310 күн бұрын
the sample project is gone 💀
@VisualTechArt10 күн бұрын
What do you mean?
@dovahfruit95039 күн бұрын
@@VisualTechArt maybe its just the formatting, i thought there would be a link immediately after "Sample Project:" but it seems thats not the case
@Derjyn11 күн бұрын
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 ;)
@VisualTechArt11 күн бұрын
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!
@Derjyn10 күн бұрын
@@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 ;)
@AltoAutismmo11 күн бұрын
Jesus christ man. This feels like youtube premium. I will single handedly give you props if I get a job around this.
@IbtesamSadiq11 күн бұрын
Is this more expensive than texture sample?
@VisualTechArt11 күн бұрын
It depends on the size of the Texture and what else the shader is doing :)
@KindTom113 күн бұрын
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.
@VisualTechArt13 күн бұрын
Let me know when you'll release your game running on Octane then :)
@jacobst-pierre284915 күн бұрын
does this work for world space normals?
@VisualTechArt14 күн бұрын
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
@jacobst-pierre284911 күн бұрын
@@VisualTechArt thanks
@pmanlio16 күн бұрын
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
@VisualTechArt14 күн бұрын
Grazie xD
@ILIZIUM16 күн бұрын
OBIVAN_KENOBI_!!!!!!!
@Hozq3D16 күн бұрын
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?
@VisualTechArt14 күн бұрын
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
@Hassan1256717 күн бұрын
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?
@VisualTechArt14 күн бұрын
Credits would be nice :) Performance wise, you'll have to take your own measurements as always :D
@tamasfodor231217 күн бұрын
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 :)
@VisualTechArt16 күн бұрын
Set it to Before Tonemapper :)
@mostafabalboul396617 күн бұрын
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.
@VisualTechArt14 күн бұрын
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
@mobiusteapot19 күн бұрын
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.
@Balai_82320 күн бұрын
how did you create the yellow node at 8:41 ?
@VisualTechArt19 күн бұрын
Named Reroute Node :)
@Balai_82317 күн бұрын
@@VisualTechArt thanks
@CanadianCrowDev22 күн бұрын
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?
@VisualTechArt21 күн бұрын
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
@Kkurox22 күн бұрын
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....
@alex-qn5xp7 күн бұрын
Stop buying assets then.
@Kkurox5 күн бұрын
@@alex-qn5xp using your logic, then create your own game engine. 🤦♂
@alex-qn5xp4 күн бұрын
@@Kkurox Straw man argument right there. 3D isn't that hard, it's way easier than coding or even following this video.
@Kkurox3 күн бұрын
@@alex-qn5xp and my question would still be valid. buy or not, that's not what i was asking. i was asking about the final result.
@DazzlingAction23 күн бұрын
The rounded voronoi instantly reminded me of pomegranate seeds.
@CooliticX23 күн бұрын
27:55 **laughs in pain as a programmer**
@Danny3vans23 күн бұрын
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?
@VisualTechArt23 күн бұрын
The SmoothStep is still an S shaped curve, of which you can't control the slope, tho :)
@Danny3vans23 күн бұрын
@@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 😊
@VisualTechArt23 күн бұрын
@@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
@code-7224 күн бұрын
Canny edge detection please!
@skyty024 күн бұрын
Physically Cringe Cel Shading tutorial when
@Zephyr31424 күн бұрын
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.
@VisualTechArt24 күн бұрын
You're not the first one that talks about this but from here I can't tell you much, try to ask in my Discord Server
@Zephyr31424 күн бұрын
@@VisualTechArt ok thanks
@Twitch17725 күн бұрын
If I followed this tutorial is it the same as the gumroad item?
@VisualTechArt24 күн бұрын
Yes
@robertbobertjr25 күн бұрын
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.
@robertbobertjr25 күн бұрын
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?
@VisualTechArt25 күн бұрын
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 :)
@unrealcreation0726 күн бұрын
This really is the mother of all Materials tutorials
@cfc75826 күн бұрын
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.
@VisualTechArt26 күн бұрын
I'm about to start using my Patreon to add "extensions" to my videos :) This will be one of them
@milddiffuse27 күн бұрын
I'm very interested in seeing this with actually textured assets
@Sacred6T427 күн бұрын
I really like this material. Is there a way to have more than 3 colors? And, can I change the color of the outline?
@VisualTechArt27 күн бұрын
You can nest more lerps with more colour bands and yes, you can use a colour for the outline :)
@AltoAutismmo27 күн бұрын
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
@666nevermore28 күн бұрын
Love the quality and the thinking behind your work. - In Unreal custom node you are indeed able to output more informations than the one single return, instead of packing your return to a (float3, float) in the custom node, you can add output pin (as you can add input pin), just give it a name, then in the hlsl code you use that name. For instance in the custom node add output, give name OutNormal, in the hlsl code towards the end, you just write OutNormal = LaplacianNormal / CenterWeigth; - Also looping in the gpu is never considered a good idea, if statements also are a bad idea. Since you are directly writing in hlsl code, the compiler will literally copy and paste your hlsl code, without optimizing for the compilation part (usually the compiler knows better then us). The matrix loop can be optimized heavily by not making it if checking every iteration of the nested loop. The center of your kernel is always 0,0 you can check it outside the loop and make the loop iterating by dodging the center. Hope these information can be useful, love you works. Edit: literally just saw 1.5 hahaha mb
@VisualTechArt27 күн бұрын
Yes, I didn't add multiple outputs for compatibility with older versions :) The for loop is pasted in the hlsl translation of the nodes, but then the compiler decides what to do with it, that's one of the reasons to use an hard coded kernel size, for example: by knowing exactly the amount of iterations, and if they're not too many, the compiler will most likely unroll the loop :) Same with ifs, it's up to it to decide if it's better to branch or create a ternary operation and so on. Unless you specifically tell it to do a certain thing, even though from what I understood it can still ignore you xD
@666nevermore27 күн бұрын
@@VisualTechArtI just pointed that out because at a point you said that you can only return one variable. In the CPU programming this add output is the corrispettive of “out” arguments of a function. float Func(out x).