質問編集履歴
1
コード全文 画像の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,7 +2,55 @@
|
|
2
2
|
|
3
3
|
その際に、カメラとカメラに移されている頂点との距離を、以下のコードで取得しようとしています
|
4
4
|
|
5
|
+
|
6
|
+
|
7
|
+
コード全文に変更
|
8
|
+
|
5
9
|
```lang-HLSL
|
10
|
+
|
11
|
+
Shader "Hidden/DepthOfField"
|
12
|
+
|
13
|
+
{
|
14
|
+
|
15
|
+
Properties
|
16
|
+
|
17
|
+
{
|
18
|
+
|
19
|
+
_MainTex ("Texture", 2D) = "white" {}
|
20
|
+
|
21
|
+
_Depth("Depth",FLOAT) = 0.8
|
22
|
+
|
23
|
+
}
|
24
|
+
|
25
|
+
SubShader
|
26
|
+
|
27
|
+
{
|
28
|
+
|
29
|
+
// No culling or depth
|
30
|
+
|
31
|
+
Cull Off ZWrite Off ZTest Always
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
Pass
|
36
|
+
|
37
|
+
{
|
38
|
+
|
39
|
+
CGPROGRAM
|
40
|
+
|
41
|
+
#pragma vertex vert
|
42
|
+
|
43
|
+
#pragma fragment frag
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
#include "UnityCG.cginc"
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
float _Depth;
|
52
|
+
|
53
|
+
|
6
54
|
|
7
55
|
struct appdata
|
8
56
|
|
@@ -24,7 +72,7 @@
|
|
24
72
|
|
25
73
|
float4 vertex : SV_POSITION;
|
26
74
|
|
27
|
-
float d
|
75
|
+
float3 vertexWorldPos: TEXCOORD1;
|
28
76
|
|
29
77
|
};
|
30
78
|
|
@@ -42,17 +90,57 @@
|
|
42
90
|
|
43
91
|
|
44
92
|
|
45
|
-
|
93
|
+
o.vertexWorldPos = mul(unity_ObjectToWorld,v.vertex).xyz;
|
46
|
-
|
47
|
-
//distの値に応じてfragment内で分岐
|
48
|
-
|
49
|
-
o.dist = distance(_WorldSpaceCameraPos , vertexWorldPos);
|
50
94
|
|
51
95
|
|
52
96
|
|
53
97
|
return o;
|
54
98
|
|
55
99
|
}
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
sampler2D _MainTex;
|
104
|
+
|
105
|
+
sampler2D _CameraDepthTexture;
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
fixed4 frag (v2f i) : SV_Target
|
110
|
+
|
111
|
+
{
|
112
|
+
|
113
|
+
float depth= tex2D(_CameraDepthTexture,i.uv);
|
114
|
+
|
115
|
+
float4 col = tex2D(_MainTex, i.uv);
|
116
|
+
|
117
|
+
float dist = length(i.vertexWorldPos - _WorldSpaceCameraPos);
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
if (dist < _Depth) {
|
122
|
+
|
123
|
+
return depth;
|
124
|
+
|
125
|
+
}
|
126
|
+
|
127
|
+
else {
|
128
|
+
|
129
|
+
return col;
|
130
|
+
|
131
|
+
}
|
132
|
+
|
133
|
+
}
|
134
|
+
|
135
|
+
ENDCG
|
136
|
+
|
137
|
+
}
|
138
|
+
|
139
|
+
}
|
140
|
+
|
141
|
+
}
|
142
|
+
|
143
|
+
|
56
144
|
|
57
145
|
```
|
58
146
|
|
@@ -63,3 +151,9 @@
|
|
63
151
|
期待した結果になりません
|
64
152
|
|
65
153
|
私が勘違いしているところや別の方法はありませんでしょうか?
|
154
|
+
|
155
|
+
![現実](63bc15965aaa40e94ee6d8b31545ff58.png)![理想](f3057c8ec376ca667ccda2739e8146b5.png)
|
156
|
+
|
157
|
+
上:実行結果(カメラを動かすと描画が分かれている部分も移動する)
|
158
|
+
|
159
|
+
下:理想(これは直線的なので距離フォグのようにしたい)
|