private MeshRenderer[] GatherMeshes(ref Matrix4 proj, Camera camera, Material.PBRMaterial m) { List <MeshRenderer> meshes = new List <MeshRenderer>(); if (lightMesh != null) { lightMesh.Mat = lightMat; lightMesh.IsLight = true; lightMesh.CameraPosition = camera.EyePosition; lightMesh.IrradianceMap = HdriManager.Irradiance; lightMesh.PrefilterMap = HdriManager.Prefiltered; lightMesh.Projection = proj; lightMesh.Model = light.WorldMatrix; lightMesh.View = camera.View; lightMesh.LightColor = light.Color; lightMesh.LightPosition = light.Position; lightMesh.LightPower = light.Power; lightMesh.Near = camera.Near; lightMesh.Far = camera.Far; meshes.Add(lightMesh); } var mesh = GetCurrentMesh(ref proj, camera, m); if (mesh != null) { meshes.Add(mesh); } return(meshes.ToArray()); }
public void Release() { if (defaultBlack != null) { defaultBlack.Release(); defaultBlack = null; } if (defaultWhite != null) { defaultWhite.Release(); defaultWhite = null; } if (defaultGray != null) { defaultGray.Release(); defaultGray = null; } if (defaultDarkGray != null) { defaultDarkGray.Release(); defaultDarkGray = null; } HdriManager.Release(); if (mat != null) { mat.Release(); mat = null; } if (sphere != null) { sphere.Release(); sphere = null; } if (cube != null) { cube.Release(); cube = null; } if (glview != null) { FHost.Child = null; glview.Dispose(); glview = null; } }
void LoadMeshes() { LoadDefaultTextures(); try { string pcube = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "cube.obj"); RSMI.Importer importer = new RSMI.Importer(); List <RSMI.Containers.Mesh> meshes = importer.Parse(pcube); if (mat == null) { mat = new Material.PBRMaterial { Metallic = defaultBlack, Albedo = defaultDarkGray, Occlusion = defaultWhite, Roughness = defaultBlack, Height = defaultWhite, Thickness = defaultBlack, Emission = defaultBlack }; } if (tessMat == null) { tessMat = new Material.PBRTess { Metallic = defaultBlack, Albedo = defaultDarkGray, Occlusion = defaultWhite, Roughness = defaultBlack, Height = defaultBlack, Thickness = defaultBlack, Emission = defaultBlack }; } if (meshes.Count > 0) { cubeMesh = meshes[0]; cube = new MeshRenderer(meshes[0]); cube.Mat = mat; if (UIPreviewPane.Instance != null) { UIPreviewPane.Instance.SetMesh(cube); } } string psphere = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "sphere.obj"); importer = new RSMI.Importer(); meshes = importer.Parse(psphere); if (meshes.Count > 0) { sphereMesh = meshes[0]; sphere = new MeshRenderer(meshes[0]); sphere.Mat = mat; lightMesh = new MeshRenderer(meshes[0]); lightMesh.Mat = lightMat; } string prounded = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "cube-rounded.obj"); importer = new RSMI.Importer(); meshes = importer.Parse(prounded); if (meshes.Count > 0) { cubeRoundedMesh = meshes[0]; cubeRounded = new MeshRenderer(meshes[0]); cubeRounded.Mat = mat; } //NOTE TO SELF: Recreate the cylnder 3D object with better UV string pcyl = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "cylinder.obj"); importer = new RSMI.Importer(); meshes = importer.Parse(pcyl); if (meshes.Count > 0) { cylinderMesh = meshes[0]; cylinder = new MeshRenderer(meshes[0]); cylinder.Mat = mat; } string pplane = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "plane.obj"); importer = new RSMI.Importer(); meshes = importer.Parse(pplane); if (meshes.Count > 0) { planeMesh = meshes[0]; plane = new MeshRenderer(meshes[0]); plane.Mat = mat; } } catch (Exception e) { Log.Error(e); } }
public void Release() { if (renderStack != null) { renderStack.Release(); renderStack = null; } if (materialSettings != null) { materialSettings.Save(); } if (lightMat != null) { lightMat.Release(); lightMat = null; } if (defaultBlack != null) { defaultBlack.Release(); defaultBlack = null; } if (defaultWhite != null) { defaultWhite.Release(); defaultWhite = null; } if (defaultGray != null) { defaultGray.Release(); defaultGray = null; } if (defaultDarkGray != null) { defaultDarkGray.Release(); defaultDarkGray = null; } HdriManager.Release(); if (tessMat != null) { tessMat.Release(); tessMat = null; } if (mat != null) { mat.Release(); mat = null; } if (sphere != null) { sphere.Release(); sphere = null; } if (cube != null) { cube.Release(); cube = null; } if (cylinder != null) { cylinder.Release(); cylinder = null; } if (cubeRounded != null) { cubeRounded.Release(); cubeRounded = null; } if (plane != null) { plane.Release(); plane = null; } if (custom != null) { custom.Release(); custom = null; } if (lightMesh != null) { lightMesh.Release(); lightMesh = null; } if (glview != null) { FHost.Child = null; glview.Dispose(); glview = null; } }
private MeshRenderer GetCurrentMesh(ref Matrix4 proj, Camera camera, Material.PBRMaterial m) { if (previewType == PreviewGeometryType.Cube) { if (cube != null) { cube.Mat = m; cube.CameraPosition = camera.EyePosition; cube.IrradianceMap = HdriManager.Irradiance; cube.PrefilterMap = HdriManager.Prefiltered; cube.Projection = proj; cube.Model = previewObject.WorldMatrix; cube.View = camera.View; cube.LightColor = light.Color; cube.LightPosition = light.Position; cube.LightPower = light.Power; cube.Near = camera.Near; cube.Far = camera.Far; return(cube); } } else if (previewType == PreviewGeometryType.Sphere) { if (sphere != null) { sphere.Mat = m; sphere.CameraPosition = camera.EyePosition; sphere.IrradianceMap = HdriManager.Irradiance; sphere.PrefilterMap = HdriManager.Prefiltered; sphere.Projection = proj; sphere.Model = previewObject.WorldMatrix; sphere.View = camera.View; sphere.LightColor = light.Color; sphere.LightPosition = light.Position; sphere.LightPower = light.Power; sphere.Near = camera.Near; sphere.Far = camera.Far; return(sphere); } } else if (previewType == PreviewGeometryType.Cylinder) { if (cylinder != null) { cylinder.Mat = m; cylinder.CameraPosition = camera.EyePosition; cylinder.IrradianceMap = HdriManager.Irradiance; cylinder.PrefilterMap = HdriManager.Prefiltered; cylinder.Projection = proj; cylinder.Model = previewObject.WorldMatrix; cylinder.View = camera.View; cylinder.LightColor = light.Color; cylinder.LightPosition = light.Position; cylinder.LightPower = light.Power; cylinder.Near = camera.Near; cylinder.Far = camera.Far; return(cylinder); } } else if (previewType == PreviewGeometryType.Plane) { if (plane != null) { plane.Mat = m; plane.CameraPosition = camera.EyePosition; plane.IrradianceMap = HdriManager.Irradiance; plane.PrefilterMap = HdriManager.Prefiltered; plane.Projection = proj; plane.Model = previewObject.WorldMatrix; plane.View = camera.View; plane.LightColor = light.Color; plane.LightPosition = light.Position; plane.LightPower = light.Power; plane.Near = camera.Near; plane.Far = camera.Far; return(plane); } } else if (previewType == PreviewGeometryType.RoundedCube) { if (cubeRounded != null) { cubeRounded.Mat = m; cubeRounded.CameraPosition = camera.EyePosition; cubeRounded.IrradianceMap = HdriManager.Irradiance; cubeRounded.PrefilterMap = HdriManager.Prefiltered; cubeRounded.Projection = proj; cubeRounded.Model = previewObject.WorldMatrix; cubeRounded.View = camera.View; cubeRounded.LightColor = light.Color; cubeRounded.LightPosition = light.Position; cubeRounded.LightPower = light.Power; cubeRounded.Near = camera.Near; cubeRounded.Far = camera.Far; return(cubeRounded); } } else if (previewType == PreviewGeometryType.Custom) { if (custom != null) { custom.Mat = m; custom.CameraPosition = camera.EyePosition; custom.IrradianceMap = HdriManager.Irradiance; custom.PrefilterMap = HdriManager.Prefiltered; custom.Projection = proj; custom.Model = previewObject.WorldMatrix; custom.View = camera.View; custom.LightColor = light.Color; custom.LightPosition = light.Position; custom.LightPower = light.Power; custom.Near = camera.Near; custom.Far = camera.Far; return(custom); } } return(null); }
public void Release() { if (defaultBlack != null) { defaultBlack.Release(); defaultBlack = null; } if (defaultWhite != null) { defaultWhite.Release(); defaultWhite = null; } if (defaultGray != null) { defaultGray.Release(); defaultGray = null; } if (defaultDarkGray != null) { defaultDarkGray.Release(); defaultDarkGray = null; } if (irradiance != null) { irradiance.Release(); irradiance = null; } if (prefiltered != null) { prefiltered.Release(); prefiltered = null; } if (mat != null) { mat.Release(); mat = null; } if (sphere != null) { sphere.Release(); sphere = null; } if (cube != null) { cube.Release(); cube = null; } if (glview != null) { FHost.Child = null; glview.Dispose(); glview = null; } }
void LoadMeshes() { LoadDefaultTextures(); try { string pcube = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "cube.obj"); RSMI.Importer importer = new RSMI.Importer(); List <RSMI.Containers.Mesh> meshes = importer.Parse(pcube); if (mat == null) { mat = new Material.PBRMaterial { Metallic = defaultBlack, Albedo = defaultDarkGray, Occlusion = defaultWhite, Roughness = defaultBlack, Height = defaultWhite }; } if (meshes.Count > 0) { cubeMesh = meshes[0]; cube = new MeshRenderer(meshes[0]); cube.Mat = mat; if (UIPreviewPane.Instance != null) { UIPreviewPane.Instance.SetMesh(cube); } } string psphere = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "sphere.obj"); importer = new RSMI.Importer(); meshes = importer.Parse(psphere); if (meshes.Count > 0) { sphereMesh = meshes[0]; sphere = new MeshRenderer(meshes[0]); sphere.Mat = mat; } string prounded = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "cube-rounded.obj"); importer = new RSMI.Importer(); meshes = importer.Parse(prounded); if (meshes.Count > 0) { cubeRoundedMesh = meshes[0]; cubeRounded = new MeshRenderer(meshes[0]); cubeRounded.Mat = mat; } string pcyl = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "cylinder.obj"); importer = new RSMI.Importer(); meshes = importer.Parse(pcyl); if (meshes.Count > 0) { cylinderMesh = meshes[0]; cylinder = new MeshRenderer(meshes[0]); cylinder.Mat = mat; } string pplane = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Geometry", "plane.obj"); importer = new RSMI.Importer(); meshes = importer.Parse(pplane); if (meshes.Count > 0) { planeMesh = meshes[0]; plane = new MeshRenderer(meshes[0]); plane.Mat = mat; } } catch (Exception e) { Console.WriteLine(e.StackTrace); } }