modify normals calculation in skinning for morphing

This commit is contained in:
QuantumCoderQC 2021-10-18 19:53:23 +02:00
parent 26a0fb8c5a
commit 2f77c5b060
1 changed files with 5 additions and 2 deletions

View File

@ -22,6 +22,9 @@ def skin_pos(vert):
vert.write_attrib('spos.xyz /= posUnpack;')
def skin_nor(vert, prep):
def skin_nor(vert, is_morph, prep):
rpdat = arm.utils.get_rp()
vert.write_attrib(prep + 'wnormal = normalize(N * (vec3(nor.xy, pos.w) + 2.0 * cross(skinA.xyz, cross(skinA.xyz, vec3(nor.xy, pos.w)) + skinA.w * vec3(nor.xy, pos.w))));')
if(is_morph):
vert.write_attrib(prep + 'wnormal = normalize(N * morphNor + 2.0 * cross(skinA.xyz, cross(skinA.xyz, morphNor) + skinA.w * morphNor)));')
else:
vert.write_attrib(prep + 'wnormal = normalize(N * (vec3(nor.xy, pos.w) + 2.0 * cross(skinA.xyz, cross(skinA.xyz, vec3(nor.xy, pos.w)) + skinA.w * vec3(nor.xy, pos.w))));')