Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
197 stars 9 forks source link

Toon Shader Feature Discussion #3019

Open Geenz opened 2 years ago

Geenz commented 2 years ago

What topic do you want to discuss?

This is to facilitate the discussion of new features to add to the existing toon shader.

Goal of discussion

Discussion:

To be completely clear up front here: any requests for Pyomi to be added will be ignored. This is for a variety of reasons, such as:

This is a non-exhaustive list, but it highlights the bigger reasons why we won't be supporting Pyomi.

That being said - I am open to considering features and workflows we could potentially support that are "Pyomi-like".

One big problem with most toon shaders is they tend to have really specific requirements, and many tend to have super bespoke flows that are intended for one style or another. We're trying to keep this generic to most workflows, so hopefully we can settle on something that:

With that in mind, I'd like everyone to consider: what's most important to your current toon shader driven workflow either in Neos, in whatever DCC app you use (such as Blender, Maya, etc.), or other platforms you produce content for.

ProbablePrime commented 2 years ago

Make sure to check the notes from: #428

There was some good discussion there.

Enverex commented 2 years ago

For Geenz and everyone else wondering why people may be asking for Poiyomi, I've put together some information about it as I assume those people have never used it personally.

Hold on to your pants, here's the functionality available in the free version: PoiyomiOptions

In addition, it supports these rendering types: image

And on top of that, every single texture/map supports the full array of tiling/offset/panning, etc each, it's not a single set of values for the albedo/normal/emission, etc. image

So, when people ask for Poiyomi, it's probably because they're using one or a combination of one of those features.

Khosumi commented 2 years ago

Here is an example of what people can achieve with a single material, using nothing more than masks. Glitter exists only within the smoke, iridescence on the text / logo, scrolling parallax using a height map and an alpha texture with dots to simulate stars with iterations on top of itself to give more depth.

https://www.youtube.com/watch?v=gY1N5lvnLc8

A lot more combinations and effects is clearly possible, but it demonstrates the flexibility of what such a shader could do within Neos.

Geenz commented 2 years ago

Here is an example of what people can achieve with a single material, using nothing more than masks. Glitter exists only within the smoke, iridescence on the text / logo, scrolling parallax using a height map and an alpha texture with dots to simulate stars with iterations on top of itself to give more depth.

https://www.youtube.com/watch?v=gY1N5lvnLc8

A lot more combinations and effects is clearly possible, but it demonstrates the flexibility of what such a shader could do within Neos.

This is one of those examples where I feel a singular shader is probably not a great way to go about achieving these sorts of effects. At least, not at the moment. Let's keep this to toon shading specifically.

kulzae commented 2 years ago

While I'm not super versed in this I feel most people are using it for it's effect controls rather than it's toon like properties. With the toon just being a side effect of having the controls and vrcs generally underwhelming world lighting.

Many of thing things I have seen people ask for can be handled with logix and emission masks would go a ways to fulfill the rest of it. Additional emission modes like only under darkness. Center out. Or additive would be useful as well.

I'd love to use additive for baked lighting as right now I need to basically use a second abledo with the emissive layered on otherwise the emissive map desaturates the surface rather than lights it

epicEaston197 commented 2 years ago

I would like to kind of like to have a Hue mask this will make it so that I can Hue myself but have all my glowy bits to Glow the mass would be black doesn't Hue White does hue this is separate from a emission map the Hue will go off of the base color for example my avatar is green and it would take that as a base color to Hue if you have a weaker base color the hue won't be as dramatic

the reason why I want this I don't want my teeth or mouth to Hue but at the same time I want them to Glow so I can't do a emission mask image

AshtonSparx commented 2 years ago

I would love a toon shader that isn't limited to 4 light sources. I understand it's a limitation to how it renders... but it's the only thing pulling me back from Loving Xiexe. I have 4 bracelets that have small (no shadow) point lights on them.. and my avatars lighting turns poopoo with them on if there's any other light sources on me.

Honzackcz commented 2 years ago

I know this is not really relevant but for me and lot of other users there is still one big concern with toon shader: Ambient Occlusion. This post processing effect can ruin visuals of toon shader a lot is some cases. Now other additional features are not that important for me as being able to disable AO.

Fleur24 commented 2 years ago

