unity3d-jp / UnityChanToonShaderVer2_Project

UnityChanToonShaderVer2 Project / v.2.0.9 Release
3.8k stars 808 forks source link

Inconsistent Behavior of Baked Normal for Outline #117

Open crna-ruka opened 1 year ago

crna-ruka commented 1 year ago

Hi, I love this amazing shader. I've noticed that the results of Baked Normal for Outline seem to vary according to rotations of objects.

To Reproduce

  1. Open the sample scene in Baked Normal directory.
  2. Set Y rotations of each objects to 180. Much of the outlines disappear.

Screenshot screenshot_

Possible Solution

How about calculating the tangentTransform, at both line 76 of UCTS_Outline.cginc and line 82 of UCTS_Outline_Tess.cginc, in local space?

from float3x3 tangentTransform = float3x3(o.tangentDir, o.bitangentDir, o.normalDir);

to float3 bitangent = cross(v.normal, v.tangent.xyz) * v.tangent.w; float3x3 tangentTransform = float3x3(v.tangent.xyz, bitangent, v.normal);