pongeponge.hatenablog.jp
前の続き。
Properties色々
シェーダーのプロパティをザラッと書いた。
Properties {
[Header(Slider and Number)]
_Slider("Slider sample", Range(-5, 5)) = 1
_Float("Float sample", Float) = 0
_Int("Int sample", Int) = 0
[Header(Color and Vector)]
_Color("Color sample", Color) = (0,1,1,1)
_Vector("Vector sample", Vector) = (1,2,3,4)
[Header(Texture)]
_Texture2D("Texture2D sample", 2D) = "None" {}
_TextureCube("TextureCube sample", Cube) = "None" {}
_Texture3D("Texture3D sample", 3D) = "None" {}
}
こう書くとシェーダーファイルのInspetorはこうなる。

下の方のPropertiesにプロパティ名と説明が一覧になって出てる。
もう一つ、シェーダーをアタッチしてるMaterialでは、こう表示される。

注意した方がいいのはこのあたり。
- Range と Float プロパティーでは “13.37” のように 1 つの数字です。
- Color と Vector プロパティーでは “(1, 0.5, 0.2, 1)” のように括弧()で括る 4 つの数字です。
- テクスチャ( 2D , Cube )ではデフォルト値は空の文字列か内蔵のデフォルトテクスチャ: “ white ”、“ black ”、“ gray ”、“ bump ”
「floatなんだから1.2fっと」と安易な気持ちで書くとエラーが出る(出た&ハマった)
fは死の存在なので、fは書いてはいけない。
f死すべし慈悲はない。
Unity - マニュアル: ShaderLab :プロパティー
Unity - スクリプトリファレンス: MaterialPropertyDrawer
Subshader
シェーダーの中身とも言うべきSubshaderはこんな感じ。
Subshader {
[Tags]
[CommonState]
Passdef
[Passdef ...]
}
この中に処理をグリグリと書き込むわけです。
が。
正直ちょっとめんどくさい部分がありますよね。
Tags
どれを先に描画するとか透明より先にとか……実感を持ったことないので、わからん部分。
とりあえずまとめておく。
| Queueタグ | |
|---|---|
| タグ名 | 効果 |
| Background | 他より前にレンダリング |
| Geometry | デフォルト値 |
| AlphaTest | 透過情報を持ったものをαテストするらしい? |
| Transparent | ガラスやパーティクルはこれ |
| Overlay | 最後にレンダリングする |
| RenderTypeタグ | |
|---|---|
| タグ名 | 効果 |
| Opaque | 不透明。普通はこれ |
| Transparent | ほとんどの部分的に透過なシェーダー(Transparent、パーティクル、フォント、Terrain 追加パスシェーダー) |
| TransparentCutout | マスキングされた透過シェーダー(Transparent Cutout、2 パス植生シェーダー) |
| Background | Skybox シェーダー |
| Overlay | GUITexture、ハロー、フレアシェーダー |
| TreeOpaque | Terrain エンジン Tree の樹皮 |
| TreeTransparentCutout | Terrain エンジン Tree Leaves |
| TreeBillboard | Terrain エンジンビルボードの Tree |
| Grass | Terrain エンジンの Grass |
| GrassBillboard | Terrain エンジンビルボードの Grass |
| DisableBatchingタグ | |
|---|---|
| タグ名 | 効果 |
| True | ドローコール無効? |
| False | デフォルト値 |
| LODFading | ドローコール無効、Level of detailのスムーズな補完? |
| ForceNoShadowCastingタグ | |
|---|---|
| タグ名 | 効果 |
| True | 影を作らない |
| IgnoreProjectorタグ | |
|---|---|
| タグ名 | 効果 |
| True | プロジェクターの影響を受けない? |
| CanUseSpriteAtlasタグ | |
|---|---|
| タグ名 | 効果 |
| False | スプライトやアトラスでシェーダーが動かない場合Falseに設定 |
| PreviewTypeタグ | |
|---|---|
| タグ名 | 効果 |
| Sphere | デフォルト値。球でプレビュー |
| Plane | 板でプレビュー |
| Skybox | Skyboxでプレビュー |
よくわからない時は "RenderType"="Opaque"と書いて、後は放置でいいかな?
Unity - マニュアル: ShaderLab :サブシェーダータグ
Unity - マニュアル: Replaced Shaders でのレンダリング
何か多くなってきたのでこのへんで。

- 作者: 久富木隆一
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/09/24
- メディア: 大型本
- この商品を含むブログ (2件) を見る
