diff options
| -rw-r--r-- | lighting.cginc | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/lighting.cginc b/lighting.cginc index d72540d..23cdd09 100644 --- a/lighting.cginc +++ b/lighting.cginc @@ -117,11 +117,8 @@ float3 yumSH9(float4 n, float3 worldPos, inout LightIndirect light) { float3 L0 = float3(unity_SHAr.w, unity_SHAg.w, unity_SHAb.w); // L1 band - float3 L1 = float3( - dot(unity_SHAr.xyz, n.xyz), - dot(unity_SHAg.xyz, n.xyz), - dot(unity_SHAb.xyz, n.xyz) - ); + float3x3 L1m = float3x3(unity_SHAr.xyz, unity_SHAg.xyz, unity_SHAb.xyz); + float3 L1 = mul(L1m, n); // L2 band float4 v = float4(n.x * n.y, n.y * n.z, n.z * n.z, n.x * n.z); @@ -152,7 +149,7 @@ float3 yumSH9(float4 n, float3 worldPos, inout LightIndirect light) { float4 getIndirectDiffuse(v2f i, Pbr pbr, inout LightIndirect light) { float4 diffuse = 0; #if defined(FORWARD_BASE_PASS) - diffuse.xyz += max(0, yumSH9(float4(pbr.normal, 0), i.worldPos, light)); + diffuse.xyz += max(0, yumSH9(float4(i.normal, 1.0), i.worldPos, light)); #endif return diffuse; } @@ -187,7 +184,7 @@ void GetLighting(v2f i, Pbr pbr, out LightData data) { data.direct.color = lightColorIntensity.rgb * getShadowAttenuation(i); // Indirect lighting - float3 reflect_dir = -reflect(data.common.V, pbr.normal); + float3 reflect_dir = reflect(data.common.V, pbr.normal); float3 dominant_dir = getSpecularDominantDirection(pbr.normal, reflect_dir, pbr.roughness); data.indirect.dir = normalize(dominant_dir); @@ -195,7 +192,7 @@ void GetLighting(v2f i, Pbr pbr, out LightData data) { data.indirect.NoL = saturate(dot(pbr.normal, data.indirect.dir)); data.indirect.NoH = saturate(dot(pbr.normal, data.indirect.H)); #if defined(_CLEARCOAT) - float3 dir_cc = -reflect(data.common.V, i.normal); + float3 dir_cc = reflect(-data.common.V, i.normal); float3 H_cc = normalize(data.common.V + dir_cc); data.indirect.LoH_cc = saturate(dot(dir_cc, H_cc)); #endif |
