function ShaderBlock( name )
{
	this.dependency_blocks = []; //blocks referenced by this block
	this.flag_id = -1;
	this.flag_mask = 0;
	this.events = null; //{};
	if(!name)
		throw("ShaderBlock must have a name");
	if(name.indexOf(" ") != -1)
		throw("ShaderBlock name cannot have spaces: " + name);
	this.name = name;
	this.code_map = new Map();
	this.context_macros = null;
}
A ShaderBlock represents a block of GLSL code that could be requested by a shader in order to obtain a functionality.
SBs are registered and given a number, then if a shader wants that functionality it could use #pragma shaderblock "sb_name"
it will be inserted in the material in the line of the pragma

@class ShaderBlock
@namespace LS
@constructor