package speiger.src.coreengine.platform.graphics.api.shader.states;

import java.util.Objects;

import speiger.src.coreengine.platform.graphics.api.texture.states.TextureType;

public class Bindings {
	public record BufferBinding(String name, int binding, int slot, int bytes, BufferMode mode) {
		public BufferBinding {
			Objects.requireNonNull(name, "A name has to be provided");
			Objects.requireNonNull(mode, "A Mode has to be provided");
		}
	}
	
	public record TextureBinding(String name, int binding, int slot, TextureType type, TextureMode mode) {
		public TextureBinding {
			Objects.requireNonNull(name, "A name has to be provided");
			Objects.requireNonNull(type, "A TextureType has to be provided");
			Objects.requireNonNull(mode, "A Mode has to be provided");
		}
	}
	
	public static enum BufferMode {
		UNIFORM,
		STORAGE;
	}
	
	public static enum TextureMode {
		SAMPLER,
		IMAGE_BUFFER;
	}
}
