public void updateMeshInfo() { if (reference != null) { foreach (GizmoPart g in gizmoParts) { GLMeshBufferManager.addInstance(ref g.meshVao, reference); GLMeshBufferManager.setInstanceSelectedStatus(g.meshVao, g.meshVao.instance_count - 1, g.active); } } }
public void generateMeshVao() { geom = getGeom(); meshVao = new GLMeshVao(); meshVao.type = TYPES.TEXT; meshVao.metaData = new MeshMetaData(); meshVao.metaData.batchcount = geom.indicesCount; meshVao.metaData.indicesLength = DrawElementsType.UnsignedInt; meshVao.vao = geom.generateVAO(); meshVao.material = new Material(); //TODO use a material from the font //Add instance GLMeshBufferManager.addInstance(meshVao, null, Matrix4.Identity, Matrix4.Identity, Matrix4.Identity); }
private void rt_SpecularTestScene() { //Once the new scene has been loaded, //Initialize Palettes Palettes.set_palleteColors(); //Clear Systems actionSys.CleanUp(); animationSys.CleanUp(); //Clear Resources resMgr.Cleanup(); resMgr.Init(); RenderState.activeResMgr = resMgr; ModelProcGen.procDecisions.Clear(); RenderState.rootObject = null; RenderState.activeModel = null; //Clear Gizmos RenderState.activeGizmo = null; //Clear RenderStats RenderStats.ClearStats(); //Stop animation if on bool animToggleStatus = RenderState.renderSettings.ToggleAnimations; RenderState.renderSettings.ToggleAnimations = false; //Setup new object Scene scene = new Scene(); scene.name = "DEFAULT SCENE"; //ADd Lights Light l = new Light(); l.Name = "Light 1"; l.localPosition = new Vector3(0.2f, 0.2f, -2.0f); l.Color = new MVector4(1.0f, 1.0f, 1.0f, 1.0f); l.Intensity = 100.0f; l.falloff = ATTENUATION_TYPE.QUADRATIC; Common.RenderState.activeResMgr.GLlights.Add(l); scene.children.Add(l); Light l1 = new Light(); l1.Name = "Light 2"; l1.localPosition = new Vector3(0.2f, -0.2f, -2.0f); l1.Color = new MVector4(1.0f, 1.0f, 1.0f, 1.0f); l1.Intensity = 100.0f; l1.falloff = ATTENUATION_TYPE.QUADRATIC; Common.RenderState.activeResMgr.GLlights.Add(l1); scene.children.Add(l1); Light l2 = new Light(); l2.Name = "Light 3"; l2.localPosition = new Vector3(-0.2f, 0.2f, -2.0f); l2.Color = new MVector4(1.0f, 1.0f, 1.0f, 1.0f); Common.RenderState.activeResMgr.GLlights.Add(l2); l2.Intensity = 100.0f; l2.falloff = ATTENUATION_TYPE.QUADRATIC; scene.children.Add(l2); Light l3 = new Light(); l3.Name = "Light 4"; l3.localPosition = new Vector3(-0.2f, -0.2f, -2.0f); l3.Color = new MVector4(1.0f, 1.0f, 1.0f, 1.0f); Common.RenderState.activeResMgr.GLlights.Add(l3); l3.Intensity = 100.0f; l3.falloff = ATTENUATION_TYPE.QUADRATIC; scene.children.Add(l3); //Generate a Sphere and center it in the scene Model sphere = new Mesh(); sphere.Name = "Test Sphere"; sphere.parent = scene; sphere.setParentScene(scene); MeshMetaData sphere_metadata = new MeshMetaData(); int bands = 80; sphere_metadata.batchcount = bands * bands * 6; sphere_metadata.batchstart_graphics = 0; sphere_metadata.vertrstart_graphics = 0; sphere_metadata.vertrend_graphics = (bands + 1) * (bands + 1) - 1; sphere_metadata.indicesLength = DrawElementsType.UnsignedInt; sphere.meshVao = new GLMeshVao(sphere_metadata); sphere.meshVao.type = TYPES.MESH; sphere.meshVao.vao = (new GMDL.Primitives.Sphere(new Vector3(), 2.0f, 40)).getVAO(); //Sphere Material Material mat = new Material(); mat.Name = "default_scn"; Uniform uf = new Uniform(); uf.Name = "gMaterialColourVec4"; uf.Values = new libMBIN.NMS.Vector4f(); uf.Values.x = 1.0f; uf.Values.y = 0.0f; uf.Values.z = 0.0f; uf.Values.t = 1.0f; mat.Uniforms.Add(uf); uf = new Uniform(); uf.Name = "gMaterialParamsVec4"; uf.Values = new libMBIN.NMS.Vector4f(); uf.Values.x = 0.15f; //Roughness uf.Values.y = 0.0f; uf.Values.z = 0.2f; //Metallic uf.Values.t = 0.0f; mat.Uniforms.Add(uf); mat.init(); resMgr.GLmaterials["test_mat1"] = mat; sphere.meshVao.material = mat; sphere.instanceId = GLMeshBufferManager.addInstance(ref sphere.meshVao, sphere); //Add instance scene.children.Add(sphere); //Explicitly add default light to the rootObject scene.children.Add(resMgr.GLlights[0]); scene.updateLODDistances(); scene.update(); //Refresh all transforms scene.setupSkinMatrixArrays(); //Save scene path to resourcemanager RenderState.activeResMgr.GLScenes["TEST_SCENE_1"] = scene; //Use input path //Populate RenderManager renderMgr.populate(scene); //Clear Instances renderMgr.clearInstances(); scene.updateMeshInfo(); //Update all mesh info scene.selected = 1; RenderState.rootObject = scene; //RenderState.activeModel = root; //Set the new scene as the new activeModel //Reinitialize gizmos RenderState.activeGizmo = new TranslationGizmo(); //Restart anim worker if it was active RenderState.renderSettings.ToggleAnimations = animToggleStatus; }