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
 | 
						|
};
 |