ScreenPocket - 画面の隙間

Unityエンジニアの日々の雑記。たまにpython3、DirectX、PhotoshopScript(JavaScript)も触ります

ProjectSettings - Graphics Settings - Built-in shader Settings の設定差によるパッケージサイズの差

GraphicsSettings

http://docs.unity3d.com/ja/current/Manual/class-GraphicsSettings.html

の Built-in shader Settings ですが、モバイルだとほぼほぼDefferdRenderingすることもなさそうだし必要ない気がする。

遅延シェーディング、遅延ライティングとも、使用しない場合はそれぞれ “No Support” と指定すれば、ゲームのデータファイルのスペースを節約できます。 

ともあるので、「データファイルのスペース」が果たしてパッケージのサイズなのか起動後のメモリサイズなのかよくわからなかったので、とりあえずapkを作ってパッケージサイズだけでも比べてみた。 

※プロジェクトを作った直後のシーンでapk作成
Defferd,Defferd Reflection,Legacy Defferdが全てBuilt-in Shaderの場合

f:id:ScreenPocket:20160114000153p:plain

全てNo Supportの場合

f:id:ScreenPocket:20160114000438p:plain

という事で、
全てBuilt-in shader … 19,426,543 bytes
全てNo Support … 19,373,868 bytes

とパッケージサイズだけでも52,675 bytes(約50KB)の差ができました。

確か「シェーダは初めて使うときにロードされる(その負荷を防ぐためにShader.WarmupAllShaders()が有る)はずなので、Defferdレンダリングしないなら起動後もメモリに乗ることはなかろう」とは思うのですが、使いもしないDefferdのために容量50KBを残すのもナンなので、NoSupportにしておくべきかと思いました。

http://docs.unity3d.com/ja/current/ScriptReference/Shader.WarmupAllShaders.html

せっかくなので関連として、次はShaderVariantCollectionについても調べてみようと思います