//	NEB_GPU_Definitions.h
//
//	© 2026 by Jeff Weeks
//	See TermsOfUse.txt

#ifndef NEB_GPU_Definitions_h
#define NEB_GPU_Definitions_h

#include <simd/simd.h>

enum
{
	VertexAttributePosition		= 0,
//	VertexAttributeNormal		= ,	would be needed only for fancier lighting
	VertexAttributeTexCoords	= 1
};

//	For the GPU vertex function
enum
{
	BufferIndexVertexAttributes	= 0,
	BufferIndexViewProjection	= 1,
	BufferIndexModelMatrix		= 2,
	BufferIndexTilingMatrices	= 3,
	BufferIndexUpVector			= 4
};

//	For the GPU fragment function
enum
{
	//	BufferIndexColorSaturation may refer to
	//	  a ball's color saturation,
	//	  a cue stick's opacity,
	//	  a hand's surface's color, or
	//	  a checkerboard tile-wall's color.
	BufferIndexColoration = 0
};

//	A GPU fragment function typically uses
//	only one texture and one texture sampler at a time.
//	Additional TextureIndexes would be needed
//	only if the fragment function wanted
//	to combine two or more textures at render time.
enum
{
	TextureIndexPrimary	= 0
};
enum
{
	SamplerIndexPrimary	= 0
};

#endif /* NEB_GPU_Definitions_h */
