回答編集履歴
1
頂点カラー版を追記
answer
CHANGED
@@ -45,4 +45,36 @@
|
|
45
45
|
outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y);
|
46
46
|
|
47
47
|
faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
|
48
|
-
```
|
48
|
+
```
|
49
|
+
|
50
|
+
[追記]
|
51
|
+
FaceのColorは通常の動作と同様にFaceのTextureと乗算し、これとFONT SETTINGSのColor (Vertex)を乗算&スクリーン合成したパターンを追記します(コード的には大して違いはないですが...)。こちらの方が四隅に別々の色を設定してグラデーションにした場合にも対応できて便利そうですね。
|
52
|
+
|
53
|
+
```HLSL
|
54
|
+
float scale = input.param.y;
|
55
|
+
float bias = input.param.z;
|
56
|
+
float weight = input.param.w;
|
57
|
+
float sd = (bias - c) * scale;
|
58
|
+
|
59
|
+
float outline = (_OutlineWidth * _ScaleRatioA) * scale;
|
60
|
+
float softness = (_OutlineSoftness * _ScaleRatioA) * scale;
|
61
|
+
|
62
|
+
half4 outlineColor = _OutlineColor;
|
63
|
+
half4 texColor = tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y) * _FaceColor; // texColorは基本色とテクスチャ色の積とする
|
64
|
+
|
65
|
+
// 頂点色とtexColorを乗算&スクリーン合成
|
66
|
+
half3 screenColor = saturate((input.color.rgb - 0.5) * 2.0);
|
67
|
+
half3 multiplyColor = saturate(input.color.rgb * 2.0);
|
68
|
+
half3 modifiedTexColor = texColor.rgb * multiplyColor;
|
69
|
+
|
70
|
+
modifiedTexColor = modifiedTexColor + screenColor - modifiedTexColor * screenColor;
|
71
|
+
|
72
|
+
half4 faceColor = half4(modifiedTexColor, texColor.a); // 合成結果をfaceColorとする
|
73
|
+
|
74
|
+
outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y);
|
75
|
+
|
76
|
+
faceColor = GetColor(sd, faceColor, outlineColor, outline, softness);
|
77
|
+
```
|
78
|
+
|
79
|
+
インスペクタの設定
|
80
|
+

|