소스 검색

Prevent SkinTangent shader from being added multiple times.

clementlandrin 1 년 전
부모
커밋
daeb0aa9bd
1개의 변경된 파일6개의 추가작업 그리고 4개의 파일을 삭제
  1. 6 4
      h3d/scene/Skin.hx

+ 6 - 4
h3d/scene/Skin.hx

@@ -192,11 +192,13 @@ class Skin extends MultiMaterial {
 				skinShader.MaxBones = maxBones;
 			for( m in materials )
 				if( m != null ) {
-					if( m.normalMap != null )
+					var s = m.mainPass.getShader(h3d.shader.SkinTangent);
+					if ( s != null )
+						m.mainPass.removeShader(s);
+					if( m.normalMap != null ) {
 						@:privateAccess m.mainPass.addShaderAtIndex(skinShader, m.mainPass.getShaderIndex(m.normalShader) + 1);
-					else {
-						if ( m.mainPass.getShader(h3d.shader.SkinTangent) == null )
-							m.mainPass.addShader(skinShader);
+					} else {
+						m.mainPass.addShader(skinShader);
 					}
 					if( skinData.splitJoints != null ) m.mainPass.dynamicParameters = true;
 				}