836 Views
October 20, 24
スライド概要
2024年10月に新横浜インディゲームもくもく会でLTした資料です。
フリーランスのTAです。 主にもくもく会でのLT資料などをアップロードしたいと思います。
NovaShaderをカスタマイズした話 おかひろ
自己紹介 おかひろ Twitter:@okahiro_p 個人で東方二次創作ゲーム作っています フリーランスのTA/グラフィックエンジニア 個人のゲームでもShaderやツール作成しまくって進捗悪い
NovaShaderとは UnityのParticleSystem(Shuriken)向け多機能Shader CyberAgentが開発 MITライセンス HLSLでかかれている URP用
NovaShaderの機能例 SoftParticle パーティクルのビルボードが地面など他のオブジェクトにめり込む場合の表現 SoftParticleなし SoftParticleあり
NovaShaderの機能例 DepthFade パーティクルのビルボードがカメラのNearClipより手前にくる場合の表現 DepthFadeなし DepthFadeあり
NovaShaderの機能例 Dissolve + Emission (Edge)
Distortion(歪み) NovaShaderのDistortionは半透明オブジェクトも歪ませることができる よく見かけるDistortionShaderの紹介記事は、半透明オブジェクト未対応のも のが多いので考慮が必要
よくあるDistortion “Unity Distortion”などで検索してヒットしたページを参考に作成した Distortion Shader ScreenPositionとSceneColorを使う例のやつ
半透明オブジェクトが・・・
なぜ? SceneColorノードは”_CameraOpaqueTexture”をとっているが、これは不透明 オブジェクト描画の結果なので、半透明オブジェクトはまだ描画されていない ため ShadowMap計算など ここで不透明オブジェクト描画して、 その結果を”_CameraOpaqueTexture”バッ ファに格納している 不透明オブジェクト描画 半透明オブジェクト描画 ポストエフェクトなど ※ざっくり描画パイプライン 半透明オブジェクト描画 (パーティクルなど) ”_CameraOpaqueTexture”を使って歪みオブ ジェクト描画
NovaShaderのDistortion 半透明オブジェクトも歪ませることができる
仕組み(ざっくり) “_CameraOpaqueTexture”は使わず、半透明オブジェクト描画結果と「どのぐ らい歪ませるかバッファ」をもとに歪ませる ShadowMap計算など 不透明オブジェクト描画 半透明オブジェクト描画 ここで不透明オブジェクト描画して、 その結果を”_CameraOpaqueTexture”バッ ファに格納している _CameraOpaqueTextureは使わない 半透明オブジェクト描画 (パーティクルなど) 歪みオブジェクトでどのぐらい歪ませるか (x,y)を専用バッファに描画 どのぐらい歪ませるかバッファ ポストエフェクトなど 半透明描画も終わった描画結果と、どこを どのぐらい歪ませるかバッファをあわせて 描画 ※ざっくり描画パイプライン 半透明込み描画結果
すごいぞNovaShader でもいくつか気になる点がある
気になる点1 歪ませる箇所とそうでない箇所の境目がパッキリしている
Distortionでは頂点アルファが効かない パーティクル用Shader Distortion用Shader Meshは端の部分に頂点アルファを乗せて作ってある パーティクル用Shaderには”Vertex Alpha Mode”があるのに、Distortion用 Shaderにはない!
カスタマイズ1 “どのぐらい歪ませるか”の値に頂点アルファをかけることで、Meshの端に向か うにつれて歪みを弱くする カスタムDistortionShader
気になる点2 歪ませる箇所とそうでない箇所の境目がパッキリしている(パート2) 球体Meshなど、頂点アルファを使えない場合
DistortionではRimが効かない パーティクル用Shader Distortion用Shader パーティクル用Shaderには”Rim”があるのに、Distortion用Shaderにはない! ※SoftParticlesやDepthFadeはあるのになぜ
カスタマイズ2 視線方向と法線の内積が0に近づくほど歪みを弱める カスタムDistortionShader
まとめ NovaShaderは超便利 Distortionはちょっと気になる点がある 頂点カラーのAlpha Rim カスタマイズすれば対応可能
ご清聴ありがとうございました