I totally agree with Honzackcz here. A lot of people are not really looking for new features in Toon shader but they mostly want to achieve the "flat anime like look" that is just not possible now bcs of AO. Most if not all of the "anime style" avatars just looks really badly with AO mostly due to low polycounts and the overall design of the model itself that relies on using a really flat toon shader. AO just causes a lot of issues here unfortunately.

The only new feature I can think of that I noticed that people want is having some really easy way how to animate specific materials on the shader itself (adding glitter, wave emission effects etc.)

TehTurk commented 2 years ago

Listing a few issues this falls under for a good read to help kind of gauge as well. Going to be adding more as I find them as I'm mobile and Github isn't linking what I want xP

1536 Matcap + ColorMasking

2520 Halftone Support

2700 ShadeMapping + ShadowRamp w/o Gradient

1791 MatCap Masking (GrayScale Masking)

2090 RimLight Support

1929 Expose Dissolve Options on XieXies

1951 Expose Color Masking

2028 Hue Shift Masking

I think this is all of them and the original issue prime linked would be most issues. While I'm not too versed in this as well too, I know most folks besides those looking for "effects" which are doable with Logix or Components, are looking largely for support for Toon Shading Elements.

TehTurk commented 2 years ago

I would love a toon shader that isn't limited to 4 light sources. I understand it's a limitation to how it renders... but it's the only thing pulling me back from Loving Xiexe. I have 4 bracelets that have small (no shadow) point lights on them.. and my avatars lighting turns poopoo with them on if there's any other light sources on me.

This will be changing in color management update afaik, so no worries there.

Aerizeon commented 2 years ago

A somewhat unusual feature I'd be interested in seeing is different outline modes - ones that potentially have better edge highlighting, instead of only having the inverted hull style outlines.

The inverted hull method has a fixed cost (double the vertex count, additional draw call), but I'm curious what alternatives exist, and if they have similar/better/worse performance while providing different (and potentially more accurate, in some scenarios) outline styles than what's possible with the current method.

Geenz commented 2 years ago

I would love a toon shader that isn't limited to 4 light sources. I understand it's a limitation to how it renders... but it's the only thing pulling me back from Loving Xiexe. I have 4 bracelets that have small (no shadow) point lights on them.. and my avatars lighting turns poopoo with them on if there's any other light sources on me.

This will be changing in color management update afaik, so no worries there.

As mentioned during my last office hours, this is likely shipping far sooner than CM.

Geenz commented 2 years ago

I know this is not really relevant but for me and lot of other users there is still one big concern with toon shader: Ambient Occlusion. This post processing effect can ruin visuals of toon shader a lot is some cases. Now other additional features are not that important for me as being able to disable AO.

This is non-trivial due to how ambient occlusion works as a post-process. It's basically an "all or nothing" sort of process for opaque objects - meaning we're unlikely to only disable SSAO for toon shaded objects due to the additional performance impact of basically rendering a mask just for those objects.

Geenz commented 2 years ago

A somewhat unusual feature I'd be interested in seeing is different outline modes - ones that potentially have better edge highlighting, instead of only having the inverted hull style outlines.

The inverted hull method has a fixed cost (double the vertex count, additional draw call), but I'm curious what alternatives exist, and if they have similar/better/worse performance while providing different (and potentially more accurate, in some scenarios) outline styles than what's possible with the current method.

There's a few alternatives, and some of these you can combine together for different outline effects. It may be worthwhile to combine some of these as well.

I've also been looking at some recent advancements in machine learning for the problem of outlines- namely where some animated films are going with the problem. I'm not quite sure how well that would perform though, and this would really be better for achieving specific outline "styles".

TheBasementNerd commented 2 years ago

I'm unsure how relevant it is (it's ok if this is not actually part of this discussion) but one of the things I miss most from poyomi was proper parallaxing effects. However I think that might just be one of the plethora of things it offered, rather than something about toon shading itself

ohzee00 commented 2 years ago

also I don't know if it's a little bit off topic but is there a estimated time where color management will come out?

this may have been answered in the office hours I don't know if I'm wrong

I would suggest looking at the office notes here: https://wiki.neos.com/OfficeHours:Geenz:2021-09-16 Color management questions are more reserved for office hours and/or other means than this issue.

