使用できるシェーダー
clusterで使用できるシェーダー
clusterではUnityのBuilt-in Render Pipelineを使用しており、多くのアセットに付属しているシェーダーはそのまま動作します。ただし、ジオメトリシェーダーが使われているもの(形状が大きく変化するエフェクトなどに使われていることが多い)はiOSとMacで動作しません (Missing Materialと同じ紫色で表示されます)。
より多くのユーザーにワールドを利用してもらうため、確認を行うことをおすすめします。
シェーダーを自作する
以下の情報は参考として提供されるもので、プラットフォーム自体の最適化などによって将来変更される可能性があります。
clusterは複数のプラットフォーム(Windows, Mac, Android, iOS)と異なるUI (VRと非VR)で動作し、良質なワールドはその全てで正常に動作することが期待されます。
clusterが使用しているGraphics APIは以下のとおりです。
- Direct3D 11 (Windows)
- Metal (iOS / Mac)
- OpenGL ES 3 (Android)
これはgeometry shader (#pragma geometry …)が使えないことを意味します。
そのため、頂点数が動的に増減するエフェクトなどは、Unityのアニメーションとvertex shaderの組み合わせで実現することを推奨します。
ShaderLabのターゲットバージョンしては #pragma target 3.5 以下を推奨します。
clusterのVR対応はMulti-Pass Stereo Renderingを使っているので、ビルボードや水など両眼視差が影響するものを書くときには参考にしてください。
高速化Tips
モバイルGPUはデスクトップ環境と比較して、GPU-メモリ通信帯域が小さいことが多いため、メモリ読み込みが追加で発生するAlphaBlendやGrabPassは特に遅くなる傾向があります。
不透明でも成立するエフェクトをデザインする、透過部分にはAlphaCutを使うなどで問題が緩和される場合があります。