public bool Init(bool noPixelShader, bool noPixelWrite, EPlatformType platforms) { RName noPsShader = RName.GetRName("Shaders/ShadingEnv/Sys/NoPixelShader.shadingenv"); var rc = CEngine.Instance.RenderContext; var shaderDesc = rc.CreateShaderDesc(noPsShader, "PS_Main", EShaderType.EST_PixelShader, new CShaderDefinitions(), platforms); if (shaderDesc == null) { return(false); } var ps = rc.CreatePixelShader(shaderDesc); SDK_GraphicsProfiler_SetEmptyPixelShader(CoreObject, ps.CoreObject); if (noPixelWrite) { CFrameBuffersDesc FBDesc = new CFrameBuffersDesc(); FBDesc.IsSwapChainBuffer = vBOOL.FromBoolean(false); FBDesc.UseDSV = vBOOL.FromBoolean(false); var mFrameBuffer = rc.CreateFrameBuffers(FBDesc); if (mFrameBuffer == null) { return(false); } CTexture2DDesc TexDesc = new CTexture2DDesc(); TexDesc.Init(); TexDesc.Width = 1; TexDesc.Height = 1; TexDesc.Format = EPixelFormat.PXF_R8G8B8A8_UNORM; TexDesc.BindFlags = (UInt32)(EBindFlags.BF_SHADER_RES | EBindFlags.BF_RENDER_TARGET); var Tex2D = rc.CreateTexture2D(TexDesc); CShaderResourceViewDesc SRVDesc = new CShaderResourceViewDesc(); SRVDesc.mTexture2D = Tex2D.CoreObject; var SRV = rc.CreateShaderResourceView(SRVDesc); mFrameBuffer.BindSRV_RT((UInt32)0, SRV); CRenderTargetViewDesc RTVDesc = new CRenderTargetViewDesc(); RTVDesc.mTexture2D = Tex2D.CoreObject; var RTV = rc.CreateRenderTargetView(RTVDesc); mFrameBuffer.BindRenderTargetView((UInt32)0, RTV); //depth stencil view; CDepthStencilViewDesc mDSVDesc = new CDepthStencilViewDesc(); mDSVDesc.Width = 1; mDSVDesc.Height = 1; var mDepthStencilView = rc.CreateDepthStencilView(mDSVDesc); mFrameBuffer.BindDepthStencilView(mDepthStencilView); SDK_GraphicsProfiler_SetOnePixelFrameBuffers(CoreObject, mFrameBuffer.CoreObject); } NoPixelShader = noPixelShader; NoPixelWrite = noPixelWrite; return(true); }
public bool InitEngine(string pkgName, CEngineDesc desc, bool isServer = false) { if (mNativeRttiManager == null) { PreInitEngine(); } InitVAssembly(isServer); IO.Serializer.TypeDescGenerator.Instance.BuildTypes(System.AppDomain.CurrentDomain.GetAssemblies(), (isServer ? ECSType.Server : ECSType.Client)); var typeRedirectionFile = FileManager.ProjectContent + "typeredirection.xml"; EngineNS.Rtti.TypeRedirectionHelper.Load(typeRedirectionFile); if (desc == null) { var rn = RName.GetRName($"{nameof(CEngineDesc)}.cfg"); desc = IO.XmlHolder.CreateObjectFromXML(rn) as CEngineDesc; if (desc == null) { desc = new CEngineDesc(); IO.XmlHolder.SaveObjectToXML(desc, rn); } } mDesc = desc; StartSystemThreads(); MetaClassManager.MetaDirectory = RName.GetRName("MetaClasses"); MetaClassManager.LoadMetaClasses(); return(true); }
public async System.Threading.Tasks.Task RefreshAllSaveFiles() { await Thread.AsyncDummyClass.DummyFunc(); var files = FileManager.GetFiles(FileManager.ProjectContent, "*.gms", System.IO.SearchOption.AllDirectories); foreach (var i in files) { var rn = FileManager._GetRelativePathFromAbsPath(i, FileManager.ProjectContent); var obj = await MeshManager.CreateMeshAsync(RenderContext, RName.GetRName(rn)); if (obj != null) { obj.SaveMesh(); } } files = FileManager.GetFiles(FileManager.ProjectContent, "*.material", System.IO.SearchOption.AllDirectories); foreach (var i in files) { var rn = FileManager._GetRelativePathFromAbsPath(i, FileManager.ProjectContent); var obj = await MaterialManager.GetMaterialAsync(RenderContext, RName.GetRName(rn)); if (obj != null) { obj.SaveMaterial(); } } files = FileManager.GetFiles(FileManager.ProjectContent, "*.instmtl", System.IO.SearchOption.AllDirectories); foreach (var i in files) { var rn = FileManager._GetRelativePathFromAbsPath(i, FileManager.ProjectContent); var obj = await MaterialInstanceManager.GetMaterialInstanceAsync(RenderContext, RName.GetRName(rn)); if (obj != null) { obj.SaveMaterialInstance(); } } }