Example #1
0
        /// <summary>
        /// Called when [attach].
        /// </summary>
        /// <param name="technique">The technique.</param>
        /// <returns></returns>
        protected override bool OnAttach(IRenderTechnique technique)
        {
            if (base.OnAttach(technique))
            {
                VertexLayout = technique.Layout;
                updatePass   = technique[DefaultParticlePassNames.Update];
                insertPass   = technique[DefaultParticlePassNames.Insert];
                renderPass   = technique[DefaultParticlePassNames.Default];
                #region Get binding slots
                currentStateSlot = updatePass.GetShader(ShaderStage.Compute).UnorderedAccessViewMapping.TryGetBindSlot(CurrentSimStateUAVBufferName);
                newStateSlot     = updatePass.GetShader(ShaderStage.Compute).UnorderedAccessViewMapping.TryGetBindSlot(NewSimStateUAVBufferName);

                renderStateSlot = renderPass.GetShader(ShaderStage.Vertex).ShaderResourceViewMapping.TryGetBindSlot(SimStateBufferName);
                textureSlot     = renderPass.GetShader(ShaderStage.Pixel).ShaderResourceViewMapping.TryGetBindSlot(ShaderTextureBufferName);
                samplerSlot     = renderPass.GetShader(ShaderStage.Pixel).SamplerMapping.TryGetBindSlot(ShaderTextureSamplerName);
                #endregion
                perFrameCB = technique.ConstantBufferPool.Register(DefaultBufferNames.ParticleFrameCB, ParticlePerFrame.SizeInBytes);
                insertCB   = technique.ConstantBufferPool.Register(DefaultBufferNames.ParticleCreateParameters, ParticleInsertParameters.SizeInBytes);
                if (isInitialParticleChanged)
                {
                    OnInitialParticleChanged(ParticleCount);
                }
                textureSampler = Collect(technique.EffectsManager.StateManager.Register(SamplerDescription));
                OnTextureChanged();
                OnBlendStateChanged();
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #2
0
 protected override void OnAttach(IRenderTechnique technique)
 {
     if (bufferDesc != null)
     {
         ModelConstBuffer = technique.ConstantBufferPool.Register(bufferDesc);
     }
     IsValid = bufferDesc != null && ModelConstBuffer != null;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="MaterialVariable"/> class.
 /// </summary>
 /// <param name="manager">The manager.</param>
 /// <param name="technique">The technique.</param>
 /// <param name="meshConstantBufferDesc">The Constant Buffer description</param>
 public MaterialVariable(IEffectsManager manager, IRenderTechnique technique, ConstantBufferDescription meshConstantBufferDesc)
 {
     Technique = technique;
     if (meshConstantBufferDesc != null)
     {
         ConstantBuffer = manager.ConstantBufferPool.Register(meshConstantBufferDesc);
     }
 }
Example #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RenderContext"/> class.
 /// </summary>
 /// <param name="renderHost">The render host.</param>
 public RenderContext(IRenderHost renderHost)
 {
     this.RenderHost     = renderHost;
     this.IsDeferredPass = false;
     cbuffer             = renderHost.EffectsManager.ConstantBufferPool.Register(DefaultBufferNames.GlobalTransformCB, GlobalTransformStruct.SizeInBytes);
     LightScene          = Collect(new Light3DSceneShared(renderHost.EffectsManager.ConstantBufferPool));
     SharedResource      = Collect(new ContextSharedResource());
     OITWeightPower      = 3;
     OITWeightDepthSlope = 1;
     OITWeightMode       = OITWeightMode.Linear2;
 }
 protected override bool OnAttach(IRenderTechnique technique)
 {
     if (base.OnAttach(technique))
     {
         boneCB = technique.ConstantBufferPool.Register(new ConstantBufferDescription(DefaultBufferNames.BoneCB, BoneMatricesStruct.SizeInBytes));
         return(true);
     }
     else
     {
         return(false);
     }
 }
 protected override void OnAttach(IRenderTechnique technique)
 {
     lock (lck)
     {
         if (bufferDesc != null)
         {
             modelConstBuffer = technique.ConstantBufferPool.Register(bufferDesc);
             storage          = technique.EffectsManager.StructArrayPool.Register(bufferDesc.StructSize);
             storageId        = storage.GetId();
         }
         IsValid = bufferDesc != null && ModelConstBuffer != null;
     }
 }
Example #7
0
 /// <summary>
 /// Called when [attach].
 /// </summary>
 /// <param name="technique">The technique.</param>
 /// <returns></returns>
 protected override bool OnAttach(IRenderTechnique technique)
 {
     if (base.OnAttach(technique))
     {
         globalTransformCB = technique.EffectsManager.ConstantBufferPool.Register(DefaultBufferNames.GlobalTransformCB, GlobalTransformStruct.SizeInBytes);
         CreateRasterState(rasterDescription, true);
         return(true);
     }
     else
     {
         return(false);
     }
 }
 protected override bool OnAttach(IRenderTechnique technique)
 {
     if (base.OnAttach(technique))
     {
         clipParamCB        = technique.ConstantBufferPool.Register(GetClipParamsCBDescription());
         drawBackfacePass   = technique[DefaultPassNames.Backface];
         drawScreenQuadPass = technique[DefaultPassNames.ScreenQuad];
         return(true);
     }
     else
     {
         return(false);
     }
 }
Example #9
0
 internal void Initialize()
 {
     if (EffectsManager == null)
     {
         return;
     }
     materialCB    = EffectsManager.ConstantBufferPool.Register(materialCBDescription);
     nonMaterialCB = EffectsManager.ConstantBufferPool.Register(nonMaterialCBDescription);
     OnInitialPropertyBindings();
     foreach (var v in propertyBindings.Values)
     {
         v.Invoke();
     }
     initialized = true;
 }
Example #10
0
 /// <summary>
 /// During attatching render core. Create all local resources. Use Collect(resource) to let object be released automatically during Detach().
 /// </summary>
 /// <param name="technique"></param>
 /// <returns></returns>
 protected override bool OnAttach(IRenderTechnique technique)
 {
     ModelConstBuffer = technique.ConstantBufferPool.Register(GetModelConstantBufferDescription());
     return(true);
 }
Example #11
0
 protected override void OnDetach()
 {
     ModelConstBuffer = null;
     IsValid          = false;
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="disposeManagedResources"></param>
 protected override void OnDispose(bool disposeManagedResources)
 {
     OnUpdateNeeded = null;
     ConstantBuffer = null;
     base.OnDispose(disposeManagedResources);
 }
Example #13
0
 protected override void OnDetach()
 {
     ModelConstBuffer = null;
 }
Example #14
0
 protected override void OnAttach(IRenderTechnique technique)
 {
     ModelConstBuffer = technique.ConstantBufferPool.Register(bufferDesc);
 }