void CreatePreviewMeshesActor(CGfxMesh mesh) { if (mesh == null) { return; } mPreviewActor = NewMeshActor(mesh); mPreviewActor.Placement.Location = new EngineNS.Vector3(0.0f, 0.0f, 0.0f); mPreviewSceneControl.AddUniqueActor(mPreviewActor); mPreviewActor.GetComponentMesh(null).SetPassUserFlags(1); var nu = InitUIDrawer(); }
GActor NewMeshActor(CGfxMesh mesh) { var rc = CEngine.Instance.RenderContext; var actor = new EngineNS.GamePlay.Actor.GActor(); actor.ActorId = Guid.NewGuid(); var placement = new EngineNS.GamePlay.Component.GPlacementComponent(); actor.Placement = placement; var meshComp = new EngineNS.GamePlay.Component.GMeshComponent(); meshComp.SetSceneMesh(rc.ImmCommandList, mesh); actor.AddComponent(meshComp); return(actor); }
public void CookViewportMeshToPassInMultiPassMode(CRenderContext RHICtx, CGfxShadingEnv ShaderEnv, UInt32 ActivePassIndex, CGfxCamera Camera, CGfxMesh ViewportMesh) { if (ViewportMesh == null) { Profiler.Log.WriteLine(Profiler.ELogTag.Error, "@Graphic", $"ViewportViewError!!!", ""); System.Diagnostics.Debug.Assert(false); return; } if (ActivePassIndex > mPassArray.Count - 1) { System.Diagnostics.Debug.Assert(false); return; } ViewportMesh.MeshPrimitives.PreUse(false); var refMtlMesh = ViewportMesh.MtlMeshArray[0]; if (refMtlMesh == null) { System.Diagnostics.Debug.Assert(false); return; } mPassArray[(int)ActivePassIndex].RenderPipeline.RasterizerState = mRasterState; mPassArray[(int)ActivePassIndex].RenderPipeline.DepthStencilState = mDepthStencilState; mPassArray[(int)ActivePassIndex].RenderPipeline.BlendState = mBlendState; mPassArray[(int)ActivePassIndex].BindShaderTextures(refMtlMesh); refMtlMesh.GetSamplerBinder(RHICtx, mPassArray[(int)ActivePassIndex].Effect.ShaderProgram, mSampler4Cook); mPassArray[(int)ActivePassIndex].ShaderSamplerBinder = mSampler4Cook; ShaderEnv.BindResources(ViewportMesh, mPassArray[(int)ActivePassIndex]); mPassArray[(int)ActivePassIndex].BindGeometry(ViewportMesh.MeshPrimitives, 0, 0); mPassArray[(int)ActivePassIndex].ViewPort = mViewport; mPassArray[(int)ActivePassIndex].BindCBuffer(mPassArray[(int)ActivePassIndex].Effect.ShaderProgram, mPassArray[(int)ActivePassIndex].Effect.CacheData.CBID_Camera, Camera.CBuffer); mPassArray[(int)ActivePassIndex].BindCBuffer(mPassArray[(int)ActivePassIndex].Effect.ShaderProgram, mPassArray[(int)ActivePassIndex].Effect.CacheData.CBID_View, mScreenViewCB); return; }
public void CookViewportMeshToPass(CRenderContext RHICtx, CGfxShadingEnv ShaderEnv, CGfxCamera Camera, CGfxMesh ViewportMesh) { if (ViewportMesh == null) { Profiler.Log.WriteLine(Profiler.ELogTag.Error, "@Graphic", $"ViewportViewError!!!", ""); System.Diagnostics.Debug.Assert(false); return; } if (mPass == null) { System.Diagnostics.Debug.Assert(false); return; } ViewportMesh.MeshPrimitives.PreUse(false); var refMtlMesh = ViewportMesh.MtlMeshArray[0]; if (refMtlMesh == null) { return; } mPass.RenderPipeline.RasterizerState = mRasterState; mPass.RenderPipeline.DepthStencilState = mDepthStencilState; mPass.RenderPipeline.BlendState = mBlendState; mPass.BindShaderTextures(refMtlMesh); //if(mPass.ShaderSamplerBinder==null) //{ // mPass.ShaderSamplerBinder = new CShaderSamplers(); //} //refMtlMesh.GetSamplerBinder(RHICtx, mPass.Effect.ShaderProgram, mPass.ShaderSamplerBinder); //var tempSampler = new CShaderSamplers(); var tempSampler = mCookVPMeshSampler; refMtlMesh.GetSamplerBinder(RHICtx, mPass.Effect.ShaderProgram, tempSampler); mPass.ShaderSamplerBinder = tempSampler; ShaderEnv.BindResources(ViewportMesh, mPass); mPass.BindGeometry(ViewportMesh.MeshPrimitives, 0, 0); mPass.ViewPort = mViewport; mPass.BindCBuffer(mPass.Effect.ShaderProgram, mPass.Effect.CacheData.CBID_Camera, Camera.CBuffer); mPass.BindCBuffer(mPass.Effect.ShaderProgram, mPass.Effect.CacheData.CBID_View, mScreenViewCB); mPass.OnCookRenderData(ShaderEnv, PrebuildPassIndex.PPI_Default); return; }
public async System.Threading.Tasks.Task <bool> InitForMultiPassMode(CRenderContext RHICtx, CGfxScreenViewDesc ViewInfo, List <CGfxShadingEnv> ShadingEnvArray, CGfxMaterialInstance MtlInst, CGfxMesh ViewportMesh) { if (ShadingEnvArray == null) { return(false); } if (ViewportMesh == null) { var RectMesh = CEngine.Instance.MeshPrimitivesManager.GetMeshPrimitives(RHICtx, CEngineDesc.FullScreenRectName, true); ViewportMesh = CEngine.Instance.MeshManager.CreateMesh(RHICtx, RectMesh); ViewportMesh.SetMaterialInstance(RHICtx, 0, await CEngine.Instance.MaterialInstanceManager.GetMaterialInstanceAsync(RHICtx, RName.GetRName("Material/defaultmaterial.instmtl")), CEngine.Instance.PrebuildPassData.DefaultShadingEnvs); //await ViewportMesh.AwaitEffects(); } mViewInfo = ViewInfo; mViewport = new CViewport(); mViewport.Width = ViewInfo.Width; mViewport.Height = ViewInfo.Height; mViewport.TopLeftX = 0.0f; mViewport.TopLeftY = 0.0f; mViewport.MinDepth = 0.0f; mViewport.MaxDepth = 1.0f; var ShaderProgram = CEngine.Instance.EffectManager.DefaultEffect.ShaderProgram; mScreenViewCB = RHICtx.CreateConstantBuffer(ShaderProgram, CEngine.Instance.EffectManager.DefaultEffect.CacheData.CBID_View); if (mScreenViewCB == null) { return(false); } mIDViewportSizeAndRcp = mScreenViewCB.FindVar("gViewportSizeAndRcp"); mID_SunPosNDC = mScreenViewCB.FindVar("gSunPosNDC"); mID_AoParam = mScreenViewCB.FindVar("gAoParam"); CRasterizerStateDesc RSDesc = new CRasterizerStateDesc(); RSDesc.InitForCustom(); mRasterState = CEngine.Instance.RasterizerStateManager.GetRasterizerState(RHICtx, RSDesc); CDepthStencilStateDesc DSSDesc = new CDepthStencilStateDesc(); DSSDesc.InitForCustomLayers(); mDepthStencilState = CEngine.Instance.DepthStencilStateManager.GetDepthStencilState(RHICtx, DSSDesc); CBlendStateDesc BlendDesc = new CBlendStateDesc(); BlendDesc.InitForCustomLayers(); mBlendState = CEngine.Instance.BlendStateManager.GetBlendState(RHICtx, BlendDesc); for (UInt32 idx = 0; idx < ShadingEnvArray.Count; idx++) { var refPass = RHICtx.CreatePass(); if (false == await refPass.InitPassForViewportView(RHICtx, ShadingEnvArray[(int)idx], MtlInst, ViewportMesh)) { return(false); } mPassArray.Add(refPass); } return(OnResize(RHICtx, null, ViewInfo.Width, ViewInfo.Height)); }
public async System.Threading.Tasks.Task <bool> Init(CRenderContext RHICtx, CSwapChain SwapChain, CGfxScreenViewDesc ViewInfo, CGfxShadingEnv ShadingEnv, CGfxMaterialInstance MtlInst, CGfxMesh ViewportMesh) { if (ShadingEnv == null) { return(false); } if (ViewportMesh == null) { var ScreenAlignedTriangle = CEngine.Instance.MeshPrimitivesManager.GetMeshPrimitives(RHICtx, CEngineDesc.ScreenAlignedTriangleName, true); ViewportMesh = CEngine.Instance.MeshManager.CreateMesh(RHICtx, ScreenAlignedTriangle); ViewportMesh.SetMaterialInstance(RHICtx, 0, await CEngine.Instance.MaterialInstanceManager.GetMaterialInstanceAsync(RHICtx, RName.GetRName("Material/defaultmaterial.instmtl")), CEngine.Instance.PrebuildPassData.DefaultShadingEnvs); //await ViewportMesh.AwaitEffects(); } mViewInfo = ViewInfo; mViewport = new CViewport(); mViewport.Width = ViewInfo.Width; mViewport.Height = ViewInfo.Height; mViewport.TopLeftX = 0.0f; mViewport.TopLeftY = 0.0f; mViewport.MinDepth = 0.0f; mViewport.MaxDepth = 1.0f; var ShaderProgram = CEngine.Instance.EffectManager.DefaultEffect.ShaderProgram; mScreenViewCB = RHICtx.CreateConstantBuffer(ShaderProgram, CEngine.Instance.EffectManager.DefaultEffect.CacheData.CBID_View); if (mScreenViewCB == null) { return(false); } mIDViewportSizeAndRcp = mScreenViewCB.FindVar("gViewportSizeAndRcp"); mID_SunPosNDC = mScreenViewCB.FindVar("gSunPosNDC"); mID_DirLightColor_Intensity = mScreenViewCB.FindVar("gDirLightColor_Intensity"); mID_AoParam = mScreenViewCB.FindVar("gAoParam"); CRasterizerStateDesc RSDesc = new CRasterizerStateDesc(); RSDesc.InitForCustom(); mRasterState = CEngine.Instance.RasterizerStateManager.GetRasterizerState(RHICtx, RSDesc); CDepthStencilStateDesc DSSDesc = new CDepthStencilStateDesc(); DSSDesc.InitForCustomLayers(); mDepthStencilState = CEngine.Instance.DepthStencilStateManager.GetDepthStencilState(RHICtx, DSSDesc); CBlendStateDesc BlendDesc = new CBlendStateDesc(); BlendDesc.InitForCustomLayers(); mBlendState = CEngine.Instance.BlendStateManager.GetBlendState(RHICtx, BlendDesc); mPass = RHICtx.CreatePass(); if (false == await mPass.InitPassForViewportView(RHICtx, ShadingEnv, MtlInst, ViewportMesh)) { return(false); } return(OnResize(RHICtx, SwapChain, ViewInfo.Width, ViewInfo.Height)); }
public CFontMesh() { Mesh = new CGfxMesh(); Mesh.Tag = this; }
public override void BindResources(CGfxMesh mesh, CPass pass) { }