Whitelist Unity Chan Toon Shader 2 for PC and Quest.
tracked
Lhun
UTS2 is a highly optimized and flexible shader developed by Nobuyuki Kobayashi, Community Evangelist @Unity Technologies Japan. (nobuyuki@unity3d.com)
They have taken notice of the popularity of VRChat, and have implemented a VRChat recommended settings button in the shader, as well as the ability to strip unused shader keywords before upload. In addition, there are a set of mobile compatible variants, making it one of the best possible situations for a shader with mobile optimization but a feature-set that will bring quest avatars more in line with their PC counterparts, with modern features such as alpha transparency (for cutout) at low cost.
This, however, is not just a toon shader. UTS2 supports PBR style standard shading that can be used standalone and in combination with things like reflection mapping and emission, while still maintaining correct directional lighting and a "toon ramp".
I see this as an opportunity to strengthen your relationship with Unity itself, and the Japanese community, just as adding support for VRM would.
VRChat has a long history of featuring unity chan on the default row of the avatars row. This seems like a natural progression of that relationship and branding.
In addition, there is other, new features as part of the Unity-Chan project, such as unity-chan springbone 2.0 which can bring features not unlike dynamicbone in a more performance oriented way, perhaps even for mobile.
The creator himself is aware of this campaign and this would make a large splash for the very active Japanese community, I believe.
Log In
Scout - VRChat Head of Quality Assurance
tracked
Lhun
are you blowing out in post processing? There's a fix for that.
Lhun
Also, if you speak Japanese, here is a very recent session by 小林信行 Nobuyuki Kobayashi (his comments are below!) https://www.youtube.com/watch?v=Ltcj4dNmbiI this covers some more advanced techniques of this shader that are used by companies like Bandai Namco, as well as the challenges that vrchat brings for this shader. pic for attention. :P
小林信行 Nobuyuki Kobayashi
こんにちは。
紹介文を書いていただいたLhunさんのご依頼で、日本コミュニティの皆様のために、日本語訳を載せさせていただきます。
ささやかなご協力ですが、皆様も応援していただけますと、大変嬉しいです。
よろしくお願いします。
小林信行(nobuyuki@unity3d.com)
Hi, all!
I've translated Lhun's recommendation into Japanese for the VRChat members in Japan.
Thank you, Lhun, for your words to UTS2.
Regards,
Nobu
-----
『ユニティちゃんトゥーンシェーダー2.0をPCおよびQuest向けのホワイトリストに載せる』ご提案
Lhun
UTS2は、Unity Technologies Japan所属のコミュニティエバンジェリスト小林信行氏( nobuyuki@unity3d.com )が開発した、高度に最適化されつつもフレキシブルなシェーダーです。
Unity Technologies Japanでは、VRChatの人気に鑑み、シェーダー内に「VRChat推奨設定ボタン」を実装した他、アップロード前に未使用のシェーダーキーワードを削除する機能を実装しました。さらに、UTS2にはモバイル向けにも高い互換性を持つシェーダーもあるので、モバイル向けに最適化を行いつつも、PC向けと見た目はほぼ変わらないQuest向けアバターを持って行きたい場合、最良の選択のひとつとなっています。また低負荷のカットアウト向けα透過などの最新機能も備えています。
UTS2は、単なるトゥーンシェーダーではありません。PBRスタイルのスタンダードシェーダー風のシェーディングもサポートするだけでなく、Matcapや自己発光のような様々な機能と組み合わせながらも、ディレクショナルライトの下で正確な「セル画風塗り分け」を維持することもできるのです。
今後VRMサポートを追加することと同様に、本提案は皆様方と、Unity本体および日本のコミュニティとの関係を強化する、よい機会になると、私は考えています。
デフォルトアバターの列にユニティちゃんが加えられていたことに関しまして、VRChatには長い歴史があります。本提案は、その関係とブランディングを考えれば、ごく自然な進展のように思えます。
さらに、ユニティちゃんプロジェクトには、その一環としてその他にも様々な機能が提供されており、例えば、ユニティちゃんスプリングボーン2.0のように、モバイル向けにおいてもパフォーマンスの面でより優れた機能を、ダイナミックボーンとは違う方法で導入できる可能性があります。
UTS2の作成者自身も本キャンペーンを周知しておりますし、大いに活発な日本のコミュニティに対し、本提案は大きな話題となるものと、私は確信しております。
※元の文意が変わらない範囲で、読みやすいように意訳をしています。
Silent
小林信行 Nobuyuki Kobayashi:
There are two main issues with UCTS that are problematic for VRC...
1) The final output lighting is clamped. Many worlds in VRC are made for HDR lighting and tonemapping and it's recommended by the developers to do so. But UCTS applies a saturate() function to the final lighting before output so characters in bright environments will appear greyed out due to their shader being clamped to 0-1 range while the rendering is in HDR space.
This could be fixed by removing the clamp functions and testing that the lighting appears properly under HDR conditions.
2) UCTS uses many keywords. This seems like a hard problem to solve. Keywords are very useful outside of VRC, because splitting the shader up into different variants increases performance. However, as the global limit in Unity is 255 and all loaded shaders in a single session will count towards it, having so many keywords in UCTS is a big problem. When VRC runs out of keywords, subsequent shaders trying to use keywords will break and appear incorrectly. VRC by default already has many keywords reserved by the default Unity operations.
This could be fixed by removing keywords. But some keywords are obviously useful to have. One solution that shader developers in the community have began to use is to reuse keywords used by Unity's shaders and Post-Processing Stack v2 (i.e. https://vrchat.canny.io/feature-requests/p/add-basic-keywords-to-loading-screen-so-no-shaders-break-ever-again) which works around the issue. Though it's a hack, it is necessary to avoid shaders being broken. Even so, the number of keywords available is limited. Then these can be aliased to more specific ones in the code as #defines.
i.e. #define _IS_ANGELRING_ON _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
But I feel like working around this problem might be outside the scope of the project.
小林信行 Nobuyuki Kobayashi
Hi, Silent. Thank you for your opinion.
There is my reply to you below.
1: I don't think you are right in every situation.
Firstly, the HDR scene-setting needs proper use of Tonemapping in the post-processings, but many worlds in VRChat seems to lack such ideas in their scene-settings.
It causes the whiteout problems of avatars' look, and many users feel a difficulty to fix them.
Secondly, the color clamp that you say is not a core problem of the way to remap SDR color space into HDR space. There are many problems, such as the vast difference between the top of the white range and so on.
Finally, I think it takes more time for many users to learn how to use the HDR scene-settings in their world.
From those points of view, I've made the specification of UTS2. Of course, it never means your opinion is wrong.
2: If you have a fear of the Shader Keywords trouble for UTS2, please use the button "Remove Unused Keywords/Properties from Material" from the UTS2 custom inspector.
Finally, your opinion is your own, especially concerning the specification of UTS2.
I feel there is almost no relation to this request.
1001
小林信行 Nobuyuki Kobayashi:
Hello, first of all thank you for showing interest in vrchat and responding.
My worry is that people will make content/worlds with HDR lights that are whiting out true HDR shaders because they test it with UTS2 shader and will not see the HDR range on their avatars when they test.
This happened in the past with the popular CubedParadox Toon Shader, a lot of worlds had terrible lighting because CubedParadox shader didn't alert the creators during testing.
UTS2 is very nice looking and popular for good reason, and the concerns are only about the proposed official vrchat recommendations mentioned above in the canny ticket.
小林信行 Nobuyuki Kobayashi
1001: Hi, 1001. Thank you for your opinion.
I think you have a little wrong understanding of UTS2.
UTS2 uses the HDR space in mixing emission and GI lighting.
Color clamping is only used for the setting of the composition of primary character colors between base colors and MatCaps in the final stage.
That is because primary character colors should be defined within the SDR color range for designers.
If you try to set primary character colors in HDR space, you could not decide any colors for your characters. That is why you should find the proper LUT between HDR and SDR color mapping.
In NPR, especially Anime like Cel-shaded rendering, every color should be treated not as albedo but as pure color information.
That is why UTS2 has high confidence especially within Pro users in Japan.
By the way, our conversation has no relation to this request.
If you want to continue to talk about the specification of UTS2, please move to issues of the UTS2 repository.
1001
小林信行 Nobuyuki Kobayashi: this ticket is about whitelisting the mobile version for vrchat, and my concerns are about only that.
The mobile version of UTS2 is simply not performant enough for Quest hardware, and the keywords and lighting problems are serious issues that need to be adressed on the PC version aswell.
小林信行 Nobuyuki Kobayashi
1001: Thank you for your reply.
If you have a fear for the Shader Keyword problem, please check the link below.
Concerning the performance of UTS2 mobile, it is almost the same as the mobile bumped specular shader.
In Japan, there are many contents made with UTS2 mobile, especially for iOS and Android. The basic spec of Oculus Quest is quite near such smartphones. Indeed many Oculus Quest and even Oculus Go contents are made with UTS2, like below.
UTS2 has a proven track record as a mobile toon shader for Unity.
Lhun
小林信行 Nobuyuki Kobayashi: I am not certain why some think that uts2 performace is low. Actually, the main reason why I made this request was because of it's performance compared to other shaders on mobile gpu, in the hope that pure quest content can have more shader features.
Is it possible to show a performance graph comparison with vrchat standard lite and vrchat toon with uts2 mobile?
小林信行 Nobuyuki Kobayashi
Lhun: It is difficult to check the precise performance of each shaders on GPU, especially for users.
I know the almost top performance of Mobile GPUs from my experience of game development. However, usually, it isn’t.
小林信行 Nobuyuki Kobayashi
There are a lot of ways to make the performance of shader improve better.
However, such improvements should be made after VRChat HQ has decided to take UTS2 mobile into their whitelist, I think.
To do that, we need a lot of supporters of this vote for the beginning.
Silent
小林信行 Nobuyuki Kobayashi: This is a late response, but because I ended up discussing it with Lhun a lot, I think I should add some notes here.
The main problem is with standardisation. VRC is a shared environment. On the one hand, there is no need for a scene to be designed with full physical accuracy in mind to say it's HDR compatible. But UTS2 covers over issues and breaks in other specific scenarios. If someone tests their content with UTS2, they assume their lighting is correct, even if materials using
- PBR Standard
- Any shader that reads the light values
- Unlit
are blown into white. This causes confusion and irritation among those users. In implementing these adjustments and limitations, you've caused segregation within the community.
It's possible to say that there's no wrong way to set up a scene, but I think it's reasonable to say that for VRC, the best thing to do is to cause the least amount of trouble for the fewest number of people. VRCs userbase is mostly people learning about Unity from scratch, and as a "live service" game it's normal for people to update their content as they learn and grow. Conversely, while many places in VRC have improved their lighting over time, UTS2 will prevent people from noticing these issues in their scene:
- lighting too bright
- no ambient light is set
- bloom is too intense
- no tonemapping curve (Neutral will preserve colours, so there's no reason not to use it)
Subsequently, there is less chance for them to improve.
To help with these issues in a broader context, I'm helping work on in-editor tools that will notify users of problems with their scene lighting.
Now, this issue is irrelevant for anywhere
outside
VRC. A game developer can modify and optimise the shader, just as they can control the lighting and postprocessing parameters. However, when it comes to designing for a multi-user environment, the best solution is the one that causes the least amount of trouble for the fewest number of people. In other words, this is specifically an issue with recommending the use of UTS2 for VRC
, not with UTS2 itself.