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