/// <inheritdoc/> protected override void InitializeCore() { renderModelObjectInfoKey = RootRenderFeature.RenderData.CreateObjectKey <RenderModelFrameInfo>(); renderEffectKey = ((RootEffectRenderFeature)RootRenderFeature).RenderEffectKey; blendMatrices = ((RootEffectRenderFeature)RootRenderFeature).CreateDrawCBufferOffsetSlot(TransformationSkinningKeys.BlendMatrixArray.Name); }
/// <inheritdoc/> protected override void InitializeCore() { renderModelObjectInfoKey = RootRenderFeature.RenderData.CreateObjectKey<RenderModelFrameInfo>(); renderEffectKey = ((RootEffectRenderFeature)RootRenderFeature).RenderEffectKey; blendMatrices = ((RootEffectRenderFeature)RootRenderFeature).CreateDrawCBufferOffsetSlot(TransformationSkinningKeys.BlendMatrixArray.Name); }
/// <inheritdoc/> protected override void InitializeCore() { renderModelObjectInfoKey = RootRenderFeature.RenderData.CreateObjectKey <RenderModelFrameInfo>(); renderModelViewInfoKey = RootRenderFeature.RenderData.CreateViewObjectKey <RenderModelViewInfo>(); time = ((RootEffectRenderFeature)RootRenderFeature).CreateFrameCBufferOffsetSlot(GlobalKeys.Time.Name); view = ((RootEffectRenderFeature)RootRenderFeature).CreateViewCBufferOffsetSlot(TransformationKeys.View.Name); camera = ((RootEffectRenderFeature)RootRenderFeature).CreateViewCBufferOffsetSlot(CameraKeys.NearClipPlane.Name); world = ((RootEffectRenderFeature)RootRenderFeature).CreateDrawCBufferOffsetSlot(TransformationKeys.World.Name); }
/// <inheritdoc/> protected override void InitializeCore() { renderModelObjectInfoKey = RootRenderFeature.RenderData.CreateObjectKey<RenderModelFrameInfo>(); renderModelViewInfoKey = RootRenderFeature.RenderData.CreateViewObjectKey<RenderModelViewInfo>(); time = ((RootEffectRenderFeature)RootRenderFeature).CreateFrameCBufferOffsetSlot(GlobalKeys.Time.Name); view = ((RootEffectRenderFeature)RootRenderFeature).CreateViewCBufferOffsetSlot(TransformationKeys.View.Name); camera = ((RootEffectRenderFeature)RootRenderFeature).CreateViewCBufferOffsetSlot(CameraKeys.NearClipPlane.Name); world = ((RootEffectRenderFeature)RootRenderFeature).CreateDrawCBufferOffsetSlot(TransformationKeys.World.Name); }
/// <inheritdoc/> protected override void InitializeCore() { base.InitializeCore(); renderEffectKey = ((RootEffectRenderFeature)RootRenderFeature).RenderEffectKey; fog = ((RootEffectRenderFeature)RootRenderFeature).CreateDrawCBufferOffsetSlot(FogEffectKeys.FogColor.Name); bend = ((RootEffectRenderFeature)RootRenderFeature).CreateDrawCBufferOffsetSlot(TransformationBendWorldKeys.DeformFactorX.Name); uvChange = ((RootEffectRenderFeature)RootRenderFeature).CreateDrawCBufferOffsetSlot(TransformationTextureUVKeys.TextureRegion.Name); }
/// <inheritdoc/> protected override void InitializeCore() { base.InitializeCore(); renderEffectKey = RenderEffectKey; // The offset starts with the first element in the buffer perViewCBufferOffset = CreateViewCBufferOffsetSlot(ParticleUtilitiesKeys.ViewMatrix.Name); perMaterialDescriptorSetSlot = GetOrCreateEffectDescriptorSetSlot("PerMaterial"); }
public ConstantBufferOffsetReference CreateViewCBufferOffsetSlot(string variable) { // TODO: Handle duplicates var slotReference = new ConstantBufferOffsetReference(-1); for (int index = 0; index < viewCBufferOffsetSlots.Count; index++) { var slot = viewCBufferOffsetSlots[index]; if (slot.Variable == null) { // Empty slot, reuse it slotReference = new ConstantBufferOffsetReference(index); } } // Need a new slot if (slotReference.Index == -1) { slotReference = new ConstantBufferOffsetReference(viewCBufferOffsetSlots.Count); viewCBufferOffsetSlots.Add(new NamedSlotDefinition(variable)); } // Update existing instantiated buffers foreach (var viewResourceLayoutEntry in viewResourceLayouts) { var resourceGroupLayout = viewResourceLayoutEntry.Value; // Ensure there is enough space if (resourceGroupLayout.ConstantBufferOffsets == null || resourceGroupLayout.ConstantBufferOffsets.Length < viewCBufferOffsetSlots.Count) { Array.Resize(ref resourceGroupLayout.ConstantBufferOffsets, viewCBufferOffsetSlots.Count); } ResolveCBufferOffset(resourceGroupLayout, slotReference.Index, variable); } return(slotReference); }
public ConstantBufferOffsetReference CreateDrawCBufferOffsetSlot(string variable) { // TODO: Handle duplicates, and allow removal var slotReference = new ConstantBufferOffsetReference(drawCBufferOffsetSlots.Count); drawCBufferOffsetSlots.Add(new ConstantBufferOffsetDefinition(variable)); // Update existing instantiated buffers foreach (var effect in InstantiatedEffects) { var resourceGroupLayout = effect.Value.PerDrawLayout; // Ensure there is enough space if (resourceGroupLayout.ConstantBufferOffsets == null || resourceGroupLayout.ConstantBufferOffsets.Length < drawCBufferOffsetSlots.Count) { Array.Resize(ref resourceGroupLayout.ConstantBufferOffsets, drawCBufferOffsetSlots.Count); } ResolveCBufferOffset(resourceGroupLayout, slotReference.Index, variable); } return(slotReference); }
public ConstantBufferOffsetReference CreateFrameCBufferOffsetSlot(string variable) { // TODO: Handle duplicates, and allow removal var slotReference = new ConstantBufferOffsetReference(frameCBufferOffsetSlots.Count); frameCBufferOffsetSlots.Add(new ConstantBufferOffsetDefinition(variable)); // Update existing instantiated buffers foreach (var frameResourceLayoutEntry in frameResourceLayouts) { var resourceGroupLayout = frameResourceLayoutEntry.Value; // Ensure there is enough space if (resourceGroupLayout.ConstantBufferOffsets == null || resourceGroupLayout.ConstantBufferOffsets.Length < frameCBufferOffsetSlots.Count) { Array.Resize(ref resourceGroupLayout.ConstantBufferOffsets, frameCBufferOffsetSlots.Count); } ResolveCBufferOffset(resourceGroupLayout, slotReference.Index, variable); } return(slotReference); }
public int GetConstantBufferOffset(ConstantBufferOffsetReference offsetReference) { return(ConstantBufferOffsets[offsetReference.Index]); }
public ConstantBufferOffsetReference CreateDrawCBufferOffsetSlot(string variable) { // TODO: Handle duplicates, and allow removal var slotReference = new ConstantBufferOffsetReference(drawCBufferOffsetSlots.Count); drawCBufferOffsetSlots.Add(new NamedSlotDefinition(variable)); // Update existing instantiated buffers foreach (var effect in InstantiatedEffects) { var resourceGroupLayout = effect.Value.PerDrawLayout; // Ensure there is enough space if (resourceGroupLayout.ConstantBufferOffsets == null || resourceGroupLayout.ConstantBufferOffsets.Length < drawCBufferOffsetSlots.Count) Array.Resize(ref resourceGroupLayout.ConstantBufferOffsets, drawCBufferOffsetSlots.Count); ResolveCBufferOffset(resourceGroupLayout, slotReference.Index, variable); } return slotReference; }
public void RemoveViewCBufferOffsetSlot(ConstantBufferOffsetReference cbufferOffsetSlot) { viewCBufferOffsetSlots[cbufferOffsetSlot.Index] = new NamedSlotDefinition(null); }
public ConstantBufferOffsetReference CreateViewCBufferOffsetSlot(string variable) { // TODO: Handle duplicates var slotReference = new ConstantBufferOffsetReference(-1); for (int index = 0; index < viewCBufferOffsetSlots.Count; index++) { var slot = viewCBufferOffsetSlots[index]; if (slot.Variable == null) { // Empty slot, reuse it slotReference = new ConstantBufferOffsetReference(index); } } // Need a new slot if (slotReference.Index == -1) { slotReference = new ConstantBufferOffsetReference(viewCBufferOffsetSlots.Count); viewCBufferOffsetSlots.Add(new NamedSlotDefinition(variable)); } // Update existing instantiated buffers foreach (var viewResourceLayoutEntry in viewResourceLayouts) { var resourceGroupLayout = viewResourceLayoutEntry.Value; // Ensure there is enough space if (resourceGroupLayout.ConstantBufferOffsets == null || resourceGroupLayout.ConstantBufferOffsets.Length < viewCBufferOffsetSlots.Count) Array.Resize(ref resourceGroupLayout.ConstantBufferOffsets, viewCBufferOffsetSlots.Count); ResolveCBufferOffset(resourceGroupLayout, slotReference.Index, variable); } return slotReference; }
public ConstantBufferOffsetReference CreateFrameCBufferOffsetSlot(string variable) { // TODO: Handle duplicates, and allow removal var slotReference = new ConstantBufferOffsetReference(frameCBufferOffsetSlots.Count); frameCBufferOffsetSlots.Add(new NamedSlotDefinition(variable)); // Update existing instantiated buffers foreach (var frameResourceLayoutEntry in frameResourceLayouts) { var resourceGroupLayout = frameResourceLayoutEntry.Value; // Ensure there is enough space if (resourceGroupLayout.ConstantBufferOffsets == null || resourceGroupLayout.ConstantBufferOffsets.Length < frameCBufferOffsetSlots.Count) Array.Resize(ref resourceGroupLayout.ConstantBufferOffsets, frameCBufferOffsetSlots.Count); ResolveCBufferOffset(resourceGroupLayout, slotReference.Index, variable); } return slotReference; }
public int GetConstantBufferOffset(ConstantBufferOffsetReference offsetReference) { return ConstantBufferOffsets[offsetReference.Index]; }