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件) を見る