Open jasperbrooks79 opened 4 years ago
might be fun for an engine pro, to tackle this problem, and write efficient, performant code, I can't do it, so I'm asking for this feature, so I can use it <3 . . Might take a ' shader ' pro a few days, to make the code, not sure <3 Thanks . . Sorry, if it's a LOT of work, I have no idea, how hard it is . . :O <3 . . maybe, a basic version of this stuff, would help get the ' exact ' comic look one wants down, and make the engine better and, more fun, for new users and, pros, that want a bit fun <3 . . .
Hi Jasper. I'm the developer of Toonkit for Cycles. A OSL shader package for Toon and NPR rendering in Blender. Also I'm working in NPR game by now (https://twitter.com/ZeroPointGame). I would like to share some words about Toon Shaders.
The main problem with a NPR/Cartoon rendering is that there's no only one cell shading shader standard like PBR or others realistic styles. Compare Borderlands and Zelda BotW e.g they are both Toon Shaders but they are nothing alike. So there's no list of features that could cover all possible styles. The usual approach for engines to handle NPR is just allow technical artists the maximum flexibility and for this Godot is already great. With the visual shader editor you can produce a multitude of Toon styles. So my whole point is that while all features you listed could probably be implemented even then it will not be enought to cover all possible Toon styles. It will never be possible in any engine so I highly recommend if you have interest in NPR rendering check about shader programming it will free your creativity to produce any style.
I'm talking to a master, I use Blender all the time, and love the toon shader tutorials, with amazing graphics . . .
I wanted to ask at least, if one could implement a band ' system ', as above, since the 2-color toon models right now, are a bit basic looking, ie. the toon shader currently isn't that pretty, which limits it's use . . Maybe an expert, like you, could sit down, and try to make a more cool, or epic toon shader, right now, it feels like a waste, bec. result is like a clay figure animation, very silly, and not really cool, for much . .
I think if the current toon shader doesn't get better, ie. one lit part, on shadow part, result is not very good, and not look like cartoons or, comics . . Right now, I think it serves no use, for the engine, ie. one can't produce anything ' satisfactory ', I hope maybe some cool pros, could make it so, it was a bit BETTER, a BIT nicer . .
Thank you, love Blender, better than 3Ds Max, imo, so nice . . . God bless Blender ( and, the Godot <3
lol, I seen your game, I'm a fan, it looks nice, I wonder how, it will play, be have plot <3 . .
:O :O <3 . . .
( I have OCD, sry, also autistic . . . .
Check this series (not mine) and see if can help you. https://youtu.be/laastFVkTaA
I have already seen the series, several times, look what I make, in Godot . . .
I followed the tutorial, and I have a nice ' lit ', and ' shaded ' part, but it looks too basic, I think it could look really nice if, one could have 3, 4 bands, or maybe a ' slider ', to set it . . I watched tutorial like, 3 - 4 times, lol, to make it work, it looks nice . . Didn't use orthographic camera, though . . It looks ' okay ', but for ' serious ' cartoon shading, one wants at least 3 - 4, maybe 5 bands, and I think the current toon shader, it is also not ' clear ' how one creates that ' sharp ' transition, ie. one has to tweak ' rougness ', for some reason, and change the specular, under metallic . .
I think the cartoon shader needs an update, so it is more versatile, and easy to use, so one could create perhaps this, right away . .
Notice how it uses the ' dot ' shading, which imo would be nice, to have in the shader . . .
Notice how more ' bands ', instantly makes it look from above, to almost pro cartoon graphics . .
This is TOO much, but if the standard toon shader had settings, to a FEW of those, it'd be much better, and since Godot can't compete with polygon power, or vertex power of big engines, this is maybe an area, where it can compete . . Of course, a very good coder, and shader expert, on toons, would have to do it, so the code is efficient, so on . . I really would like a shader, for toon, that was easier, more intuitive to use, and had some ' nice ' basic effects . . Way I see it, the dot shading is a very basic, but impressive one, like we associate it with comics, and the cross-hatching is the most common one, used in classic paintings, and many comics, also . . .
The last one, is sort of ' coal ' shading, using a pencil to create this, by simply putting pencil on side, and applying ' more ' craying or, coal to shadowy part . . .
Imo, these are THREE most common technique, for making a comic / hand-painted, artist look, not sure Godot would need all of these, but it'd be a much more kick - ass toon shader, if it had a few, of these things, and make it instantly fun, to make a comic toon - style, in Godot, for all users . . The idea is to sort of, make ' classic ' toon or, comics effects available, to really make them custom, there are shaders, or coding it, just some of it, would be a nice feature, especially ' dot ' shading <3
This might be alot of work, when it is done, all Godot users can benefit from it, and it looks fun, right away, really silly, cool . . .
Hope someone can do it, right now the toon shader is basically, a waste of time, see first picture, for any ' serious ' comics look, like it, is 5 % satisfactory, for no reason . . .
<3 . .
ps. Notice on the first Suzanne, how it also has cross-hatching, or so . . The whole idea of having a toon shader, is that it can make something ' comic ' - style, right now, imo it basically fails, a bit . . I think the above results are really nice, there's no point in having the current toon shader, ie. if one wanted to, it'd be easy to make it, in ones own shader, the stuff in the above shaders, is actually useful, and fun . . . Having what Godot makes now, is so entry - level, it's a waste of time, to me . . That's the point, right now the shader is useless because, it's so simple, or ' basic ', to basically all, or so . . <3
So, it's a suggestion, that's all, really be nice if the default toon shader, could actually do some neat graphics, and have a more user-friendly set-up . .
The current shader is bare - minimum and, no fun, at all . . <3 :O :O . . And, one needs to watch tutorials, to even make it do that . . need like a ' principled ' shader, but for toons, with a much nicer ' settings ' or, so . . . <3 . . :O . . so, it makes sense and, is quick, for new users . . . <3
this is what I think the shader should be like, and more user-friendly . . .
that'd be, a nice, allround toon shader, much better, than current one, also more fun, new users . . . <3 something generic, but also shows power of, what toon shaders can do, an average, decent code one, or so . . with a much nicer user - interface and, settings . . . . :O :O . . .
here's another example, we all know to make, using pencil, put it one side and, rub, on paper, to make ' shadows ' or, shading . . .
imo, if the default toon shader had some of this, people would a. use it a lot more and b. it be good ' demo ', of what one can do, with toon shaders, more relevant . .
imo, the principled shader is an open source, industry standard PBR shader, maybe someone could sit down, and make one, for Godot, and toons . . make, the ' definitive ' cartoon -cel shading shader, or so . . easy to use, just some sliders, booom, you have comics . . .
the, Godot Toon shader, the cel-shading version, of principled shader, one shader, to ' rule ' them all, or so . .
anyway, the current shader is so, well feature-lacking, I think one might well, erase it, which would be sad, to me . .
make, the ultimate shader, for toons . . .
I don't like long form, multi part issues like this but I agree that the built-in toon shader is lacking and outright broken in 3.x(see https://github.com/godotengine/godot/issues/63297).
Here's a comparison between default and toon(on both diffuse and specular):
As you can see, there is a noticeable lack in contrast and does not look quite like what most people expect from toon shading. Hell, it's not even close to cel shading.
@atirut-w that's just how Jasper writes his issues, unfortunately
Describe the project you are working on: A Tomb Raider game, atm . .
Describe the problem or limitation you are having in your project: I've been using the toon shader for fun, and I saw this on a post, on Godot social media, it's a ' nicer ' toon shader . .
From what I can read, it is fairly easy to implement this feature ( ie. take values between 75 - 100 % lit, and give them 1 uniform shading, same for 50 % - 75 % . . ) . . This creates some really nice effects, many that like toon games use them, and overall it's just nice . . My suggestion is, the toon shader gets expanded, so one can set ' how many bands ', and for each band, what percentage ' number ' that gets clamped, maybe as a setting, in toon shader . . ie. default is, each band gets evenly divided, for 3 ' bands ' means 0-33 % get on ' shadow intensity ', 33-66 % get a medium shadow intensity, so on . .
but, so one can make it more custom, one can write . .
4 bands ( opens settings ) . .
band 1 35 % - 100 % band 2 20 - 35 % band 3 10 % - 20 % band 4 0-10 %
This would help place the bands, and create a much nicer toon shader, or so . .
Describe the feature / enhancement and how it helps to overcome the problem or limitation: It would just be an expanded ' setting ' in toon shader, so one can set ' how many ' bands, and also, where they get placed, perhaps number, from 0 - 1, so above becomes
... band 3 0.1-0.2 band 4 0.0 - 0.1
The last thing that could be nice, was if one could make a feature, so one can add ' black ' line, near each transition, or so . . like so . . .
Also, if one could add a ' basic ' pattern, on certain bands, ie. looks like this . .
This matches classic style, called cross-hatching, and would have to be painted, as a ' flat ' effect . . ie. from, the viewport . . Cross-hatching, is where you draws lines at ' one ' angle, to make shadows appear deeper, one draws them, from another angle, this 'crosshatching ' pattern could be painted on ' certain ' bands, which could also be set, under each band, or so . . Another common way, of adding shadows, is to use ' dots ', on the surface, the classic comic book look effect . . .
Improving the current cartoon shader, so it can a. control how many bands are drawn, and b. one can add classic cartoon or, painting style ' overlays ', to create shadows, would be really nice . . technically, one would need a ' project pattern ' flat or, from view-port onto the bands, to create the effect . . more settings could be, where one could change the colors, of the cross-hatching or, comic book dots, in many classic paintings, they use red coal, so the cross-hatches are actually read, ie. Leonardo da Vinci drawings, sketches, or some comics, actually have blue dots, so on . . While the effect might be rudimentary, I think it could be really nice, or at least make more ' default ' settings, to work with, for beginners, that just want their 3D model to look ' toon ', and really cool, right away, without learning shaders, advanced stuff . . I also think this makes the cartoon shader far more useful, for what it is made for, ie. cartoon, comic or, animation of comics, or so . .
Notice how the shadowy areas, I think this is a copy, have been made, using cross-hatch lines, I think one could have a box, of ' settings ', like parameters in spatialmaterial, a sub-menu under toon shader, where one could work, with this stuff, it might look cool, one could need to be able to set thickness, of the lines, or dot effect, for each band, to have a super - custom toon shader, and these things shouldn't ' bloat ' the interface, but be in an appropriate sub-setting, for toon shader . . I think it's fairly easy to implement, if one knows shaders, but I don't know that, so I can't do it . . This would make the toon shader much more versatile, and powerful, for various art-styles, and Godot more cool, for new users, ie. once there are tutorials, anyone can make a nice custom cartoon or, comics style look, or imitate ' classic ' masters, ie. techniques, to make nicer toon games <3 . .
Describe how your proposal will work, with code, pseudocode, mockups, and/or diagrams: Like, normal spatialmaterial has ' Parameters ', where one can set all kinds of things, make a new ' menu ' in toon shader, called ' Band shading ', and allow users to set these things, as they want, or so . . It would make it a lot nicer, and people could create amazing looking toon-games, almost right away, in Godot, as well . . I have really wanted these things for a long time, other people have asked for a nice toon shader, as well, a more versatile one, Thank you . .
If this enhancement will not be used often, can it be worked around with a few lines of script?: You need to dive into the weird world, of shaders, which is rather difficult, for new users . . Having these things in the built-in toon shader, in a way so it's doesn't bloat the engine, could make some really nice effect . . .
In my opinion, having read a ton of comics, and studied some amazing classic art, these two - cross-hatching, and dot ' shading ', is the TWO most popular ones, the last is simply ' band ' shading, ie. how the first image looks . . If the standard toon shader could do that, it would be really amazing, to work with . .
It would make the toon shader more powerful, and rounded, and help new users make amazing looking ' comic ' games, with almost no effort, which is so cool . . . <3
Is there a reason why this should be core and not an add-on in the asset library?: Bec., having this option, might mean some makes next ' Legend of Zelda ' clone, in Godot, or so . . it could be really powerful, and take in-engine toon shading to another level, for users, and make Godot the ' best ' engine to make toon games in, which is over-looked, really nice . . <3 <3
This might be complicated, the challenge is then, to make it user-friendly, while powerful, tough work, I think, once it's done, we have a whole new level of cartoon games, in Godot <3