GearBell commented 2 years ago

biggest issue and request - lighting. issue: the current version of xiexe cannot handle multiple nearby light sources. it "picks" only one part of the avatar then darkens the other parts as if it cant handle normal lighting on all the body. to reproduce this error, simply have someone with seperated meshes/materials with xiexe toon and you will see. the request: to have that fixed, as well as it correctly reacting to light much like pbs metallic. i want to be able to hold a candle in my hand and the light halos the hands and slightly shines off my face or casts light shadows. stuff like that. As it is now, xiexe does a vague understanding that theres a light nearby, but only slightly applies it to the shader as a color enhancment rather than a light bouncing off the model.

ohzee00 commented 2 years ago

biggest issue and request - lighting. issue: the current version of xiexe cannot handle multiple nearby light sources. it "picks" only one part of the avatar then darkens the other parts as if it cant handle normal lighting on all the body. to reproduce this error, simply have someone with seperated meshes/materials with xiexe toon and you will see. the request: to have that fixed, as well as it correctly reacting to light much like pbs metallic. i want to be able to hold a candle in my hand and the light halos the hands and slightly shines off my face or casts light shadows. stuff like that. As it is now, xiexe does a vague understanding that theres a light nearby, but only slightly applies it to the shader as a color enhancment rather than a light bouncing off the model.

This part of the office notes might interest you then Gearbell, namely the top part in the link above:

Support for forward rendered lights and objects. Toon Shader/Semi-Transparent Shaders will have tup to 14 lights affecting them.

kulzae commented 2 years ago

biggest issue and request - lighting. issue: the current version of xiexe cannot handle multiple nearby light sources. it "picks" only one part of the avatar then darkens the other parts as if it cant handle normal lighting on all the body. to reproduce this error, simply have someone with seperated meshes/materials with xiexe toon and you will see. the request: to have that fixed, as well as it correctly reacting to light much like pbs metallic. i want to be able to hold a candle in my hand and the light halos the hands and slightly shines off my face or casts light shadows. stuff like that. As it is now, xiexe does a vague understanding that theres a light nearby, but only slightly applies it to the shader as a color enhancment rather than a light bouncing off the model.

Is there a specific reason your using the toon shader then? I thought most of the point behind the shader is unrealistic representation of lights and shading. I know the point about it picking certain light sources and that will likely be remedied by some upcoming changes but your point about light casing and shining. Wouldn't a pbs shader be better for that?

GearBell commented 2 years ago

biggest issue and request - lighting. issue: the current version of xiexe cannot handle multiple nearby light sources. it "picks" only one part of the avatar then darkens the other parts as if it cant handle normal lighting on all the body. to reproduce this error, simply have someone with seperated meshes/materials with xiexe toon and you will see. the request: to have that fixed, as well as it correctly reacting to light much like pbs metallic. i want to be able to hold a candle in my hand and the light halos the hands and slightly shines off my face or casts light shadows. stuff like that. As it is now, xiexe does a vague understanding that theres a light nearby, but only slightly applies it to the shader as a color enhancment rather than a light bouncing off the model.

Is there a specific reason your using the toon shader then? I thought most of the point behind the shader is unrealistic representation of lights and shading. I know the point about it picking certain light sources and that will likely be remedied by some upcoming changes but your point about light casing and shining. Wouldn't a pbs shader be better for that?

because toon shader makes the colors pop. ive tried dozens of tricks with pbs and they all come out looking like clay. even with pbs specular and a ton of other tricks. toonshader just really makes the textures seen well and vibrant.

kulzae commented 2 years ago

biggest issue and request - lighting. issue: the current version of xiexe cannot handle multiple nearby light sources. it "picks" only one part of the avatar then darkens the other parts as if it cant handle normal lighting on all the body. to reproduce this error, simply have someone with seperated meshes/materials with xiexe toon and you will see. the request: to have that fixed, as well as it correctly reacting to light much like pbs metallic. i want to be able to hold a candle in my hand and the light halos the hands and slightly shines off my face or casts light shadows. stuff like that. As it is now, xiexe does a vague understanding that theres a light nearby, but only slightly applies it to the shader as a color enhancment rather than a light bouncing off the model.

