質問編集履歴

1

シェーダーの内容を追加しました。

2022/10/17 03:44

投稿

StellaSplitter
StellaSplitter

スコア37

test CHANGED
File without changes
test CHANGED
@@ -28,7 +28,65 @@
28
28
  }
29
29
  }
30
30
  }
31
+ ```
32
+ シェーダー
33
+ ```Chromatic.shader
34
+ Shader "Custom/Chromatic aberration"
35
+ {
36
+ Properties
37
+ {
38
+ _MainTex ("Texture", 2D) = "white" {}
31
39
 
40
+ [Header(Red)]
41
+ _RedX ("Offset X", Range(-0.5, 0.5)) = 0.0
42
+ _RedY ("Offset Y", Range(-0.5, 0.5)) = 0.0
43
+
44
+ [Header(Green)]
45
+ _GreenX ("Offset X", Range(-0.5, 0.5)) = 0.0
46
+ _GreenY ("Offset Y", Range(-0.5, 0.5)) = 0.0
47
+
48
+ [Header(Blue)]
49
+ _BlueX ("Offset X", Range(-0.5, 0.5)) = 0.0
50
+ _BlueY ("Offset Y", Range(-0.5, 0.5)) = 0.0
51
+ }
52
+ SubShader
53
+ {
54
+ Tags { "RenderType"="Opaque" }
55
+
56
+ Pass
57
+ {
58
+ CGPROGRAM
59
+ #pragma vertex vert_img
60
+ #pragma fragment frag
61
+
62
+ #include "UnityCG.cginc"
63
+
64
+ sampler2D _MainTex;
65
+ float _RedX;
66
+ float _RedY;
67
+ float _GreenX;
68
+ float _GreenY;
69
+ float _BlueX;
70
+ float _BlueY;
71
+
72
+ fixed4 frag (v2f_img i) : SV_Target
73
+ {
74
+ fixed4 col = fixed4(1, 1, 1, 1);
75
+
76
+ float2 red_uv = i.uv + float2(_RedX, _RedY);
77
+ float2 green_uv = i.uv + float2(_GreenX, _GreenY);
78
+ float2 blue_uv = i.uv + float2(_BlueX, _BlueY);
79
+
80
+ col.r = tex2D(_MainTex, red_uv).r;
81
+ col.g = tex2D(_MainTex, green_uv).g;
82
+ col.b = tex2D(_MainTex, blue_uv).b;
83
+
84
+ return col;
85
+ }
86
+ ENDCG
87
+ }
88
+ }
89
+ }
32
90
  ```
33
91
 
34
92
  シーンビュー(色収差のエフェクトをかけています)