public void Split(int x, int y, int z) { int loc = (x << 2) + (y << 1) + z; if (nodes[loc] is Octree) ((Octree)nodes[loc]).Split(x,y,z); else nodes[loc] = new Octree(this.shader); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); Title = "univ engine"; shader = ShaderLibrary.Get("basic"); line_shader = ShaderLibrary.Get("line"); ObjLoader loader = new ObjLoader("teapot.obj"); model = loader.Assemble(); model.Rescale(0.02f); octree = new Octree(shader); octree.Rescale(10); axis = new Axis(line_shader); this.camera = new Camera(Width, Height); GL.Viewport(0, 0, Width, Height); /* lighting */ sunlight = new DirectionalLight(new BaseLight(new Vector3(1.0f, 0.5f, 0.2f), 1.0f), new Vector3(0, -1, -2)); ambient = new BaseLight(new Vector3(1.0f), 0.5f); point = new PointLight(new BaseLight(new Vector3(0.0f, 1.0f, 0.0f), 0.35f), new Attenuation(0.0f, 0.00f, 0.002f), new Vector3(7, 10, 0)); shader.Use(); /* f**k this shit for now */ //shader.SetBlock<DirectionalLight>("sunlight", ref sunlight); //shader.SetBlock<BaseLight>("ambient", ref ambient); shader.SetBaseLight("ambient", ambient); shader.SetDirectionalLight("sunlight", sunlight); shader.SetPointLight("pointLights[0]", point); GL.Enable(EnableCap.DepthClamp); GL.Enable(EnableCap.DepthTest); GL.DepthFunc(DepthFunction.Less); GL.Enable(EnableCap.CullFace); GL.CullFace(CullFaceMode.Back); GL.ClearColor(Color.LightGray); }