コード例 #1
0
            private void UpdateSampler()
            {
                var newSampler = EffectTechnique.EffectsManager.StateManager.Register(samplerDescription);

                RemoveAndDispose(ref sampler);
                sampler = newSampler;
            }
コード例 #2
0
            private void CreateSamplers()
            {
                var newSampler = material == null ? null : statePoolManager.Register(material.DiffuseMapSampler);

                RemoveAndDispose(ref SamplerResource);
                SamplerResource = newSampler;
            }
コード例 #3
0
 protected override void OnDetach()
 {
     MipMapLevels   = 0;
     textureSampler = null;
     cubeTextureRes = null;
     base.OnDetach();
 }
コード例 #4
0
            protected override void OnInitialPropertyBindings()
            {
                AddPropertyBinding(nameof(ColorStripeMaterialCore.DiffuseColor), () =>
                {
                    WriteValue(PhongPBRMaterialStruct.DiffuseStr, material.DiffuseColor);
                });
                AddPropertyBinding(nameof(ColorStripeMaterialCore.ColorStripeX), () =>
                {
                    CreateTextureView(material.ColorStripeX, 0);
                    WriteValue(PhongPBRMaterialStruct.HasDiffuseMapStr, material.ColorStripeXEnabled && (textureIndex & 1u) != 0 ? 1 : 0);
                });
                AddPropertyBinding(nameof(ColorStripeMaterialCore.ColorStripeY), () =>
                {
                    CreateTextureView(material.ColorStripeY, 1);
                    WriteValue(PhongPBRMaterialStruct.HasDiffuseAlphaMapStr, material.ColorStripeYEnabled && (textureIndex & 1u << 1) != 0 ? 1 : 0);
                });
                AddPropertyBinding(nameof(ColorStripeMaterialCore.ColorStripeSampler), () =>
                {
                    RemoveAndDispose(ref sampler);
                    sampler = Collect(statePoolManager.Register(material.ColorStripeSampler));
                });
                AddPropertyBinding(nameof(ColorStripeMaterialCore.ColorStripeXEnabled), () =>
                {
                    WriteValue(PhongPBRMaterialStruct.HasDiffuseMapStr, material.ColorStripeXEnabled && (textureIndex & 1u) != 0 ? 1 : 0);
                });
                AddPropertyBinding(nameof(ColorStripeMaterialCore.ColorStripeYEnabled), () =>
                {
                    WriteValue(PhongPBRMaterialStruct.HasDiffuseAlphaMapStr, material.ColorStripeYEnabled && (textureIndex & 1u << 1) != 0 ? 1 : 0);
                });

                WriteValue(PhongPBRMaterialStruct.UVTransformR1Str, new Vector4(1, 0, 0, 0));
                WriteValue(PhongPBRMaterialStruct.UVTransformR2Str, new Vector4(0, 1, 0, 0));
            }
コード例 #5
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);
            }
        }
コード例 #6
0
 protected override void OnDetach()
 {
     depthdesc.Width = depthdesc.Height = 0;
     blurCore        = null;
     sampler         = null;
     base.OnDetach();
 }
コード例 #7
0
 protected override void OnDetach()
 {
     sampler = null;
     width   = height = 0;
     offScreenRenderTargets.Clear();
     base.OnDetach();
 }
