/// <summary> /// /// </summary> private void EndD3D(bool dispose) { DetachRenderables(); if (surfaceD3D == null) { return; } surfaceD3D.IsFrontBufferAvailableChanged -= OnIsFrontBufferAvailableChanged; Source = null; RenderContext?.Dispose(); Disposer.RemoveAndDispose(ref deferredRenderer); Disposer.RemoveAndDispose(ref surfaceD3D); Disposer.RemoveAndDispose(ref colorBufferView); Disposer.RemoveAndDispose(ref depthStencilBufferView); Disposer.RemoveAndDispose(ref colorBuffer); Disposer.RemoveAndDispose(ref depthStencilBuffer); #if MSAA Disposer.RemoveAndDispose(ref renderTargetNMS); #endif if (dispose && defaultEffectsManager != null) { (defaultEffectsManager as IDisposable)?.Dispose(); if (effectsManager == defaultEffectsManager) { effectsManager = null; } defaultEffectsManager = null; } }
/// <summary> /// /// </summary> private bool StartD3D() { if (!loaded || EffectsManager == null || RenderTechniquesManager == null) { if (EffectsManager == null) { EffectsManager = defaultEffectsManager = new DefaultEffectsManager(new DefaultRenderTechniquesManager()); } //RenderTechniquesManager = DefaultRenderTechniquesManagerObj.Value; //EffectsManager = DefaultEffectsManagerObj.Value; return(false); // StardD3D() is called from DP changed handler } surfaceD3D = new DX11ImageSource(EffectsManager.AdapterIndex); surfaceD3D.IsFrontBufferAvailableChanged += OnIsFrontBufferAvailableChanged; device = EffectsManager.Device; deferredRenderer = new DeferredRenderer(); renderRenderable.DeferredRenderer = deferredRenderer; CreateAndBindTargets(); SetDefaultRenderTargets(); Source = surfaceD3D; InvalidateRender(); return(true); }
/// <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="linePassName">Name of the line pass.</param> /// <param name="shadowPassName">Name of the shadow pass.</param> /// <param name="depthPassName">Name of the depth pass</param> public LineArrowMaterialVariable(IEffectsManager manager, IRenderTechnique technique, LineArrowHeadMaterialCore materialCore, string linePassName = DefaultPassNames.Default, string shadowPassName = DefaultPassNames.ShadowPass, string depthPassName = DefaultPassNames.DepthPrepass) : base(manager, technique, materialCore, linePassName, shadowPassName, depthPassName) { this.material = materialCore; }
private bool Initialize(IEffectsManager manager) { RemoveAndDispose(ref duplicationResource); duplicationResource = Collect(new DuplicationResource(manager.Device)); frameProcessor = Collect(new FrameProcessing()); return(true); }
/// <summary> /// /// </summary> private void EndD3D(bool dispose) { DetachRenderables(); renderThread.DestoryRenderThread(); this.Child = null; Disposer.RemoveAndDispose(ref renderContext); Disposer.RemoveAndDispose(ref deferredContext); Disposer.RemoveAndDispose(ref deferredRenderer); Disposer.RemoveAndDispose(ref surfaceD3D); Disposer.RemoveAndDispose(ref colorBufferView); Disposer.RemoveAndDispose(ref colorBuffer); Disposer.RemoveAndDispose(ref backBuffer); Disposer.RemoveAndDispose(ref depthStencilBufferView); Disposer.RemoveAndDispose(ref depthStencilBuffer); Disposer.RemoveAndDispose(ref swapChain); if (dispose && defaultEffectsManager != null) { (defaultEffectsManager as IDisposable)?.Dispose(); if (effectsManager == defaultEffectsManager) { effectsManager = null; } defaultEffectsManager = null; } }
public GenericMaterialVariable(IEffectsManager manager, IRenderTechnique technique, GenericMaterialCore materialCore, ConstantBufferDescription constantBufferDescription, string materialShaderPassName = DefaultPassNames.Default, string shadowShaderPassName = DefaultPassNames.ShadowPass, string wireframePassName = DefaultPassNames.Wireframe, string depthPassName = DefaultPassNames.DepthPrepass) : base(manager, technique, constantBufferDescription, materialCore) { this.materialCore = materialCore; materialPass = technique[materialShaderPassName]; shadowPass = technique[shadowShaderPassName]; wireframePass = technique[wireframePassName]; depthPass = technique[depthPassName]; shaderResources = new KeyValuePair <int, ShaderResourceViewProxy> [materialPass.PixelShader.ShaderResourceViewMapping.Count]; for (var i = 0; i < materialPass.PixelShader.ShaderResourceViewMapping.Count; ++i) { var mapping = materialPass.PixelShader.ShaderResourceViewMapping.Mappings[i]; resourceIdxDict.Add(mapping.Value.Description.Name, i); shaderResources[i] = new KeyValuePair <int, ShaderResourceViewProxy>(mapping.Key, null); } samplerResources = new KeyValuePair <int, SamplerStateProxy> [materialPass.PixelShader.SamplerMapping.Count]; for (var i = 0; i < materialPass.PixelShader.SamplerMapping.Count; ++i) { var mapping = materialPass.PixelShader.SamplerMapping.Mappings[i]; samplerIdxDict.Add(mapping.Value.Name, i); samplerResources[i] = new KeyValuePair <int, SamplerStateProxy>(mapping.Key, null); } materialCore.UpdatingResource += MaterialCore_UpdatingResource; }
/// <summary> /// /// </summary> private bool StartD3D() { if (!loaded || EffectsManager == null || RenderTechniquesManager == null) { if (EffectsManager == null) { EffectsManager = defaultEffectsManager = new DefaultEffectsManager(new DefaultRenderTechniquesManager()); } //RenderTechniquesManager = DefaultRenderTechniquesManagerObj.Value; //EffectsManager = DefaultEffectsManagerObj.Value; return(false); // StardD3D() is called from DP changed handler } this.IsHitTestVisible = false; surfaceD3D = new RenderControl(); Child = surfaceD3D; device = EffectsManager.Device; deferredRenderer = new DeferredRenderer(); renderRenderable.DeferredRenderer = deferredRenderer; CreateAndBindTargets(); SetDefaultRenderTargets(); //Source = surfaceD3D; InvalidateRender(); return(true); }
/// <summary> /// Initializes a new instance of the <see cref="PhongMaterialVariables"/> class. /// </summary> /// <param name="manager">The manager.</param> /// <param name="technique">The technique.</param> /// <param name="materialCore">The material core.</param> /// <param name="materialPassName">Name of the material pass.</param> /// <param name="wireframePassName">Name of the wireframe pass.</param> /// <param name="materialOITPassName">Name of the material oit pass.</param> /// <param name="wireframeOITPassName">Name of the wireframe oit pass.</param> /// <param name="shadowPassName">Name of the shadow pass.</param> /// <param name="tessellationPassName">Name of the tessellation pass.</param> /// <param name="tessellationOITPassName">Name of the tessellation oit pass.</param> /// <param name="depthPassName">Name of the depth pass</param> public PhongMaterialVariables(IEffectsManager manager, IRenderTechnique technique, PhongMaterialCore materialCore, string materialPassName = DefaultPassNames.Default, string wireframePassName = DefaultPassNames.Wireframe, string materialOITPassName = DefaultPassNames.OITPass, string wireframeOITPassName = DefaultPassNames.WireframeOITPass, string shadowPassName = DefaultPassNames.ShadowPass, string tessellationPassName = DefaultPassNames.MeshTriTessellation, string tessellationOITPassName = DefaultPassNames.MeshTriTessellationOIT, string depthPassName = DefaultPassNames.DepthPrepass) : base(manager, technique, DefaultMeshConstantBufferDesc, materialCore) { this.material = materialCore; texDiffuseSlot = texAlphaSlot = texDisplaceSlot = texNormalSlot = -1; samplerDiffuseSlot = samplerDisplaceSlot = samplerShadowSlot = -1; textureManager = manager.MaterialTextureManager; statePoolManager = manager.StateManager; MaterialPass = technique[materialPassName]; MaterialOITPass = technique[materialOITPassName]; ShadowPass = technique[shadowPassName]; WireframePass = technique[wireframePassName]; WireframeOITPass = technique[wireframeOITPassName]; TessellationPass = technique[tessellationPassName]; TessellationOITPass = technique[tessellationOITPassName]; DepthPass = technique[depthPassName]; UpdateMappings(MaterialPass); EnableTessellation = materialCore.EnableTessellation; currentMaterialPass = EnableTessellation ? TessellationPass : MaterialPass; currentOITPass = EnableTessellation ? TessellationOITPass : MaterialOITPass; }
public GenericPointMaterialVariable(IEffectsManager manager, IRenderTechnique technique, GenericMaterialCore materialCore, ConstantBufferDescription constantBufferDescription, string materialShaderPassName = DefaultPassNames.Default, string shadowShaderPassName = DefaultPassNames.ShadowPass) : base(manager, technique, materialCore, constantBufferDescription, materialShaderPassName, shadowShaderPassName, "") { }
public EffectManagerTests() { _effectsManager = new EffectsManager(_deviceManager.Object); _deviceManager.Setup(x => x.KeyboardDevice).Returns(_keyboardEffect.Object); _deviceManager.Setup(x => x.MouseDevice).Returns(_mouseEffect.Object); }
public CustomPointMaterialVariable(IEffectsManager manager, IRenderTechnique technique, PointMaterialCore materialCore, string pointPassName = "CustomPointPass") : base(manager, technique, materialCore, pointPassName) { customConstantBuffer = new ConstantBufferComponent(new ConstantBufferDescription("CustomBuffer", Marshal.SizeOf <Vector4>())); customConstantBuffer.Attach(technique); }
public override MaterialVariable CreateMaterialVariables(IEffectsManager manager, IRenderTechnique technique) { return(new VolumeMaterialVariable <T>(manager, technique, this, DefaultPassName) { OnCreateTexture = (material, effectsManager) => { return OnCreateTexture(effectsManager); } }); }
/// <summary> /// /// </summary> /// <param name="passDescription"></param> /// <param name="manager"></param> public ShaderPass(ShaderPassDescription passDescription, IEffectsManager manager) { Name = passDescription.Name; effectsManager = manager; if (passDescription.ShaderList != null) { foreach (var shader in passDescription.ShaderList) { var s = manager.ShaderManager.RegisterShader(shader); switch (shader.ShaderType) { case ShaderStage.Vertex: vertexShader = s as VertexShader; break; case ShaderStage.Domain: domainShader = s as DomainShader; break; case ShaderStage.Hull: hullShader = s as HullShader; break; case ShaderStage.Geometry: geometryShader = s as GeometryShader; break; case ShaderStage.Pixel: pixelShader = s as PixelShader; break; case ShaderStage.Compute: computeShader = s as ComputeShader; break; } } } blendState = passDescription.BlendStateDescription != null? manager.StateManager.Register((BlendStateDescription)passDescription.BlendStateDescription) : BlendStateProxy.Empty; depthStencilState = passDescription.DepthStencilStateDescription != null? manager.StateManager.Register((DepthStencilStateDescription)passDescription.DepthStencilStateDescription) : DepthStencilStateProxy.Empty; rasterState = passDescription.RasterStateDescription != null? manager.StateManager.Register((RasterizerStateDescription)passDescription.RasterStateDescription) : RasterizerStateProxy.Empty; BlendFactor = passDescription.BlendFactor; StencilRef = passDescription.StencilRef; SampleMask = passDescription.SampleMask; Topology = passDescription.Topology; if (passDescription.InputLayoutDescription != null) { layout = manager.ShaderManager.RegisterInputLayout(passDescription.InputLayoutDescription); } }
/// <summary> /// To override Attach routine, please override this. /// </summary> /// <param name="effectsManager"></param> /// <returns> /// Return true if attached /// </returns> protected override bool OnAttach(IEffectsManager effectsManager) { base.OnAttach(effectsManager); shadowCore = RenderCore as ShadowMapCore; this.Invalidated += Host_SceneGraphUpdated; sceneChanged = true; return(true); }
/// <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); } }
public SettingsManager(IRage rage, IElsSettingsManager elsSettingsManager, string fileName, IEffectsManager effectsManager, IColorManager colorManager) { _rage = rage; _fileName = fileName; _effectsManager = effectsManager; _colorManager = colorManager; _elsSettingsManager = elsSettingsManager; }
protected override bool OnAttach(IEffectsManager effectsManager) { base.OnAttach(effectsManager); InstanceBuffer.Initialize(); InstanceBuffer.Elements = Instances; particleCore.InstanceBuffer = InstanceBuffer; return(true); }
public VehicleListener(IRage rage, ISettingsManager settingsManager, IEffectsManager effectsManager, ILogger log) { _rage = rage; _settingsManager = settingsManager; _effectsManager = effectsManager; _log = log; _oldPlayerState = PlayerState; }
/// <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="linePassName">Name of the line pass.</param> /// <param name="shadowPassName">Name of the shadow pass.</param> public LineMaterialVariable(IEffectsManager manager, IRenderTechnique technique, LineMaterialCore materialCore, string linePassName = DefaultPassNames.Default, string shadowPassName = DefaultPassNames.ShadowPass) : base(manager, technique, DefaultPointLineConstantBufferDesc, materialCore) { LinePass = technique[linePassName]; ShadowPass = technique[shadowPassName]; this.material = materialCore; }
/// <summary> /// /// </summary> /// <param name="disposeManagedResources"></param> protected override void OnDispose(bool disposeManagedResources) { passDict.Clear(); passList.Clear(); EffectsManager = null; Layout = null; base.OnDispose(disposeManagedResources); }
/// <summary> /// Initializes a new instance of the <see cref="PointMaterialVariable"/> 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 PointMaterialVariable(IEffectsManager manager, IRenderTechnique technique, PointMaterialCore materialCore, string defaultPassName = DefaultPassNames.Default) : base(manager, technique, DefaultPointLineConstantBufferDesc, materialCore) { PointPass = technique[defaultPassName]; ShadowPass = technique[DefaultPassNames.ShadowPass]; DepthPass = technique[DefaultPassNames.DepthPrepass]; this.material = materialCore; }
public MainViewModel(IWindowManager windowManager, IEffectsManager effectsManager) { this.windowManager = windowManager; this.effectsManager = effectsManager; this.modelViewerViewModel = new ModelViewerViewModel(windowManager, effectsManager); this.DoReplacementAdditive = true; this.SelectedAlgorithmTargets = new ObservableCollection <IAlgorithmTarget>(); this.algorithms.Add(new TestAlgorithm()); }
protected override bool OnAttach(IEffectsManager effectsManager) { // --- attach if (!base.OnAttach(effectsManager)) { return(false); } instanceParamBuffer.Initialize(); return(true); }
/// <summary> /// Exports the technique. /// </summary> /// <param name="manager">The manager.</param> /// <param name="techniqueName">Name of the technique.</param> /// <param name="writer">The writer.</param> public static void ExportTechnique(this IEffectsManager manager, string techniqueName, XmlWriter writer) { var ser = new DataContractSerializer(typeof(List <TechniqueDescription>)); var technique = manager[techniqueName].Description; var techniques = new List <TechniqueDescription>(); techniques.Add(technique); ser.WriteObject(writer, techniques); writer.Flush(); }
public VolumeMaterialVariable(IEffectsManager manager, IRenderTechnique technique, VolumeTextureMaterialCoreBase <T> material, string volumePassName = DefaultPassNames.Default) : base(manager, technique, DefaultVolumeConstantBufferDesc, material) { this.material = material; volumePass = technique[volumePassName]; texSlot = volumePass.PixelShader.ShaderResourceViewMapping.TryGetBindSlot(DefaultBufferNames.VolumeTB); gradientSlot = volumePass.PixelShader.ShaderResourceViewMapping.TryGetBindSlot(DefaultBufferNames.ColorStripe1DXTB); samplerSlot = volumePass.PixelShader.SamplerMapping.TryGetBindSlot(DefaultSamplerStateNames.VolumeSampler); }
/// <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)); }
protected override bool OnAttach(IEffectsManager effectsManager) { RenderCore.Attach(EffectTechnique); var screenSpaceCore = RenderCore as ScreenSpacedMeshRenderCore; screenSpaceCore.RelativeScreenLocationX = RelativeScreenLocationX; screenSpaceCore.RelativeScreenLocationY = RelativeScreenLocationY; screenSpaceCore.SizeScale = SizeScale; return(base.OnAttach(effectsManager)); }
/// <summary> /// /// </summary> /// <param name="passDescription"></param> /// <param name="manager"></param> public ShaderPass(ShaderPassDescription passDescription, IEffectsManager manager) { Name = passDescription.Name; if (passDescription.ShaderList != null) { foreach (var shader in passDescription.ShaderList) { var s = manager.ShaderManager.RegisterShader(shader); switch (shader.ShaderType) { case ShaderStage.Vertex: VertexShader = s as VertexShader; break; case ShaderStage.Domain: DomainShader = s as DomainShader; break; case ShaderStage.Hull: HullShader = s as HullShader; break; case ShaderStage.Geometry: GeometryShader = s as GeometryShader; break; case ShaderStage.Pixel: PixelShader = s as PixelShader; break; case ShaderStage.Compute: ComputeShader = s as ComputeShader; break; } } } BlendState = passDescription.BlendStateDescription != null? Collect(manager.StateManager.Register((BlendStateDescription)passDescription.BlendStateDescription)) : BlendStateProxy.Empty; DepthStencilState = passDescription.DepthStencilStateDescription != null? Collect(manager.StateManager.Register((DepthStencilStateDescription)passDescription.DepthStencilStateDescription)) : DepthStencilStateProxy.Empty; RasterState = passDescription.RasterStateDescription != null? Collect(manager.StateManager.Register((RasterizerStateDescription)passDescription.RasterStateDescription)) : RasterizerStateProxy.Empty; BlendFactor = passDescription.BlendFactor; StencilRef = passDescription.StencilRef; SampleMask = passDescription.SampleMask; Topology = passDescription.Topology; }
/// <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; }
/// <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)); }