お世話になっております。
デプステクスチャを表示するシェーダーを書いたのですが、
カスタムシェーダーを付けたオブジェクトが描画されずに悩んでいます。
Standardシェーダーにするとデプスにも描画されるので、
Sphereのカスタムシェーダーに不足があるのだろうと思い調べてはみたのですが、
ZWrite OnやSV_DEPTHなどに当たったもののちょっと違うようで、
どうにも行き詰まってしまいました。
デプスにも描画されるカスタムシェーダーに必要な処理とはどのような処理でしょうか。
御教示のほど、何卒よろしくお願い致します。
SphereにStandardシェーダーを付けてカラーを表示
SphereにStandardシェーダーを付けてデプスを表示
カメラに付けているデプス表示シェーダー
Shader "Custom/Depth" { Properties { _MainTex("_MainTex", 2D) = ""{} } SubShader { Pass { Tags { "RenderType" = "Opaque" } CGPROGRAM #include "UnityCG.cginc" sampler2D _MainTex; sampler2D _CameraDepthTexture; #pragma target 5.0 #pragma vertex vert_img #pragma fragment frag fixed4 frag(v2f_img i) : COLOR { fixed4 re = UNITY_SAMPLE_DEPTH(tex2D(_CameraDepthTexture,i.uv)); return re; } ENDCG } } }
Sphereに付けているカスタムシェーダー
Shader "Unlit/Test" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_fog #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; half3 normal : NORMAL; }; struct v2f { float2 uv : TEXCOORD0; half3 normal: NORMAL; float4 vertex : SV_POSITION; }; sampler2D _MainTex; v2f vert (appdata v) { v2f o; o.normal = UnityObjectToWorldNormal(v.normal); o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag (v2f i) : SV_Target { fixed4 col = dot(i.normal,_WorldSpaceLightPos0.xyz); return col; } ENDCG } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/28 00:47