コード例 #8
0
 protected override void OnInitialPropertyBindings()
 {
     base.OnInitialPropertyBindings();
     AddPropertyBinding(nameof(DiffuseMaterialCore.DiffuseColor), () =>
                        { WriteValue(PhongPBRMaterialStruct.DiffuseStr, material.DiffuseColor); });
     AddPropertyBinding(nameof(DiffuseMaterialCore.UVTransform), () =>
     {
         Matrix m = material.UVTransform;
         WriteValue(PhongPBRMaterialStruct.UVTransformR1Str, m.Column1);
         WriteValue(PhongPBRMaterialStruct.UVTransformR2Str, m.Column2);
     });
     AddPropertyBinding(nameof(DiffuseMaterialCore.DiffuseMap), () =>
     {
         CreateTextureView(material.DiffuseMap, DiffuseIdx);
         WriteValue(PhongPBRMaterialStruct.HasDiffuseMapStr, material.RenderDiffuseMap && TextureResource != null ? 1 : 0);
     });
     AddPropertyBinding(nameof(DiffuseMaterialCore.DiffuseMapSampler), () =>
     {
         RemoveAndDispose(ref SamplerResource);
         SamplerResource = Collect(statePoolManager.Register(material.DiffuseMapSampler));
     });
     AddPropertyBinding(nameof(DiffuseMaterialCore.EnableUnLit), () =>
                        { WriteValue(PhongPBRMaterialStruct.HasNormalMapStr, material.EnableUnLit); });
     AddPropertyBinding(nameof(DiffuseMaterialCore.EnableFlatShading), () => { WriteValue(PhongPBRMaterialStruct.RenderFlat, material.EnableFlatShading); });
 }
コード例 #9
0
 protected override void OnInitialPropertyBindings()
 {
     base.OnInitialPropertyBindings();
     AddPropertyBinding(nameof(VolumeTextureMaterialCoreBase <T> .VolumeTexture), () => { UpdateTexture(material); });
     AddPropertyBinding(nameof(IVolumeTextureMaterial.Sampler), () =>
     {
         var newSampler = EffectsManager.StateManager.Register(material.Sampler);
         RemoveAndDispose(ref sampler);
         sampler = Collect(newSampler);
     });
     AddPropertyBinding(nameof(IVolumeTextureMaterial.SampleDistance),
                        () => UpdateStepSize());
     AddPropertyBinding(nameof(IVolumeTextureMaterial.MaxIterations),
                        () => WriteValue(VolumeParamsStruct.MaxIterations, material.MaxIterations));
     AddPropertyBinding(nameof(IVolumeTextureMaterial.IterationOffset),
                        () => WriteValue(VolumeParamsStruct.IterationOffset, material.IterationOffset));
     AddPropertyBinding(nameof(IVolumeTextureMaterial.IsoValue),
                        () => WriteValue(VolumeParamsStruct.IsoValue, (float)material.IsoValue));
     AddPropertyBinding(nameof(IVolumeTextureMaterial.Color),
                        () => WriteValue(VolumeParamsStruct.Color, material.Color));
     AddPropertyBinding(nameof(IVolumeTextureMaterial.TransferMap),
                        () => UpdateGradientMap());
     AddPropertyBinding(nameof(IVolumeTextureMaterial.EnablePlaneAlignment),
                        () => WriteValue(VolumeParamsStruct.EnablePlaneAlignment, material.EnablePlaneAlignment));
 }
コード例 #10
0
 private void CreateSamplers()
 {
     RemoveAndDispose(ref sampler);
     if (material != null)
     {
         sampler = Collect(statePoolManager.Register(material.ColorStripeSampler));
     }
 }
コード例 #11
0
 protected override bool OnAttach(IRenderTechnique technique)
 {
     DefaultShaderPass = technique[DefaultShaderPassName];
     contextPool = technique.EffectsManager.DeviceContextPool;
     textureSampler = Collect(technique.EffectsManager.StateManager.Register(SamplerDescription));
     CreateCubeMapResources();
     return true;
 }
コード例 #12
0
ファイル: ImGuiNode.cs プロジェクト: iqingyu/helix-toolkit
 protected override bool OnAttach(IRenderTechnique technique)
 {
     spritePass  = technique[DefaultPassNames.Default];
     texSlot     = spritePass.PixelShader.ShaderResourceViewMapping.TryGetBindSlot(DefaultBufferNames.SpriteTB);
     samplerSlot = spritePass.PixelShader.SamplerMapping.TryGetBindSlot(DefaultSamplerStateNames.SpriteSampler);
     sampler     = Collect(EffectTechnique.EffectsManager.StateManager.Register(DefaultSamplers.PointSamplerWrap));
     return(true);
 }