Is there a specific reason your using the toon shader then? I thought most of the point behind the shader is unrealistic representation of lights and shading. I know the point about it picking certain light sources and that will likely be remedied by some upcoming changes but your point about light casing and shining. Wouldn't a pbs shader be better for that?

because toon shader makes the colors pop. ive tried dozens of tricks with pbs and they all come out looking like clay. even with pbs specular and a ton of other tricks. toonshader just really makes the textures seen well and vibrant.

There seems to be a bit of a consensus around using it for vibrant textures. I'm wondering if there can be an option added to the pbs shaders to get a similar effect. As it would prove useful in certain situations. Sort of like "emissive but not"

GearBell commented 2 years ago

biggest issue and request - lighting. issue: the current version of xiexe cannot handle multiple nearby light sources. it "picks" only one part of the avatar then darkens the other parts as if it cant handle normal lighting on all the body. to reproduce this error, simply have someone with seperated meshes/materials with xiexe toon and you will see. the request: to have that fixed, as well as it correctly reacting to light much like pbs metallic. i want to be able to hold a candle in my hand and the light halos the hands and slightly shines off my face or casts light shadows. stuff like that. As it is now, xiexe does a vague understanding that theres a light nearby, but only slightly applies it to the shader as a color enhancment rather than a light bouncing off the model.

Is there a specific reason your using the toon shader then? I thought most of the point behind the shader is unrealistic representation of lights and shading. I know the point about it picking certain light sources and that will likely be remedied by some upcoming changes but your point about light casing and shining. Wouldn't a pbs shader be better for that?

because toon shader makes the colors pop. ive tried dozens of tricks with pbs and they all come out looking like clay. even with pbs specular and a ton of other tricks. toonshader just really makes the textures seen well and vibrant.

There seems to be a bit of a consensus around using it for vibrant textures. I'm wondering if there can be an option added to the pbs shaders to get a similar effect. As it would prove useful in certain situations. Sort of like "emissive but not"

at that point it would be toon shader...

kulzae commented 2 years ago

But rendered in deferred with specular highlights and completely different shadow ramping. I'm just trying to point out possibilities rather than "we want everything crammed into a shader that is rendered in a non native pipeline"

GearBell commented 2 years ago

But rendered in deferred with specular highlights and completely different shadow ramping. I'm just trying to point out possibilities rather than "we want everything crammed into a shader that is rendered in a non native pipeline"

All I pointed out was xiexe has issues with lighting. The above people want more features. I just want the lighting fixed. There are many toon shaders that react well to light sources seen in a few games, even in vrchat. I just want the lighting fixed. That is all. There are many cartoon type characters Ive published that would benefit from lighting. It was also pointed out that they are already working on it, so I am content to wait for the results. To not cluster this github further, I reccomend any other material suggestions be posted in the discord, please.

3x1t-5tyl3 commented 2 years ago

@GearBell The light inconsistencies with different meshes (like my cut-up avatar) was fixed recently after I ree'd about it on discord lol https://discord.com/channels/402159838827905024/469131434628612116/885602838523289650

Although I want to note that most of the things that I'd personally want from xiexe are just more options.

OR

63 As that would negate every other shader anyhow. We're just limited in options at the moment for specific effects that we might want or the effect requires stacking the material causing one of the submeshes to be rendered twice over. Causing that higher inefficiency.

So in that regard; It's more of a "we want more options cause everything else kinda just sucks for cool visuals or is inefficient."

Some specific things for me: In no particular order

And honestly just tons of effects which normally would just be done with custom shaders. Which brings me personally back to the whole "why do we like poyomi" It's because it has tons of options and allows for all sorts of effects without the need of another shader. Which is neat and simple.

Or you just code your own shader.

So for all I give a crap about: Honestly I don't care for xiexe anymore and I'd rather time be spend towards a new engine for custom shaders so we wouldn't need to worry about xiexe anymore at all. Or at-least it would be a nice base to start off of for a custom shader.

TL;DR I don't care about xiexe as once custom shaders are out we wouldn't need to care anymore anyways.

TL;DR Part 2: Electric boogaloo: Other than that, mostly masking and if we can get more uv channels (like idk 4-8) that would be great as-well.

Geenz commented 2 years ago

