34 lines
		
	
	
		
			677 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			677 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | import { GPU_CHUNK_BYTES } from './Constants.js'; | ||
|  | 
 | ||
|  | function getFloatLength( floatLength ) { | ||
|  | 
 | ||
|  | 	// ensure chunk size alignment (STD140 layout)
 | ||
|  | 
 | ||
|  | 	return floatLength + ( ( GPU_CHUNK_BYTES - ( floatLength % GPU_CHUNK_BYTES ) ) % GPU_CHUNK_BYTES ); | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | function getVectorLength( count, vectorLength = 4 ) { | ||
|  | 
 | ||
|  | 	const strideLength = getStrideLength( vectorLength ); | ||
|  | 
 | ||
|  | 	const floatLength = strideLength * count; | ||
|  | 
 | ||
|  | 	return getFloatLength( floatLength ); | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | function getStrideLength( vectorLength ) { | ||
|  | 
 | ||
|  | 	const strideLength = 4; | ||
|  | 
 | ||
|  | 	return vectorLength + ( ( strideLength - ( vectorLength % strideLength ) ) % strideLength ); | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | export { | ||
|  | 	getFloatLength, | ||
|  | 	getVectorLength, | ||
|  | 	getStrideLength | ||
|  | }; |