     vec3 color;
     int shader;
 };
-// struct Heightmap {
-//     vec3 position;
-//     vec3 size;
-//     //    sampler2D texture;
-//     vec3 color;
-//     int shader;
-// };
 struct Ray {
     vec3 origin;
     vec3 direction;


layout(location = 16) uniform int numLights = 1;
layout(location = 17) uniform int numSpheres = 2;
//layout(location = 18) uniform int numHeightmaps = 1;

/*layout(location = 64) uniform*/ Light lights[8];
/*layout(location = 128) uniform*/ Sphere spheres[8];
///*layout(location = 192) uniform*/ Heightmap heightmaps[8];

Intersection sphereIntersect(Ray ray) {
    Intersection ret;

    }
    return ret;
}
vec3 shade(int shader, vec3 color, vec3 point, vec3 normal,
           out float reflect_weight, out float refract_weight) {
    if(shader == DIFFUSE_SHADER) {
