<shader>{
	"name":"BaseColor",
	"ubo":[ "UBOGlobal", "UBOModel" ],
	"options": { "modelMatrix":true },
	"uniforms":[
		{ "name":"u_color", "type":"rgba" }
	]
}<\shader>
	
<materials>[
	{ "name":"BaseColorRed",	"uniforms":[{ "name":"u_color", "value":"ff0000ff" }], "options": { "blend":true, "sampleAlphaCoverage":false } },
	{ "name":"BaseColorGreen",	"uniforms":[{ "name":"u_color", "value":"00ff00ff" }], "options": { "blend":true, "sampleAlphaCoverage":false } },
	{ "name":"BaseColorGray",	"uniforms":[{ "name":"u_color", "value":"a0a0a0aa" }], "options": { "blend":true, "sampleAlphaCoverage":false } },
	{ "name":"BaseColorDGray",	"uniforms":[{ "name":"u_color", "value":"808080ff" }], "options": { "blend":true, "sampleAlphaCoverage":false } },
	{ "name":"BaseColorDDGray",	"uniforms":[{ "name":"u_color", "value":"404040ff" }], "options": { "blend":true, "sampleAlphaCoverage":false } },
	{ "name":"BaseColorBlack",	"uniforms":[{ "name":"u_color", "value":"000000ff" }], "options": { "blend":true, "sampleAlphaCoverage":false } }
]<\materials>
	
<vertex>
	#version 300 es
	layout(location=0) in vec3 a_position;

	uniform UBOGlobal{
		mat4	projViewMatrix;
		vec3	cameraPos;
		float	globalTime;
		vec2	screenSize;
		float	deltaTime;
	};

	uniform UBOModel{
		mat4 	modelMatrix;
		mat3	normalMatrix;
	};

	void main(void){
		//vec4 world_pos = modelMatrix * vec4( a_position, 1.0 );
		//gl_Position = projViewMatrix * world_pos;

		gl_PointSize	= 8.0;
		gl_Position		= projViewMatrix * modelMatrix * vec4( a_position, 1.0 );
	}
<\vertex>

<fragment>
	#version 300 es
	precision mediump float;

	const vec2 UV_CENTER = vec2( 0.5 ); 

	uniform vec4 u_color;
	out vec4 oFragColor;

	void main(void){ 

		vec2 coord = gl_PointCoord - UV_CENTER; 
		oFragColor = vec4( u_color.rgb, smoothstep( 0.5, 0.45, length(coord) ) ); 

		//oFragColor = u_color; 
	}
<\fragment>