現在、画像がありそれをオブジェクトに対しスクリーン座標で映して、カメラから見た時画像がそのまま見えるような形にしています。
ここから、描画点(?)とカメラを繋ぐベクトルと法線ベクトルの角度が一定以上を超えると透明になるようにしたいと思っています。
いわゆるリムライティングというものの光る部分を透明にしようという感じです。
このコードでは透明にすることができているかの確認のためにX座標に対して透明度を設定していて、主にその部分を書き換えて目標を達成しようとしていますが、どうやってデータを参照し角度を求めるのかの書き方がわかりません。
Cg/HLSL
1SubShader{ 2 Pass{ 3 Tags{ "RenderType" = "Transparent" "Queue" = "Transparent" } 4 Blend SrcAlpha OneMinusSrcAlpha 5 CGPROGRAM 6 #include "UnityCG.cginc" 7 #pragma vertex vert 8 #pragma fragment frag 9 #pragma target 3.0 10 11 uniform sampler2D _MainTex; 12 13 float4 vert(appdata_base v) : POSITION{ 14 return mul(UNITY_MATRIX_MVP, v.vertex); 15 } 16 fixed4 frag(float4 sp : WPOS) : COLOR{ 17 //fixed4 col = fixed4(float2(sp.x / _ScreenParams.x,1-sp.y / _ScreenParams.y),0,1); 18 fixed4 col = tex2D(_MainTex,(float2(sp.x / _ScreenParams.x,1 - sp.y / _ScreenParams.y + 0.059))); 19 fixed alpha = sp.x / _ScreenParams.x;//この部分でアルファ値を演算 20 col.a = alpha; 21 return col; 22 } 23 24 ENDCG 25 } 26 }
あとWPOSとVPOSの違いってなんですか
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。