URP環境で動作するビルトインのMobileシェーダまとめてみた
Mobileとは、モバイル向けに軽量化されたシェーダー
詳しくは公式ドキュメント
Particles/Additive
インスペクター以下である
ソースコードは以下である。
Shader "Mobile/Particles/Additive" {
Properties {
_MainTex ("Particle Texture", 2D) = "white" {}
}
Category {
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" }
Blend SrcAlpha One
Cull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) }
BindChannels {
Bind "Color", color
Bind "Vertex", vertex
Bind "TexCoord", texcoord
}
SubShader {
Pass {
SetTexture [_MainTex] {
combine texture * primary
}
}
}
}
}
ポイントは、
SrcAlpha Oneであること
ライティングに影響されないこと
フォグの影響を受けること
パーティクルの色を赤(アルファ値0.9)、Planeの色を緑色(アルファ値0.5)。
※フォグなし
(1,0,0) * 0.9 + (0,1,0) * 1 = (0.9,1,0)
Particles/Alpha Blended
インスペクター以下である
ソースコードは以下である。
Shader "Mobile/Particles/Alpha Blended" {
Properties {
_MainTex ("Particle Texture", 2D) = "white" {}
}
Category {
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" }
Blend SrcAlpha OneMinusSrcAlpha
Cull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) }
BindChannels {
Bind "Color", color
Bind "Vertex", vertex
Bind "TexCoord", texcoord
}
SubShader {
Pass {
SetTexture [_MainTex] {
combine texture * primary
}
}
}
}
}
ポイントは、
SrcAlpha OneMinusSrcAlphaであること
ライティングに影響されないこと
フォグの影響を受けること
パーティクルの色を赤(アルファ値0.4)、Planeの色を緑色(アルファ値1)。
※フォグなし
(1,0,0) * 0.4 + (0,1,0) * (1-0.4) = (0.4,0,0) + (0,0.6,0) = (0.4,0.6,0)
Particles/Multiply
インスペクター以下である
ソースコードは以下である。
Shader "Mobile/Particles/Multiply" {
Properties {
_MainTex ("Particle Texture", 2D) = "white" {}
}
Category {
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" }
Blend Zero SrcColor
Cull Off Lighting Off ZWrite Off Fog { Color (1,1,1,1) }
BindChannels {
Bind "Color", color
Bind "Vertex", vertex
Bind "TexCoord", texcoord
}
SubShader {
Pass {
SetTexture [_MainTex] {
combine texture * primary
}
SetTexture [_MainTex] {
constantColor (1,1,1,1)
combine previous lerp (previous) constant
}
}
}
}
}
ポイントは、
Zero SrcColorであること
ライティングに影響されないこと
フォグの影響を受けること
パーティクルの色を赤(アルファ値1)、Planeの色を緑色(アルファ値1)。
※フォグなし
(1,0,0) * 0 + (0,1,0) * (1,0,0) = (0,0,0)
ちなみに、Particles/MultiplyでFogを適用すると、アルファ抜きされているテクチャの箇所もフォグの色が反映されている
Particles/Multiply
Particles/Additive
Skybox
インスペクター以下である
ソースコードは以下である。
Shader "Mobile/Skybox" {
Properties {
_FrontTex ("Front (+Z)", 2D) = "white" {}
_BackTex ("Back (-Z)", 2D) = "white" {}
_LeftTex ("Left (+X)", 2D) = "white" {}
_RightTex ("Right (-X)", 2D) = "white" {}
_UpTex ("Up (+Y)", 2D) = "white" {}
_DownTex ("Down (-Y)", 2D) = "white" {}
}
SubShader {
Tags { "Queue"="Background" "RenderType"="Background" "PreviewType"="Skybox" }
Cull Off ZWrite Off Fog { Mode Off }
Pass {
SetTexture [_FrontTex] { combine texture }
}
Pass {
SetTexture [_BackTex] { combine texture }
}
Pass {
SetTexture [_LeftTex] { combine texture }
}
Pass {
SetTexture [_RightTex] { combine texture }
}
Pass {
SetTexture [_UpTex] { combine texture }
}
Pass {
SetTexture [_DownTex] { combine texture }
}
}
}
6枚のテクスチャーをセットしてSkyboxを作成し、SkyboxMaterialにアタッチ
のちほど記事で執筆するCubemap方式のよりも設定できる項目が少なく、テクスチャを一々セットするのが面倒なSkybox
具体的なテクスチャ設定など下記を参照
参考
Discussion