UnityでAlpha値を変更するshaderメモ
はじめに
これは自らの戒めのために記事である.参考にならない人も多いかもしれない.
背景情報
objファイルに記載されているvertexカラーをunityに反映させると同時にalpha値をいじりたくなった.
アルファ値を追加する前のコードは以下の通り.メッシュに記述された情報を参照して反映している.
_.shader
Shader "Custom/VertexColorShader" {
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert vertex:vert
#pragma target 3.0
struct Input {
float4 vertColor;
};
void vert(inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input, o);
o.vertColor = v.color;
}
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = IN.vertColor.rgb;
}
ENDCG
}
FallBack "Diffuse"
}
やったこと
今回はvectorColorのアルファではなく,別の値を代入できるようにする.
SurfaceOutputとやらを使っているので,Unity公式を参考にするとAlphaを代入できるらしい.
ほならばsurfacePutputに一行追加するだけで済むはず.
_.shader
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = IN.vertColor.rgb;
o.Alpha = 0.1 // ここに追加
}
しかし,alpha値は反映されなかった
解決
-
"RenderType"="Opaque"
を"RenderType"="Transparent" "Queue" = "Transparent"}
に変更
-
pragma
にalpha
を追加
- Opaqueというレンダリングタイプでは,alpha値を無視するようになっているらしい.Unity公式-レンダリングモード-
-
#pragma vertex
だけではalphaが使えない.ややこしい... Unity公式-pragmaスニペット-
"RenderType"="Opaque"
を"RenderType"="Transparent" "Queue" = "Transparent"}
に変更pragma
にalpha
を追加#pragma vertex
だけではalphaが使えない.ややこしい... Unity公式-pragmaスニペット-
以下,完成コード
_.shader
Shader "Custom/TransParentShader" {
SubShader {
Tags { "RenderType"="Transparent" "Queue" = "Transparent"}
Blend SrcAlpha OneMinusSrcAlpha
LOD 200
CGPROGRAM
#pragma surface surf Lambert vertex:vert alpha
#pragma target 3.0
struct Input {
float4 vertColor;
};
// fixed4 _Color;
void vert(inout appdata_full v, out Input o){
UNITY_INITIALIZE_OUTPUT(Input, o);
o.vertColor = v.color;
}
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = IN.vertColor.rgb;
o.Alpha = 0.1;
}
ENDCG
}
// 影を描写しない
FallBack "Transprent/Cutout/Diffuse"
}
Author And Source
この問題について(UnityでAlpha値を変更するshaderメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/sanjolin_chun/items/2aa5f76922da5f59be62著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .