This is incredible. I saw your post on Reddit a while back and ever since I have been waiting for this promised tutorial. It shattered all expectations. I am considering starting a devlog myself about my little project, and your outstanding editing skills made me realise I have quite a lot on my plate. You sir have just become my number one source for inspiration. I can’t wait to see what you come up with next!
Wow! Thank you! 🥰 I was so moved by this praise I had to take a step back and reassess before I replied! It really keeps me going hearing kind words like this! It's a great idea to create devlogs about one's projects, so I think you should definitely do it! For me the upsides are many, I think video editing and animation creation are both extremely fun, while challenging, and it’s a nice way to log your development and get other people interested in your project. I wish you good luck on your endeavor and feel free to send me a link when it’s done, if you choose to do it!
Just followed this for my project in Godot. Looks awesome! Adapting it for the different shading system was a little harder but in the end i learned a lot more than i wouldve by just following a tutorial directly, so thank you!
How the light movements matches the music, not only in rhythm, but also glows up with high tones and down with low tones, witness about your attention to detail, you seek out to create perfection. Also that graphics on the left matches coding added on the right, excellent presentation.
calm music, simple explanation, well worked video, a perfect tutorial One thing that I wanna mention is that you don't have to define the keyword as properties in the shader, you could just simply add "#pragma multi_compile _YOURKEYWORD" directly to your hlsl file where you write custom functions, I tried it and it worked fine. Because if you added too many keywords to your shader, it will generate too many variants of it and thats gonna take a bit of memory you could see that when you go to the generated code of your shader, you will find a lot of unecessary stuff
Hi Robin, Your devlog feels more like a tutorial - which is great! Maybe you should think about renaming it to reach more people, so more people can find it and learn from you.
Hi! Thanks for the feedback. It is true that this devlog is in-depth enough to be seen as a tutorial, but all of them won’t be, especially the future devlogs about character and creature design. Your tip about renaming it to reach more people might hold some truth, but it was written as a devlog where I thoroughly explain how the result was achieved, that way something can be learnt (hopefully) while following the development process of the game!
@@RobinSeibold Sure I totally get you! Maybe you can make another video as a tutorial video specific for people who want to create a toon shader (I was searching it myself and mainly found mediocre explanations compared to your devlog)
@@scepticalorange3392 If I did a tutorial video on cel shading only, it would probably be to similar to this video I reckon. I Could possibly include both cel shading and outlines in the tutorial video though, making it a complete toon shader tutorial, but I don't really have the time for that :(
*unsolicited advice * I really enjoy these devlogs they have a really brilliant presentation, but the elephant in the room is, at the rate it takes to make these videos surely this game will struggle to come close to being finished. I feel like I'm seeing so many devlog youtube channels make videos about them canceling their game projects. Have you considered taking your presentation style an applying it to a slightly different genre of video? Something like Mix & Jam / GMTK where you breakdown a particular feature / shader etc. from another game in your unique video style. Anyways great video :)
Oh how I've dreaded the day someone would point out the elephant! Well this game is a long term goal, and hopefully I'll be able to spend more and more of my daily working hours on this game, hence speeding up the process! In addition I would love to make 1-2 game jam videos a year, with this style, as you mention, hopefully Ludum Dare in April will lead to one such video! Lastly, thank you! 😊
Hi, you are right to certain degree. But I think creating such high value videos and building a youtube channel by that is a great way for solo devs to get visibility. I have build my game first and haven't done any devlog for the most time. So when I put my game out in early access it had no visibility and didn't sell well (better than I expected but still bad) So its all about balancing both - for me this means 12h gamedev and 8h youtube each week - Sure there are other ways of marketing but everything comes at a price :)
Nice video ! I was wondering how did you make the points light glowing ? Because if i use the bloom in post processing everything is glowing not just the points light.
The lights in the video are point lights, but also spheres with a HDR emission material, which together with correct post processing bloom creates these visuals.
Great video, I love the editing! May I ask how did you create those smooth shadergraph node's animations? Did you use any tool other than a video editing software?
This is an EXELLENT video, great production value and explanations with examples. If I were making a toon shader, this would be my Go-To video. Though initially I didn't click it because the title didnt grab me. I thought it would be much more of a surface-level introduction to cel shading than this. I have some thoughts: The audience you're targetting seems to be a lot more focused on developers than consumers. I Honestly think your video will do a lot better if you give it a different title, like "Cel shading explained" or "How to make a Cel Shader", to try to capitalize on what people are searching for, because this is the *best* video in that category. There's basically nothing in the video that reflects the title "A Cozy Creature Collecting and Management game". The people who click on this video because of their interest in cozy creature collecting games will bounce right off because this wasn't what they expected.
Thank you! 😊 Great feedback! Right now I’ve chosen to have the following titling format for all my devlogs concerning this game (both in-depth and surface level): - Devlog | And since I have not decided on a game title yet, the elevator pitch line “A Cozy Creature Collecting and Management Game” will have to do for now. I would probably get a few more views with some title optimization, but at this point in time I’ve prioritized connecting the devlogs not only through the playlist, but also through titles, building a ‘series’ of sorts. But who knows, I might switch it up in the future! 🤷♂
@@RobinSeibold I think that's a great sollution: Playlists are a great way of connecting videos in a series even if they don't share a title. I'm writing even more detailed feedback, because this is stuff that I've been struggling with myself: Many of these thoughts reflect on my own plans and goals, and might be more relevant to me than you, but I thought to share because I do think they have value. Since making the above comment I've watched the rest of your series, and my statement feels even more validated: You're making technical content for developers, but you're making video titles that appeal to players. If you intend to build an audience for the GAME itself through youtube, then you might not be hitting the nail on the head. Because the content is geared to developers (like me) and not consumers. I would be stoked if you continued making this kind of content. The information has value and is delivered with great aesthetics. but I honestly probably wouldn't buy your game based on any of these videos. Developers are not the same as gamers. If I were a consumer of with the goal of playing the next cool indie game of a genre I like, I could google "A cozy creature collecting game" and get one of these videos. But I would click away, because this isn't what I expected based on the title. This will cause the video to "die" in the algorithm. It's not a Cozy Creature game, there are no cozy creatures, there is no management. BUT If you want to build an audience of young game developers and instead earn a living as an educational RU-vidr , you're doing a great job. Your content reminds me of aartificial (Astortion game). If this is the goal, I would then try to target these people with titles specific to what they're actually searching for: "Camera, Controls, Character: Starting a new game project", "Making games that POP: Outline shaders", "Shadergraph Cel Shading : The Ultimate Sollution" I'm saying this because you're making breakout dropdead excellent videos that deserve more views, and I think there are small things you could do that increase your chances of blowing up. But at the end of the day: You're making videos of high quality and publishing them. All this ^ doesn't matter compared to that, they're just multipliers. So kudos, keep up the great work. 👍
if anyone following along cant see shadows from the additional lights, make sure to turn on shadows in each light gameobject trough the inspector (for me on 2021.3.25f1 they are set to "No Shadows" by default)
This is beautiful. Keep up the good work. I am currently working on a project and want to try out this shader. i have a couple of questions: 1. it looks amazing but what is the performance like? We are working on WebGL and have plans to bring it to mobile devices. 2. May we use the shader in our project? 3. When are you releasing the game? Looks cool.
Thank you! The performance should be good, here's a WIP of the shader github.com/Robinseibold/Unity-URP-CelShadeLit, you can try it out yourself, and use it in your project if you like the result! As for my game, it's way to early for a release date. Good luck with your project!
Hello, thank you for sharing your work, i've tried to reproduce the effect for a project i'm starting with unity 2022.3.7f1. But i'm running throught an error that i am unable to resolve with my beginner knowledge with HLSL. The console is giving me the following error code when using the custom node : "undeclared identifier 'LightingCelShaded_float' at line 296" . I understand that i doesn't recognize the name of my function by i can't figure out why. I look in the internet and try to play with the precision of the shader but it changed nothing. Did someone encountered the same problem or have an idea on how to resolve this error ? Thank you verry much 😅
I would suggest creating an issue @ github.com/Robinseibold/Unity-URP-CelShadeLit, be sure to include images. RU-vid comments is not the best forum to solve these issues :D
Hello. Thank you for providing such a beautiful tutorial. I was trying to replicate this shader by following your video. However, I am having an issue wherein Unity is saying that "Shader error in 'Sub Graphs/Master': '_AdditionalLightsPosition': implicit array missing initial value at /Users/Me/TestProject/Library/PackageCache/com.unity.render-pipelines.universal@14.0.10/ShaderLibrary/Input.hlsl(151) (on metal)" I am currently on Unity version 2022, using URP version 14. I was wondering if you might know how we could solve this issue?
Hey, this is a really awesome effect and an amazing video, I hope you game turns out great. I've been trying to replicate this in my own project with very little success, every time whatever object I apply the material on turns invisible, my knowledge on shaders is extremely limited so I've been having a frustrating time. Any idea what it could be?
Thank you! Have you tried cloning the source files? They can be found here: github.com/Robinseibold/Unity-URP-CelShadeLit If you're still having problems I recommend creating an issue where you describe the problem in detail, preferably with attached images. Good luck!
Hi, this shader can work with URP? Cause when i added URP in project all my materials was pink, i tried to fix it, but unity said "ToonTan material was not upgraded. There's no upgrader to convert Roystan/Toon Complete shader to selected pipeline."
Yeah, I'm using it with URP. Those errors you're getting, ToonTan/Roystan/Toon Complete are not related to these outlines. I'm guessing you've tried multiple different cel shading solutions?
I've watched so many tuterials and Light GetMainLight() always gives me issues, which version of unity are you using and did you also face a similar problem 😭
@@parriedswoosh That sounds like a missing include if it's in a HLSL shader, or function calls within the wrong #ifdef directives if it's in a custom node!
@@RobinSeibold The links to the hlsl files on the description are down :(. and I'm using URP in unity 20.3, is it possible GetMainLight is not a built in function in URP, maybe I need to be using LWRP? It gives me errors when I follow the blog too 😭
@@parriedswoosh Thank you for pointing it out, I have now updated the links in the description! I've been using both Unity 2021.2 and 2021.3 for my project with URP, and the updated links should show that GetMainLight is a function in the URP library!
Hey, I wanted to try out this shader in my project, but I'm getting some problems when I bring it into my project. First, on LightingCelShadedNode.shadersubgraph, there's an error saying that it doesn't have a valid hlsl file, so you need to manually set it to use the one you've included. I was able to figure that out, and resolve that problem, but I'm still getting an error on the LightingCelShadedNode in CelShadeLit.shadergraph - it says "ArgumentNullException: Value cannot be null. Parameter name: source", which makes me think it's somehow still not communicating with the LightingCelShadedNode? But if that is what's happening, I don't understand why. Any ideas?
Hey June, I had the same issue and found the following solution: 1. In the Custom Node folder, open up the LightingCelShadedNode -> in the graph editor there should be an error on the custom function node. Open the Node Settings and scroll down. You can see the source file is not set. Drag the other File from the custom Nodes folder in there. Save Asset 2. The second error has something to do with GUID, so instead of rewriting those, I just quickly replaced the custom node in the CelShadeLit Shader Graph. -> Drag your recently saved custom node into the shader graph. Replug everything to the new LightingCelShadedNode and delete the old one. save asset. fixed it for me, hope it helps!
@@starplatinum3305 My best bet would be a custom renderer feature utilizing replacement shaders, much like the one I've implemented in the Outlines solution.
I have not tried, and don't plan to anytime soon since I'm working in URP, but I don't see why not, might require some small adjustments though. If you try, please let me know!
The result is absolutely amazing!, any chance we can get the code of the necesary file? I ask because the whole shader code is just too much, specially because it keeps getting weirder with the "..." collapsing things that i have no clue what are. :(
Did you have the full shader code hosted somewhere? It is kind of hard to follow exactly what you are implementing since a lot of times it gets obscured by the folding down of it to one line in the video.
@@RobinSeibold Would you please be so kind and upload the shader somewhere or atleast the code? Would make it a lot easier to follow the video with that.
its interesting seeing a cel shading approach that attempts to take into account multiple lights, I'm reminded of a video on wind waker that points out how the devs chose to prioritize one only one light at all times ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-mnxs6CR6Zrk.html
@@Krhey-0 Well I've tried it in 2021.2 and 2023.2, could be adjusted to work with other versions too. Making it work for 2019 might not be as straight forward as one would hope though.
i have this error when importing Error in Graph at Assets/Unity-URP-CelShadeLit-main/CelShadeLit/ShaderGraphs/CelShadeLit.shadergraph at node LightingCelShadedNode: Validation: Could not find Sub Graph asset with GUID 7a0dd9ccf4da5364b8fa152e0667fa76. UnityEditor.AssetImporters.ScriptedImporter:GenerateAssetData (UnityEditor.AssetImporters.AssetImportContext)
Sounds like you need to properly set up the sub graphs. It's a problem with the repository not being a 'Unity package' so some references might not be set up correctly when importing.