summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2024-07-15 16:26:31 -0700
committeryum <yum.food.vr@gmail.com>2024-07-15 16:26:56 -0700
commitfdcb4dee7e8c5dbc46dc1513b57ed14851876303 (patch)
tree52221ef3860c0fa290f8dbf49aaf472ebc469969
parent8d3b2e400591f08941a02059ccfa58266eb69b04 (diff)
Vertex lights now affect clearcoat
-rw-r--r--pbr.cginc18
-rw-r--r--tooner_lighting.cginc2
2 files changed, 19 insertions, 1 deletions
diff --git a/pbr.cginc b/pbr.cginc
index a847414..27b140c 100644
--- a/pbr.cginc
+++ b/pbr.cginc
@@ -275,6 +275,24 @@ float4 getLitColor(
half_dir);
float cc_mask = _Clearcoat_Mask.SampleGrad(linear_repeat_s, i.uv, ddx(i.uv.x), ddy(i.uv.y));
pbr.rgb += clearcoat * saturate(dot(i.normal, direct_light.dir)) * cc_mask * 10;
+#if defined(VERTEXLIGHT_ON)
+ for (uint ii = 0; ii < 4; ii++) {
+ float3 vpos = float3(unity_4LightPosX0[ii], unity_4LightPosY0[ii], unity_4LightPosZ0[ii]);
+ float3 vl = normalize(vpos - i.worldPos);
+
+ half3 vhalf = Unity_SafeNormalize(half3(vl) + view_dir);
+ half vlh = saturate(dot(vl, vhalf));
+ half cc_vnh = saturate(dot(i.normal, vhalf));
+
+ clearcoat = FilamentClearcoat(
+ _Clearcoat_Roughness,
+ _Clearcoat_Strength,
+ cc_vnh,
+ vlh,
+ vhalf);
+ pbr.rgb += clearcoat * saturate(dot(i.normal, vl)) * cc_mask * 10;
+ }
+#endif
#endif
return float4(pbr.rgb, albedo.a);
diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc
index eadda2f..be06d69 100644
--- a/tooner_lighting.cginc
+++ b/tooner_lighting.cginc
@@ -154,7 +154,7 @@ v2f vert(appdata v)
void getVertexLightColorTess(inout tess_data i)
{
#if defined(VERTEXLIGHT_ON)
- float3 worldPos = mul(unity_ObjectToWorld, i.vertex).xyz;
+ float3 worldPos = mul(unity_ObjectToWorld, i.pos).xyz;
float3 view_dir = normalize(_WorldSpaceCameraPos - worldPos);
uint normals_mode = round(_Mesh_Normals_Mode);
bool flat = (normals_mode == 0);