着弾点に球体オブジェクトを置き、「デプスフェイル法」の記事で紹介されているようなテクニックを使って、球が他のオブジェクトと交差している部分だけを塗るというのはどうでしょう。
一例として、球体に下記のマテリアルを使ったところ...
ShaderLab
1Shader "Unlit/ExplosionArea"
2{
3 Properties
4 {
5 _Color ("Color", Color) = (1.0, 0.0, 0.0, 0.5)
6 }
7 SubShader
8 {
9 Tags {"RenderType"="Opaque" "Queue"="Geometry+1"}
10
11 CGINCLUDE
12 half4 _Color;
13 float4 vert(float4 vertex : POSITION) : SV_POSITION
14 {
15 return UnityObjectToClipPos(vertex);
16 }
17 half4 frag() : SV_Target
18 {
19 return _Color;
20 }
21 ENDCG
22
23 Pass
24 {
25 // 第1パスでは画面上に色は塗らず、ステンシルの構築だけを行う
26 ColorMask 0
27 ZWrite Off
28
29 // 前面・背面両方について処理を行う
30 Cull Off
31
32 // すでに描画された不透明オブジェクト表面のうち、このオブジェクトに
33 // 包まれている領域がステンシル値1になるようにする
34 Stencil
35 {
36 ZFailFront DecrWrap
37 ZFailBack IncrWrap
38 }
39
40 CGPROGRAM
41 #pragma vertex vert
42 #pragma fragment frag
43 ENDCG
44 }
45 Pass
46 {
47 Cull Front
48 ZTest Always
49 ZWrite Off
50 Blend SrcAlpha OneMinusSrcAlpha
51
52 // 第2パスで、ステンシル値が0でない領域にだけ色を塗る
53 Stencil
54 {
55 Ref 0
56 Comp NotEqual
57 }
58
59 CGPROGRAM
60 #pragma vertex vert
61 #pragma fragment frag
62 ENDCG
63 }
64 }
65}
下図のような見え方になりました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/20 22:59