SpriteStudio / SS5PlayerForUnity

OPTPiX SpriteStudio 5 Player for Unity
http://www.webtech.co.jp/spritestudio/
MIT License
39 stars 15 forks source link

V.1.3.x (PS4等)シェーダがコンパイルエラーで動作しない環境への対応方法について #180

Open MasamiYitsuse opened 8 years ago

MasamiYitsuse commented 8 years ago

PS4などの一部プラットフォームにおいて、シェーダのコンパイルでエラーが出てしまい正常に表示が行えない場合があります。 その際に、お手元にて下記の改変を行うことで、シェーダのコンパイルエラーを修正することが可能です。 ※ただし、使用しているUnityのバージョンなどに条件がございますので、修正箇所の後ろに書かれている動作条件もご参照下さい。

過去互換性の点から、現状公開されているシェーダは古いセマンティクス記述になっておりますため、ご要望のプラットフォームが新しいセマンティクス記述のみを受け付ける環境の場合、皆様のお手元にて記述を変更して下さいますようお願い申し上げます。

追記: SS5PU Ver.1.3.13以降のシェーダについては、自動判別する形になっておりますので、下記の修正は原則必要なくなっています。 (SV_POSITION・SV_Targetが存在している場合には同セマンティクスを使用し、存在しない場合には旧来のPOSITION・COLOR0を使用します) また、Unity4.5未満のバージョンにおいても、正常にコンパイルされます。


(修正箇所)

▼箇所1 ・Shader/Base/ShaderVertex_Particle_SpriteStudio.cginc ・Shader/Base/ShaderVertex_Sprite_SpriteStudio.cginc この2ファイル内の InputPS構造体のメンバー float4 Position : POSITION ↓ float4 Position : SV_POSITION

▼箇所2 ・Shader/Sprite_SpriteStudio_Mul.shader ・Shader/Particle_SpriteStudio_Add.shader ・Shader/Base/ShaderPixel_Particle_SpriteStudio.cginc ・Shader/Base/ShaderPixel_Sprite_SpriteStudio.csinc の4ファイル内の fixed4 PS_Main(InputPS Input) : COLOR ↓ fixed4 PS_Main(InputPS Input) : SV_Target

※SS5PU Ver.1.3.12b以降のシェーダでは、上記の修正について、該当ファイルの該当箇所に修正後の記述を注釈化してありますので、その注釈箇所を入れ替える形で対応可能です。 (例) float4 Position : POSITION; // float4 Position : SV_POSITION; ↓ // float4 Position : POSITION; float4 Position : SV_POSITION;

fixed4 PS_main(InputPS Input) : COLOR0 // fixed4 PS_main(InputPS Input) : SV_Target ↓ // fixed4 PS_main(InputPS Input) : COLOR0 fixed4 PS_main(InputPS Input) : SV_Target


(動作条件) ただし、この修正を適用できる環境に制限がございますので、ご注意下さい。

・ご使用のUnityが4.5以降であること。(Unity4.5未満では変更後のシェーダコンパイル時にエラーがでます)

・同一のプロジェクトの動作対象プラットフォームが複数ある場合に、(上記の変更してしまうと、逆に)シェーダのコンパイルエラーが出てしまうプラットフォームが出る可能性があります。その場合には、対象プラットフォーム用にビルドする際に、お手元で記述を切り替えるようにしてください。