コード例 #13
0
 /// <summary>
 /// Called when [detach].
 /// </summary>
 protected override void OnDetach()
 {
     clearTarget    = true;
     invalidRender  = true;
     pointer        = new PointerInfo();
     textureSampler = null;
     base.OnDetach();
 }
コード例 #14
0
 private void CreateSamplers()
 {
     RemoveAndDispose(ref SamplerResource);
     if (material != null)
     {
         SamplerResource = Collect(statePoolManager.Register(material.DiffuseMapSampler));
     }
 }
コード例 #15
0
 /// <summary>
 /// Called when [detach].
 /// </summary>
 protected override void OnDetach()
 {
     DisposeBuffers();
     textureSampler = null;
     blendState     = null;
     textureView    = null;
     base.OnDetach();
 }
コード例 #16
0
 protected override bool OnAttach(IRenderTechnique technique)
 {
     DefaultShaderPass = technique[DefaultPassNames.Default];
     samplerSlot       = DefaultShaderPass.PixelShader.SamplerMapping.TryGetBindSlot(DefaultSamplerStateNames.ShadowMapSampler);
     shadowMapSlot     = DefaultShaderPass.PixelShader.ShaderResourceViewMapping.TryGetBindSlot(DefaultBufferNames.ShadowMapTB);
     shadowSampler     = Collect(technique.EffectsManager.StateManager.Register(DefaultSamplers.ShadowSampler));
     return(true);
 }
コード例 #17
0
 /// <summary>
 /// Called when [detach].
 /// </summary>
 protected override void OnDetach()
 {
     DisposeBuffers();
     isInitialParticleChanged = true;
     textureSampler           = null;
     blendState  = null;
     textureView = null;
     base.OnDetach();
 }
コード例 #18
0
 /// <summary>
 /// Called when [attach].
 /// </summary>
 /// <param name="technique">The technique.</param>
 /// <returns></returns>
 protected override bool OnAttach(IRenderTechnique technique)
 {
     DefaultShaderPass = technique.EffectsManager[DefaultRenderTechniqueNames.ScreenDuplication][DefaultPassNames.Default];
     CursorShaderPass  = technique.EffectsManager[DefaultRenderTechniqueNames.ScreenDuplication][DefaultPassNames.ScreenQuad];
     textureBindSlot   = DefaultShaderPass.PixelShader.ShaderResourceViewMapping.TryGetBindSlot(DefaultBufferNames.DiffuseMapTB);
     samplerBindSlot   = DefaultShaderPass.PixelShader.SamplerMapping.TryGetBindSlot(DefaultSamplerStateNames.SurfaceSampler);
     textureSampler    = technique.EffectsManager.StateManager.Register(DefaultSamplers.ScreenDupSampler);
     return(Initialize(technique.EffectsManager));
 }
コード例 #19
0
 protected override bool OnAttach(IRenderTechnique technique)
 {
     FXAAPass    = technique[DefaultPassNames.FXAAPass];
     LUMAPass    = technique[DefaultPassNames.LumaPass];
     textureSlot = FXAAPass.PixelShader.ShaderResourceViewMapping.TryGetBindSlot(DefaultBufferNames.DiffuseMapTB);
     samplerSlot = FXAAPass.PixelShader.SamplerMapping.TryGetBindSlot(DefaultSamplerStateNames.SurfaceSampler);
     sampler     = Collect(technique.EffectsManager.StateManager.Register(DefaultSamplers.LinearSamplerClampAni1));
     return(true);
 }
