
Verは5.44です
【初めに】
上記の記事の続きの内容になります
【ポスプロの中身】

マテリアルの中身は上記のようになっています
パラメータコレクションのCAScaleは色収差の強度
スカラーパラメータのCA_Countは色収差の精度になります
float4 color = float4(0.0, 0.0, 0.0, 0.0);
float Texindex = 14;
float2 UV2 = float2(0.5,0.5);
float2 UVr = float2(0.5,0.5);
float2 UVg = float2(0.5,0.5);
float2 UVb = float2(0.5,0.5);
float3 sum = float3(0.0, 0.0, 0.0);
float3 sumr = float3(0.0, 0.0, 0.0);
float3 sumg = float3(0.0, 0.0, 0.0);
float3 sumb = float3(0.0, 0.0, 0.0);
float3 CA = float3(CAScale.r,CAScale.g,CAScale.b)*CAScale.a; //色収差用のAをRGBに適応
Count = floor(lerp(1,16,clamp(Count,0,1))+0.1); //色収差の精度用
float Scale[16] = { //処理用の配列作成
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
};
for(int i = 0; i<Count; i ++)
{
UV2 = UV-0.5; //計算用に中心を0に調整
UVr = (UV2*1/(1+Scale[i]/Count*CA.r))+0.5; //UVを中心から拡大する
UVg = (UV2*1/(1+Scale[i]/Count*CA.g))+0.5; //UVを中心から拡大する
UVb = (UV2*1/(1+Scale[i]/Count*CA.b))+0.5; //UVを中心から拡大する
UVr = clamp(UVr, float2(0.0,0.0),float2(1.0,1.0)); //UVを0-1に抑える
UVg = clamp(UVg, float2(0.0,0.0),float2(1.0,1.0)); //UVを0-1に抑える
UVb = clamp(UVb, float2(0.0,0.0),float2(1.0,1.0)); //UVを0-1に抑える
sumr += SceneTextureLookup(ViewportUVToSceneTextureUV(UVr,Texindex),Texindex,true); //ループ毎に加算する
sumg += SceneTextureLookup(ViewportUVToSceneTextureUV(UVg,Texindex),Texindex,true); //ループ毎に加算する
sumb += SceneTextureLookup(ViewportUVToSceneTextureUV(UVb,Texindex),Texindex,true); //ループ毎に加算する
}
sum = float3(sumr.r,sumg.g,sumb.b); //Vectorに結合
sum /= Count; //加算した回数で除算
return sum = sum;
コードは上記になっています
全体の処理内容としては、UVの拡大率を変えながらループ処理で加算を行い
最後に加算した回数で除算します
色収差用なので、RGBでそれぞれ別の拡大率を使用できるように組んでいます
今回の記事は以上になります