1
私は正常に動作カスタムノーマルマップされた+鏡面スプライトシェーダーをしましたrendertexture。しかし、レンダーテクスチャに描画しようとすると、私のスプライトは見えなくなります。 Unityのデフォルトのシェーダを使って他のスプライトと同じようにアルファが0に設定されていると思います。は
どうすればこの問題を解決できますか?
Shader "SG/_ShipSurfaceShader" {
Properties {
_MainTex ("Main texture", 2D) = "white" {}
_NormalTex ("Normal map", 2D) = "bump" {}
_SpecColor ("Specular colour", Color) = (1,1,1,1)
_SpecPower ("Specular power", Range (0.0,2.0)) = 0.5
}
SubShader {
Tags { "Queue"="Transparent" }
Blend SrcAlpha OneMinusSrcAlpha
LOD 200
CGPROGRAM
#pragma surface surf BlinnPhongTransparent alpha
inline fixed4 LightingBlinnPhongTransparent (SurfaceOutput s, fixed3 lightDir, half3 viewDir, fixed atten) {
half3 h = normalize (lightDir + viewDir);
fixed diff = max (0, dot (s.Normal, lightDir));
float nh = max (0, dot (s.Normal, h));
float spec = pow (nh, s.Specular*32.0) * s.Gloss;
fixed4 c;
c.rgb = (s.Albedo * _LightColor0.rgb * diff + _LightColor0.rgb * _SpecColor.rgb * spec) * (atten);
c.a = s.Alpha;
return c;
}
sampler2D _MainTex;
sampler2D _NormalTex;
half _SpecPower;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
o.Normal = UnpackNormal(tex2D (_NormalTex, IN.uv_MainTex));
o.Specular = _SpecPower;
o.Gloss = 1;
}
ENDCG
}
FallBack "Diffuse"
}
巨大な感謝。レンダリング・テクスチャの透明性にもかかわらず、私はこれがうまくいくかどうかを知らせますが、シェーダはバットから外れます。 –
それは働いていません。私はポストエフェクトでアルファブレンドされた2つのレンダリングターゲット、クォータレスではバックグラウンド、ゲームプレイオブジェクトではメインカメラを持っています。 3Dオブジェクトと従来のスプライトが描画されますが、シェーダを持つ私の船は見えません。私の船の図面をUnityのMobile/Particles/Alpha Blendedに変更すると、通常のマップライティングは行われません。あなたは 'それは通常の仕事になりますSpriteRenderer'にこの材料を置けば –
@DavidCoombesはそう、あなたの船は、シーン内の可視および/またはカメラのでしょうか?または何?いくつかのスクリーンショットをつけたり、何かを描けますか? **このシェーダは私のプロジェクトで動作しますが、私はあなたの中でどのように動作しなければならないのか分かりません。** – nipercop