/// <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); } }
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); } }
/// <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; } }
/// <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); } }
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; }
/// <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); }
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); }
protected override void OnDetach() { ModelConstBuffer = null; }
protected override void OnAttach(IRenderTechnique technique) { ModelConstBuffer = technique.ConstantBufferPool.Register(bufferDesc); }