ShaderLab: Properties内でテクスチャを宣言する際には波括弧が必要
この前シェーダーを書いていたところ、
Shader error in 'TestShader': Parse error: syntax error, unexpected TVAL_ID at line 7
というエラーが出ました。
原因を調べてみたところ、
Properties内でテクスチャのプロパティを宣言する際に、
末尾に波括弧{}をつけ忘れていたのが原因のようでした。
シェーダー書いてるんですが、Textureのプロパティ宣言の際に、末尾に{}つけないとエラーになることに気づかずかなり時間を吸い取られました... 歴史的経緯があるみたいだけど、必要性がわからないし、公式ドキュメントでも詳しく触れられてないから罠感ある... pic.twitter.com/A9CyAxmjYU
— きり (@KiliWare) June 22, 2019
公式ドキュメントにもある通り、
2D, Cube, 3Dなどでテクスチャを使用する際は、
末尾に{}を追加する必要があるようです。
name ("display name", 2D) = "defaulttexture" {} name ("display name", Cube) = "defaulttexture" {} name ("display name", 3D) = "defaulttexture" {}
Unityのバージョンが5になるまでは、
波括弧の中にオプションを書くことができたようですが、
現在は削除されたようです。
つまり現在では波括弧の中にオプションが書かれることはなく、
意味のない記述ではあるものの、
書かない場合エラーが発生してしまうという状況になっています。
(しかし、Propertiesの中身がテクスチャ(2D, Cube, 3D)の宣言1行のみの場合、
エラーが発生せず問題なくコンパイルが通るため、謎です)
この件について詳しい情報をお持ちの方がいたら、
ブログのコメント欄かTwitterでリプライを頂きたいです...