コード例 #20
0
            /// <summary>
            ///
            /// </summary>
            /// <param name="disposeManagedResources"></param>
            protected override void OnDispose(bool disposeManagedResources)
            {
                if (disposeManagedResources)
                {
                    TextureResource = null;
                    SamplerResource = null;
                }

                base.OnDispose(disposeManagedResources);
            }
コード例 #21
0
            private void CreateSamplers()
            {
                var newSampler = statePoolManager.Register(material.ColorStripeSampler);

                RemoveAndDispose(ref sampler);
                if (material != null)
                {
                    sampler = newSampler;
                }
            }
コード例 #22
0
 protected override void OnInitialPropertyBindings()
 {
     base.OnInitialPropertyBindings();
     AddPropertyBinding(nameof(BillboardMaterialCore.FixedSize), () => { WriteValue(PointLineMaterialStruct.FixedSize, materialCore.FixedSize); });
     AddPropertyBinding(nameof(BillboardMaterialCore.Type), () => { WriteValue(PointLineMaterialStruct.ParamsStr, new Vector4((int)materialCore.Type, 0, 0, 0)); });
     AddPropertyBinding(nameof(BillboardMaterialCore.SamplerDescription), () => {
         RemoveAndDispose(ref textureSampler);
         textureSampler = Collect(EffectsManager.StateManager.Register(materialCore.SamplerDescription));
     });
 }
コード例 #23
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PostEffectMeshOutlineBlurCore"/> class.
 /// </summary>
 public PostEffectBlurCore(ShaderPass blurVerticalPass, ShaderPass blurHorizontalPass, int textureSlot, int samplerSlot,
                           SamplerStateDescription sampler, IEffectsManager manager)
 {
     screenBlurPassVertical   = blurVerticalPass;
     screenBlurPassHorizontal = blurHorizontalPass;
     this.textureSlot         = textureSlot;
     this.samplerSlot         = samplerSlot;
     this.sampler             = manager.StateManager.Register(sampler);
     modelCB = new ConstantBufferComponent(new ConstantBufferDescription(DefaultBufferNames.BorderEffectCB, BorderEffectStruct.SizeInBytes));
 }
コード例 #24
0
 protected override bool OnAttach(IRenderTechnique technique)
 {
     screenQuadPass = technique[DefaultPassNames.Default];
     colorTexIndex  = screenQuadPass.PixelShader.ShaderResourceViewMapping.TryGetBindSlot(DefaultBufferNames.OITColorTB);
     alphaTexIndex  = screenQuadPass.PixelShader.ShaderResourceViewMapping.TryGetBindSlot(DefaultBufferNames.OITAlphaTB);
     samplerIndex   = screenQuadPass.PixelShader.SamplerMapping.TryGetBindSlot(DefaultSamplerStateNames.SurfaceSampler);
     targetSampler  = technique.EffectsManager.StateManager.Register(DefaultSamplers.LinearSamplerWrapAni1);
     RenderCount    = 0;
     return(true);
 }
コード例 #25
0
 protected override void OnDetach()
 {
     targetSampler     = null;
     width             = height = 0;
     colorTarget       = null;
     alphaTarget       = null;
     colorTargetNoMSAA = null;
     alphaTargetNoMSAA = null;
     base.OnDetach();
 }
コード例 #26
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PostEffectMeshOutlineBlurCore"/> class.
 /// </summary>
 public PostEffectBlurCore(global::SharpDX.DXGI.Format textureFormat,
                           ShaderPass blurVerticalPass, ShaderPass blurHorizontalPass, int textureSlot, int samplerSlot,
                           SamplerStateDescription sampler, IEffectsManager manager)
 {
     screenBlurPassVertical   = blurVerticalPass;
     screenBlurPassHorizontal = blurHorizontalPass;
     this.textureSlot         = textureSlot;
     this.samplerSlot         = samplerSlot;
     this.sampler             = Collect(manager.StateManager.Register(sampler));
     texture2DDesc.Format     = targetResourceViewDesc.Format = renderTargetViewDesc.Format = textureFormat;
 }
