Ejemplo n.º 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);

                isBlendChanged = true;
                if (isInitialParticleChanged)
                {
                    OnInitialParticleChanged(ParticleCount);
                }
                textureSampler = Collect(technique.EffectsManager.StateManager.Register(SamplerDescription));
                return(true);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RenderContext"/> class.
 /// </summary>
 /// <param name="renderHost">The render host.</param>
 /// <param name="renderContext">The render context.</param>
 public RenderContext(IRenderHost renderHost, DeviceContext renderContext)
 {
     this.RenderHost     = renderHost;
     this.IsShadowPass   = false;
     this.IsDeferredPass = false;
     cbuffer             = renderHost.EffectsManager.ConstantBufferPool.Register(DefaultBufferNames.GlobalTransformCB, GlobalTransformStruct.SizeInBytes);
     DeviceContext       = renderContext;
     LightScene          = Collect(new Light3DSceneShared(renderHost.EffectsManager.ConstantBufferPool));
     SharedResource      = Collect(new ContextSharedResource());
 }
Ejemplo n.º 3
0
 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);
     }
 }
Ejemplo n.º 4
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);
     }
 }
Ejemplo n.º 5
0
 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);
     }
 }
Ejemplo n.º 6
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);
 }