diff options
| author | yum <yum.food.vr@gmail.com> | 2024-07-15 16:26:31 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2024-07-15 16:26:56 -0700 |
| commit | fdcb4dee7e8c5dbc46dc1513b57ed14851876303 (patch) | |
| tree | 52221ef3860c0fa290f8dbf49aaf472ebc469969 | |
| parent | 8d3b2e400591f08941a02059ccfa58266eb69b04 (diff) | |
Vertex lights now affect clearcoat
| -rw-r--r-- | pbr.cginc | 18 | ||||
| -rw-r--r-- | tooner_lighting.cginc | 2 |
2 files changed, 19 insertions, 1 deletions
@@ -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); |