コード例 #27
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BillboardMaterialVariable"/> class.
 /// </summary>
 /// <param name="manager">The manager.</param>
 /// <param name="technique">The technique.</param>
 /// <param name="materialCore">The core.</param>
 /// <param name="billboardPassName">Name of the billboard pass.</param>
 /// <param name="billboardOITPassName">Name of the billboard oit pass.</param>
 public BillboardMaterialVariable(IEffectsManager manager, IRenderTechnique technique, BillboardMaterialCore materialCore,
                                  string billboardPassName = DefaultPassNames.Default, string billboardOITPassName = DefaultPassNames.OITPass)
     : base(manager, technique, DefaultPointLineConstantBufferDesc, materialCore)
 {
     BillboardPass      = technique[billboardPassName];
     BillboardOITPass   = technique[billboardOITPassName];
     this.materialCore  = materialCore;
     shaderTextureSlot  = BillboardPass.PixelShader.ShaderResourceViewMapping.TryGetBindSlot(ShaderTextureName);
     textureSamplerSlot = BillboardPass.PixelShader.SamplerMapping.TryGetBindSlot(ShaderTextureSamplerName);
     textureSampler     = Collect(EffectsManager.StateManager.Register(materialCore.SamplerDescription));
 }
コード例 #28
0
 protected override bool OnAttach(IRenderTechnique technique)
 {
     screenQuadPass     = technique.GetPass(DefaultPassNames.ScreenQuad);
     screenQuadCopy     = technique.GetPass(DefaultPassNames.ScreenQuadCopy);
     blurPassVertical   = technique.GetPass(DefaultPassNames.EffectBlurVertical);
     blurPassHorizontal = technique.GetPass(DefaultPassNames.EffectBlurHorizontal);
     screenOutlinePass  = technique.GetPass(DefaultPassNames.MeshOutline);
     textureSlot        = screenOutlinePass.PixelShader.ShaderResourceViewMapping.TryGetBindSlot(DefaultBufferNames.DiffuseMapTB);
     samplerSlot        = screenOutlinePass.PixelShader.SamplerMapping.TryGetBindSlot(DefaultSamplerStateNames.DiffuseMapSampler);
     sampler            = Collect(technique.EffectsManager.StateManager.Register(DefaultSamplers.LinearSamplerClampAni1));
     return(true);
 }
コード例 #29
0
 protected override bool OnAttach(IRenderTechnique technique)
 {
     if (base.OnAttach(technique))
     {
         textureSampler = Collect(technique.EffectsManager.StateManager.Register(SamplerDescription));
         return(true);
     }
     else
     {
         return(false);
     }
 }
コード例 #30
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LineMaterialVariable"/> class.
 /// </summary>
 /// <param name="manager">The manager.</param>
 /// <param name="technique">The technique.</param>
 /// <param name="materialCore">The material core.</param>
 /// <param name="defaultPassName">Default pass name</param>
 public LineMaterialVariable(IEffectsManager manager, IRenderTechnique technique, LineMaterialCore materialCore,
                             string defaultPassName = DefaultPassNames.Default)
     : base(manager, technique, DefaultPointLineConstantBufferDesc, materialCore)
 {
     textureManager     = manager.MaterialTextureManager;
     LinePass           = technique[defaultPassName];
     ShadowPass         = technique[DefaultPassNames.ShadowPass];
     DepthPass          = technique[DefaultPassNames.DepthPrepass];
     this.material      = materialCore;
     shaderTextureSlot  = LinePass.PixelShader.ShaderResourceViewMapping.TryGetBindSlot(ShaderTextureName);
     textureSamplerSlot = LinePass.PixelShader.SamplerMapping.TryGetBindSlot(ShaderTextureSamplerName);
     textureSampler     = EffectsManager.StateManager.Register(materialCore.SamplerDescription);
 }