21 lines
		
	
	
		
			554 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			21 lines
		
	
	
		
			554 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#version 450
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// World to view projection matrix to correctly position the vertex on screen
							 | 
						||
| 
								 | 
							
								uniform mat4 WVP;
							 | 
						||
| 
								 | 
							
								// Matrix to transform normals from local into world space
							 | 
						||
| 
								 | 
							
								uniform mat3 N;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Position and normal vectors of the current vertex in local space
							 | 
						||
| 
								 | 
							
								// Leenkx packs the vertex data to preserve memory, so nor.z values are
							 | 
						||
| 
								 | 
							
								// saved in pos.w
							 | 
						||
| 
								 | 
							
								in vec4 pos; // pos.xyz, nor.w
							 | 
						||
| 
								 | 
							
								in vec2 nor; // nor.xy
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Normal vector in world space
							 | 
						||
| 
								 | 
							
								out vec3 wnormal;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void main() {
							 | 
						||
| 
								 | 
							
									wnormal = normalize(N * vec3(nor.xy, pos.w));
							 | 
						||
| 
								 | 
							
									gl_Position = WVP * vec4(pos.xyz, 1.0);
							 | 
						||
| 
								 | 
							
								}
							 |