So to address the lack of lighting (we're actually at 2 per pixel lights - everything else gets downgraded to per vertex), I'm going to be pushing the forward lighting changes that were originally going to be a part of CM. This will up the per-pixel light count to 16. That should make toon shaded (and semi-transparent) objects "pop" a bit more with lighting. This won't be a full fix though for that problem - that will be coming with the new engine next year.

Additionally, I'll toss in the AO changes that were coming with CM as well. That should mitigate overdarkening for pretty much all opaque objects, including toon shaded objects to some extent.

Geenz commented 2 years ago

So having had some time to parse @Enverex's screenshot there (and peeking at Poiyomi), I think it's worth saying that generally I'm avoiding a "megashader" approach to anything we add right now. For how Poiyomi is configured, it leverages a lot of Unity's built in variant systems to bake out different options into a final shader. This is fine mostly, but generally breaks from the shader best practices of "the right effect for the job" - you're really leveraging many effects that may or may not be a part of the final shader entirely for reasons of authoring a given look/feel. It feels like someone basically decided to try and unify many authoring flows into a single shader, which is less than ideal for most applications.

Even with the new engine, you're likely to see some templates for custom shaders that amount to PBS, maybe our own toon model, and so on. It's maybe a good idea to lump the toon shading model in the eventual engine into this discussion - not really sure yet.

AshtonSparx commented 2 years ago

Would we be able to have a "Toon Shader" folder that leverages lots of different variants for different jobs? While maintaining that Toonie look.

Like for example XiexeToons/Iridescence XiexeToons/dissolve

or what ever effect that shader is specialized for. So it comes with the basic Xiexe stuff, then with that added feature it's used for. Kind of like how PBS is done image

gentlecolts commented 2 years ago

Currently, one of the most interesting features of XieXe, to me at least, is that it is seemingly the only shader which claims to provide subsurface scattering.

Personally, I would love to see subsurface scattering implemented in PBR shaders, at least to the extent that it's possible without having a severe performance impact, and see the subsurface effect in XieXe or future toon shaders improved

Enverex commented 2 years ago

One of the big appeals of a megashader isn't the amount of features, it's the ability to mix and match functionality. I may not want all 400 features, but I want A and G. Someone else wants features B and F, etc. It's the ability to use whichever combinations you want on the fly which makes it very useful. That's also why Neos having the PBRs split out like that is often very annoying.

Geenz commented 2 years ago

Would we be able to have a "Toon Shader" folder that leverages lots of different variants for different jobs? While maintaining that Toonie look.

Like for example XiexeToons/Iridescence XiexeToons/dissolve

or what ever effect that shader is specialized for. So it comes with the basic Xiexe stuff, then with that added feature it's used for. Kind of like how PBS is done

Possibly - I'm contemplating adding more variant controls to the material inspector generally for the upcoming PBS consolidation as it stands. I'm not sure what that'll look like though yet, and I'd rather avoid another situation like the current PBS variant situation where we have tons of variants with inconsistencies in terms of what controls are available for them (blend mode and culling especially).

Khosumi commented 2 years ago

One of the big appeals of a megashader isn't the amount of features, it's the ability to mix and match functionality. I may not want all 400 features, but I want A and G. Someone else wants features B and F, etc. It's the ability to use whichever combinations you want on the fly which makes it very useful. That's also why Neos having the PBRs split out like that is often very annoying.

I agree with this. It makes the workflow easier and able to use a minimal amount of materials, rather than stacking 3 materials for something a single one could do.

This is one of those examples where I feel a singular shader is probably not a great way to go about achieving these sorts of effects. At least, not at the moment. Let's keep this to toon shading specifically.

I feel as though you missed the point of the video. The fact you can do all these effects at once using nothing more than masks shows the flexibility of the shader. People can mask out glitter for specific portions of the avatar, add parallax only within different places, etc, masks are a powerful tool on a shader that has all these functions. Also, the options should be available for creative freedom, if someone wants to use a toon shader to achieve abstract results, they should be able to.

I'm also not quite sure what you mean by not being "A great way to go about achieving these sorts of effects". The shader is made specifically for such features, and faking it through logix and layer stacking is a bad approach, you should use logix and such to alter the effect, not recreate it.

Geenz commented 2 years ago

@Khosumi What I'm saying is - very large shaders that try to do most of the things most of the time usually aren't a great idea for a variety of reasons. Optimization can become a hassle, ensuring that it runs well across all machines becomes a headache (especially when you factor in mobile SoCs), and there's also the fact that we'd need to basically reimplement Unity's shader variants in Neos which we may do at some point for custom shaders, but it doesn't make much sense to do that with baked-in shaders. Especially if it ends up being just for one shader.

Additionally, the technical debt of us taking on something as big as Poiyomi would bite us in a pretty big way later when we transition to the new engine. The new engine will implicitly be incompatible with all of the existing shaders given we will no longer be using Unity, requiring them to be re-implemented either entirely or partially from scratch. The amount of time and effort required for that lends to passing on having large multi-functional shaders like this, and instead adding more piecemeal features to existing shaders that can more easily be ported later. This also frees up more time to actually work on the various dependencies around custom shaders prior to the engine changeover.

Khosumi commented 2 years ago

i understand this point of view better. It is true tat the technical debt would be massive, considering the shader is quite feature full. I would be okay with waiting on the engine rework to have these functions, as i do believe it could make customization with shaders greater.

StarfishHidari commented 2 years ago

These are features I really want to have in the toon shader:

These would be nice to have, but I understand some stuff might block them from happening;

towneh commented 2 years ago

For me personally, I think the lack of masking options for all of the existing shader features is my largest obstruction to reproducing the look and feel that my Avatar has across multiple "platforms" where I can make use of Poiyomi 7/8 Pro such as VRChat, Chillout, LIV...

In an effort to keep my material count down and reduce draw calls, my avatars mostly consist of 4 materials e.g. image

As such I need to rely heavily on masking in order to apply various shader effects to specific areas of the material.

However here would be my top requirements:-

Detail Maps/Masks https://docs.unity3d.com/Manual/StandardShaderMaterialParameterDetail.html

I use these frequently to tile a seamless normal across materials, if I'm making fabrics, leather, skin etc. As I'm using 2K textures for the entire body (which consists of skin, hair, eyes etc) or for clothing, it would have a huge impact on the file size of the normal texture, which by nature does not compress very well due to the amount of detail in the image. Detail normals and masking allows me to reduce this requirement down to a small seamless image.

Matcap(s) Map/Masks In a basic sense I can apply a simple reflective gold colour to a greyscale mask to apply only to the bell, and not the surrounding UV in my atlas'd texture image

This is done in Poiyomi by the simple application of a mask: image

For my other use case below, on another material, I actually use two matcaps on top of each other (called Matcap and Matcap 2 in Poiyomi). This allows me to layer two reflection images to create a desired affect, in this case with leather or latex. I am also using masking here as well to fine-tune the strength in which the matcap applies to specific areas on the toplogy.

Without Matcaps (only specular): image

Enabling Matcap: image

Enabling Matcap 2: image

You can see that the reflection has far less influence around the seams and stitching of the leather, dulled across the yellow strips, and follows contours around the collar bone.

Here is a snippet from the mask UV image, which shows the top of the chest area as an example: image

More masking options to achieve the above can also greatly help with reducing filesizes on assets required. A simple 512 matcap used with a 1K greyscale mask, that compresses extremely well, will offer performance benefits.

Geenz commented 2 years ago

So digging through this, here's a summary as far as what I'm considering adding here. There are no timelines for any of this, and a good deal of this is longer term. Order is roughly how they will likely be released.

Various masking modes in Xiexe, err, generally

This generally makes sense I think given the variety of different effects that this can be use for. Though I'd like this to be more than Xiexe, and include PBS materials as well given its overall utility.

Expanded matcap support

This goes outside of the realm of toon shading, but there are some scenarios where you may not want to reflect the actual environment around you, or perhaps augment it. So I can look at expanding this into the PBS shaders during their upcoming consolidation Dual matcap isn't likely to make the cut though - it feels like that would be more useful in conjunction with a material blending system.

Subsurface scattering

This is something that's been on my mind recently, and is something that I'd like to have implemented for most material types. There's some performance considerations I need to take into account here though, especially given that we do have a bit of a memory bandwidth problem that generally comes with deferred rendering. Basically every detail we want in the deferred renderer has to be rendered into a "buffer". Generally speaking, the more of these buffers we render the more memory bandwidth we consume. So as a general rule you should be rendering as little as possible into extra buffers.

Layering

The description of layering thus far sounds a lot more like material blending as you'd see in Unreal Engine and others. I think there's tons of great utility for material blending, and we could probably do a better job of supporting something like this to better cut down the existing material stacking practices that people are using today which will eventually be deprecated with the new engine and custom shaders, while also potentially providing more robust support for the kinds of effects you could achieve. This will likely come with some caveats though:

All in all something like this could help with transitioning most usecases for stacked materials over to custom shaders far easier in the future as well. Until we get to that point though, expect there to be some kind of cost associated with this.

And now for the "maybes" in no particular order:

No AO on toon shaded objects

This is tricky one - as we can either have AO on all toon shaded objects, or no AO on all toon shaded objects. Making this more configurable through an "SSAO Mask" of sorts has its own set of complications, similar to the problem of subsurface scattering (more buffers = more bandwidth = less performance).

More "vibrant" PBS materials

This may actually be somewhat more feasible if I can understand what's causing even PBS specular materials to look duller than expected. @GearBell Can you provide me with more reference examples using PBS specular specifically?

And for the not happening:

"Megashaders"

Although we will likely see some functionality trickle into Neos in time that will allow for "shader variants", Neos itself will not be implementing megashaders to the scale of Poiyomi. With custom shaders you will be able to leverage shader variants with your custom shaders to potentially have "like" functionality, but at that point - that's entirely on content creators to reproduce and provide whatever functionality they wish to expose in their shaders.

That being said, some extent of ubershading is fine, such as having blend modes being available on single PBS material type that encompasses the vast majority of PBS material use cases, or masking for different PBS texture parameters to enable more visual effects.

BlueBoyBlitz commented 2 years ago

I'd like to chime in here since I actually took a picture of the shader not being vibrant recently, I put it side by side with Xiexe, 2021-09-20 04 43 17 The pbs is on the left, (I may have forgotten to swap the hat material) and the xiexe is on the right.

Geenz commented 2 years ago

Interestingly enough, this may be partially alleviated with color management. I’ll be asking that people create more comparisons between the two then.

epicEaston197 commented 2 years ago

this is my avatar PBS metallic is on the left with no smoothness no metallic all avatars have the same settings image image

epicEaston197 commented 2 years ago

existing material stacking practices that people are using today which will eventually be deprecated

I know some people that would quit the platform if this is removed perhaps you can make a transition thing that will automatically make your material stack into a thing

Geenz commented 2 years ago

existing material stacking practices that people are using today which will eventually be deprecated

I know some people that would quit the platform if this is removed perhaps you can make a transition thing that will automatically make your material stack into a thing

Please refer to the material layering section you directly quoted this from.

epicEaston197 commented 2 years ago

would this be automatic with existing material stacking? because existing content may break for a material stack to become a custom Layer would be preferable for existing content doesn't break

ProbablePrime commented 2 years ago

existing material stacking practices that people are using today which will eventually be deprecated

I know some people that would quit the platform if this is removed perhaps you can make a transition thing that will automatically make your material stack into a thing

Please refer to the material layering section you directly quoted this from.

That's here: https://wiki.neos.com/Things_to_Avoid

ModernBalloonie commented 2 years ago

I would love rim masking and parallax masking for a toon shader, and i would like to emulate something like this in neos eventually: image

This one is using poiyomi's rim masking and parallax features, though this is just an example of one of the cool effects i really want.

Small edit: Something like this i'd probably have to wait for actual custom shader support though, right?

ModernBalloonie commented 1 year ago

An idea for a future toon shader: Possibly being able to change Specular and Reflection smoothness seperately as well, and maybe multiple speculars at different smoothness levels?

EXAMPLE:

Here I have a normal, 0.9 smoothness with Poiyomi toon shader.

image

And i want to use the specular from the 0.5 shine that looks like this:

image

And if I combine the two speculars, 0.9 and 0.5 along with 0.9 reflectivity (which you can do with poiyomi toon shader)

image

It pulls off a nice stylized look and it looks really cool!