| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -4,7 +4,7 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			attribute vec3 vertexPosition; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			attribute vec2 vertexTexCoord; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			attribute vec3 vertexNormal; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			attribute vec3 vertexTangent; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			attribute vec4 vertexTangent; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			attribute vec4 vertexColor; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Input uniform values | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -52,7 +52,7 @@ mat3 transpose(mat3 m) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			void main() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Compute binormal from vertex normal and tangent | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    vec3 vertexBinormal = cross(vertexNormal, vertexTangent); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    vec3 vertexBinormal = cross(vertexNormal, vertexTangent.xyz) * vertexTangent.w; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Compute fragment normal based on normal transformations | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    mat3 normalMatrix = transpose(inverse(mat3(matModel))); | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -62,7 +62,7 @@ void main() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    fragTexCoord = vertexTexCoord*2.0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    fragNormal = normalize(normalMatrix*vertexNormal); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    vec3 fragTangent = normalize(normalMatrix*vertexTangent); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    vec3 fragTangent = normalize(normalMatrix*vertexTangent.xyz); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    fragTangent = normalize(fragTangent - dot(fragTangent, fragNormal)*fragNormal); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    vec3 fragBinormal = normalize(normalMatrix*vertexBinormal); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    fragBinormal = cross(fragNormal, fragTangent); | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -71,4 +71,4 @@ void main() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Calculate final vertex position | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    gl_Position = mvp*vec4(vertexPosition, 1.0); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} |