public void SetMaterialInstance(EngineNS.Graphics.CGfxMaterialInstance mtl, EngineNS.Graphics.Mesh.CGfxMesh mesh, int mtlindex)
        {
            mMaterialInstance    = mtl;
            MaterialInstanceName = mtl.Name;
            MtlIndex             = mtlindex;
            SceneMesh            = mesh;

            mSRVPrimitives = new List <SRVRName>();
            for (UInt32 i = 0; i < mMaterialInstance.SRVNumber; i++)
            {
                var item = new SRVRName();
                item.Index     = (int)i;
                item.SceneMesh = mesh;
                item.MtlIndex  = (UInt32)mtlindex;
                item.Host      = this;
                mSRVPrimitives.Add(item);
            }

            mShaderVars = new List <VarRName>();
            for (UInt32 i = 0; i < mMaterialInstance.VarNumber; i++)
            {
                var item = new VarRName();
                item.Index     = (int)i;
                item.SceneMesh = mesh;
                item.MtlIndex  = (UInt32)mtlindex;
                item.Host      = this;
                mShaderVars.Add(item);
            }
        }
        public override async Task <bool> AssetsOption_LoadResourceOverride(EditorCommon.Assets.AssetsPakage.LoadResourceData data)
        {
            var matIns = new EngineNS.Graphics.CGfxMaterialInstance();
            await matIns.PureLoadMaterialInstanceAsync(EngineNS.CEngine.Instance.RenderContext, data.RNameMapper.Name);

            data.RNameMapper.ResObject = matIns;
            return(true);
        }
 public void RefreshReferenceRNames(EngineNS.Graphics.CGfxMaterialInstance matIns)
 {
     // 刷新资源引用
     ReferenceRNameList.Clear();
     ReferenceRNameList.Add(matIns.MaterialName);
     for (UInt32 i = 0; i < matIns.SRVNumber; i++)
     {
         var rName = matIns.GetSRVName(i);
         ReferenceRNameList.Add(rName);
     }
 }
예제 #4
0
        public async System.Threading.Tasks.Task InitGraphLines()
        {
            LinesGen.Interval   = 0.1f;
            LinesGen.Segement   = 0.2f;
            GraphLines.LinesGen = LinesGen;
            EngineNS.Graphics.CGfxMaterialInstance mtl = await EngineNS.CEngine.Instance.MaterialInstanceManager.GetMaterialInstanceAsync(
                EngineNS.CEngine.Instance.RenderContext,
                EngineNS.RName.GetRName("editor/volume/mi_volume_octree.instmtl"));//rotator

            EngineNS.Vector3 p1 = Vector3.Lerp(CStartPos, CEndPos, 0.3f);
            p1.Y = p1.Y + 5.0f;

            EngineNS.Vector3 p2 = Vector3.Lerp(CStartPos, CEndPos, 0.7f);
            p2.Y = p1.Y;
            LinesGen.SetBezier3D(CStartPos, p1, p2, CEndPos, 100);

            var init = await GraphLines.Init(mtl, 0.0f);

            //GraphLines.GraphActor.Placement.Location = EngineNS.Vector3.Zero;

            mLineMeshComponent = GraphLines.GraphActor.GetComponent <GamePlay.Component.GMeshComponent>();
        }
            public void SetMaterialInstance(EngineNS.Graphics.CGfxMaterialInstance mtl)
            {
                mMaterialInstance = mtl;

                mSRVPrimitives = new List <SRVRName>();
                for (UInt32 i = 0; i < mMaterialInstance.SRVNumber; i++)
                {
                    var item = new SRVRName();
                    item.Index             = i;
                    item.mMaterialInstance = mMaterialInstance;
                    mSRVPrimitives.Add(item);
                }

                mShaderVars = new List <VarRName>();
                for (UInt32 i = 0; i < mMaterialInstance.VarNumber; i++)
                {
                    var item = new VarRName();
                    item.Index             = i;
                    item.mMaterialInstance = mMaterialInstance;
                    mShaderVars.Add(item);
                }
            }