internal static void UnloadData() { MyActorFactory.RemoveAll(); // many-to-one relation, can live withput owners, deallocated separately // MyComponentFactory<MyInstancingComponent>.RemoveAll(); //MyVoxelMesh.RemoveAll(); //MyDynamicMesh.RemoveAll(); MyRender11.Log.WriteLine("Unloading session data"); MyScene.RenderablesDBVH.Clear(); MyScene.GroupsDBVH.Clear(); MyClipmapFactory.RemoveAll(); MyInstancing.OnSessionEnd(); MyMeshes.OnSessionEnd(); MyLights.OnSessionEnd(); MyMaterials1.OnSessionEnd(); MyVoxelMaterials1.OnSessionEnd(); MyMeshMaterials1.OnSessionEnd(); MyTextures.OnSessionEnd(); MyBigMeshTable.Table.OnSessionEnd(); //MyAssetsLoader.ClearMeshes(); }
internal static MyMeshMaterialId GetMaterialId(ref MyMeshMaterialInfo desc, string assetFile = null) { var rk = CalculateRK(ref desc); if (!MaterialRkIndex.ContainsKey(rk)) { var id = MaterialRkIndex[rk] = new MyMeshMaterialId { Index = MaterialsPool.Allocate() }; desc.Id = id; desc.RepresentationKey = rk; MaterialsPool.Data[id.Index] = desc; MaterialProxyIndex[id] = MyMaterials1.AllocateProxy(); MaterialQueryResourcesTable.Add(id); MaterialNameIndex[desc.Name] = id; if (MERGABLE_MATERIAL_NAMES.Contains(desc.Name)) { MergableRKs.Add(desc.RepresentationKey); } else if (assetFile != null) { VRageRender.MyRender11.Log.WriteLine(String.Format("Asset {0} tries to overrwrite material {1} with different textures", assetFile, desc.Name.ToString())); } return(id); } return(MaterialRkIndex[rk]); }
internal static MyMeshMaterialId GetMaterialId(ref MyMeshMaterialInfo desc) { var rk = CalculateRK(ref desc); if (!MaterialRkIndex.ContainsKey(rk)) { var id = MaterialRkIndex[rk] = new MyMeshMaterialId { Index = MaterialsPool.Allocate() }; desc.Id = id; desc.RepresentationKey = rk; MaterialsPool.Data[id.Index] = desc; MaterialProxyIndex[id] = MyMaterials1.AllocateProxy(); MaterialQueryResourcesTable.Add(id); var nameIndex = desc.Name; if (MERGABLE_MATERIAL_NAMES.Contains(nameIndex)) { MergableRKs.Add(desc.RepresentationKey); } MaterialNameIndex[nameIndex] = id; return(id); } return(MaterialRkIndex[rk]); }
internal static MyMaterialProxyId GetMaterialProxyId(MyVoxelMaterialTriple materialSet) { if (!MaterialProxyTripleIndex.ContainsKey(materialSet)) { var matId = MaterialProxyTripleIndex[materialSet] = MyMaterials1.AllocateProxy(); MyMaterials1.ProxyPool.Data[matId.Index] = CreateProxy(materialSet); } return(MaterialProxyTripleIndex[materialSet]); }
internal static MyMaterialProxyId GetMaterialProxyId(MyVoxelMaterialTriple materialSet) { MyMaterialProxyId pid; if (!MaterialProxyTripleIndex.TryGetValue(materialSet, out pid)) { pid = MaterialProxyTripleIndex[materialSet] = MyMaterials1.AllocateProxy(); MyMaterials1.ProxyPool.Data[pid.Index] = CreateProxy(materialSet); } return(pid); }
internal static unsafe void InitSubsystems() { InitializeBlendStates(); InitializeRasterizerStates(); InitilizeSamplerStates(); MyCommon.Init(); MyPipelineStates.Init(); MyTextures.Init(); MyVertexLayouts.Init(); MyShaders.Init(); MyRwTextures.Init(); MyHwBuffers.Init(); MyMeshes.Init(); MyMeshTableSRV.Init(); MyMergeInstancing.Init(); MyGeometryRenderer.Init(); MyLightRendering.Init(); MyShadows.Init(); MyLinesRenderer.Init(); MySpritesRenderer.Init(); MyPrimitivesRenderer.Init(); MyFoliageRenderer.Init(); MyOutline.Init(); MyComponents.Init(); MyBillboardRenderer.Init(); // hardcoded limits MyDebugRenderer.Init(); MyGPUFoliageGenerating.Init(); MyScreenDecals.Init(); MyEnvProbeProcessing.Init(); MyShadowsResolve.Init(); MyAtmosphereRenderer.Init(); MyAAEdgeMarking.Init(); MyScreenPass.Init(); MyCopyToRT.Init(); MyBlendTargets.Init(); MyFXAA.Init(); MyDepthResolve.Init(); MyBloom.Init(); MyLuminanceAverage.Init(); MyToneMapping.Init(); MySSAO.Init(); MyHdrDebugTools.Init(); MySceneMaterials.Init(); MyMaterials1.Init(); MyVoxelMaterials1.Init(); MyMeshMaterials1.Init(); //MyShaderFactory.RunCompilation(); // rebuild }
internal static unsafe void InitSubsystems() { MyRwTextures.Init(); MyHwBuffers.Init(); MyPipelineStates.Init(); ResetShadows(MyRenderProxy.Settings.ShadowCascadeCount, RenderSettings.ShadowQuality.ShadowCascadeResolution()); MyRender11.Init(); MyCommon.Init(); SamplerStates.Init(); MyDepthStencilState.Init(); MyTextures.Init(); MyVertexLayouts.Init(); MyShaders.Init(); MyMeshes.Init(); MyMeshTableSRV.Init(); MyLightRendering.Init(); MyLinesRenderer.Init(); MySpritesRenderer.Init(); MyPrimitivesRenderer.Init(); MyOutline.Init(); MyBlur.Init(); MyTransparentRendering.Init(); MyFoliageComponents.Init(); MyBillboardRenderer.Init(); // hardcoded limits MyDebugRenderer.Init(); MyScreenDecals.Init(); MyEnvProbeProcessing.Init(); MyAtmosphereRenderer.Init(); MyCloudRenderer.Init(); MyAAEdgeMarking.Init(); MyScreenPass.Init(); MyCopyToRT.Init(); MyBlendTargets.Init(); MyFXAA.Init(); MyDepthResolve.Init(); MyBloom.Init(); MyLuminanceAverage.Init(); MyToneMapping.Init(); MySSAO.Init(); MyPlanetBlur.Init(); MyHdrDebugTools.Init(); MySceneMaterials.Init(); MyMaterials1.Init(); MyVoxelMaterials1.Init(); MyMeshMaterials1.Init(); }
internal static void UnloadData() { MyManagers.OnUnloadData(); MyActorFactory.RemoveAll(); // many-to-one relation, can live withput owners, deallocated separately // MyComponentFactory<MyInstancingComponent>.RemoveAll(); //MyVoxelMesh.RemoveAll(); //MyDynamicMesh.RemoveAll(); MyRender11.Log.WriteLine("Unloading session data"); // Remove leftover persistent debug draw messages m_debugDrawMessages.Clear(); MyScene.DynamicRenderablesDBVH.Clear(); if (MyScene.SeparateGeometry) { MyScene.StaticRenderablesDBVH.Clear(); } MyScene.GroupsDBVH.Clear(); MyScene.FoliageDBVH.Clear(); MyClipmapFactory.RemoveAll(); MyClipmap.UnloadCache(); MyInstancing.OnSessionEnd(); MyFoliageComponents.OnSessionEnd(); MyMeshes.OnSessionEnd(); MyLights.OnSessionEnd(); MyMaterials1.OnSessionEnd(); MyVoxelMaterials1.OnSessionEnd(); MyMeshMaterials1.OnSessionEnd(); MyScreenDecals.OnSessionEnd(); MyBigMeshTable.Table.OnSessionEnd(); MyPrimitivesRenderer.Unload(); MyTransparentRendering.OnSessionEnd(); //MyAssetsLoader.ClearMeshes(); }
internal static unsafe void InitSubsystems() { MyManagers.OnDeviceInit(); //MyRwTextures.Init(); MyHwBuffers.Init(); ResetShadows(MyShadowCascades.Settings.NewData.CascadesCount, RenderSettings.ShadowQuality.ShadowCascadeResolution()); MyRender11.Init(); MyCommon.Init(); MyVertexLayouts.Init(); MyShaders.Init(); MyMeshes.Init(); MyMeshTableSrv.Init(); MyLightRendering.Init(); MyLinesRenderer.Init(); MySpritesRenderer.Init(); MyPrimitivesRenderer.Init(); MyOutline.Init(); MyBlur.Init(); MyTransparentRendering.Init(); MyFoliageComponents.Init(); MyBillboardRenderer.Init(); // hardcoded limits MyDebugRenderer.Init(); MyScreenDecals.Init(); MyEnvProbeProcessing.Init(); MyAtmosphereRenderer.Init(); MyCloudRenderer.Init(); MyAAEdgeMarking.Init(); MyScreenPass.Init(); MyCopyToRT.Init(); MyBlendTargets.Init(); MyFXAA.Init(); MyDepthResolve.Init(); MyBloom.Init(); MyLuminanceAverage.Init(); MyToneMapping.Init(); MySSAO.Init(); MyHdrDebugTools.Init(); MySceneMaterials.Init(); MyMaterials1.Init(); MyVoxelMaterials1.Init(); MyMeshMaterials1.Init(); MyHBAO.Init(); try { if (m_settings.UseStereoRendering) { var openVR = new MyOpenVR(); MyStereoStencilMask.InitUsingOpenVR(); } } catch (System.Exception e) { if (!VRage.MyCompilationSymbols.DX11ForceStereo) { throw; } MyStereoStencilMask.InitUsingUndefinedMask(); } }