前提・実現したいこと
unityでシェーダーを作成していますが、半透明部分がskyboxと被ると消える現象が出ています。
おそらくskyboxにもalphaが適用されていて、目的のオブジェクトより先にskyboxが描画され、更にその部分のzバッファの値が目的のオブジェクトより近いみたいな現象が発生しているのではと思われますが、具体的に確認する箇所などがわかりません。
skybox自体はデフォルトのDefault-Skyboxでも同じ現象が発生します。
該当のソースコード
シェーダー自体のソースコードは以下の内容です。全角の#は本来半角の#です
Shader "Custom/NewSurfaceShader" {
Properties
{
_Color("Color", Color) = (1,1,1,1)
_Alpha("Alpha", Range(0,1)) = 1.0
_Glossiness("Smoothness", Range(0,1)) = 0.5
_Metallic("Metallic", Range(0,1)) = 0.0
}
SubShader{
Tags{ "RenderType" = "Transparent" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert vertex:vert alpha
#pragma target 3.0
struct Input { float4 vertColor; }; half _Alpha; 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 = float4(IN.vertColor.r, IN.vertColor.g, IN.vertColor.b,1); o.Alpha = _Alpha; } ENDCG } FallBack "Diffuse"
}
試したこと
目的のオブジェクトのシェーダーをUnityデフォルトの「Standard」にしてRendering Modeを「Transparent」にすると問題は発生しません。
補足情報(FW/ツールのバージョンなど)
Unity 2018.1.6f1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/19 03:09