public void Process(CommandList context) { Span <float> inputBuffer = context.GetBuffer((int)InputBufferIndex); Span <float> outputBuffer = context.GetBuffer((int)OutputBufferIndex); if (IsEffectEnabled) { Span <int> inputBufferInt = MemoryMarshal.Cast <float, int>(inputBuffer); Span <int> outputBufferInt = MemoryMarshal.Cast <float, int>(outputBuffer); // Convert input data to the target format for user (int) DataSourceHelper.ToInt(inputBufferInt, inputBuffer, inputBuffer.Length); // Send the input to the user Write(context.MemoryManager, OutputBuffer, CountMax, inputBufferInt, context.SampleCount, WriteOffset, UpdateCount); // Convert back to float just in case it's reused DataSourceHelper.ToFloat(inputBuffer, inputBufferInt, inputBuffer.Length); // Retrieve the input from user uint readResult = Read(context.MemoryManager, InputBuffer, CountMax, outputBufferInt, context.SampleCount, WriteOffset, UpdateCount); // Convert the outputBuffer back to the target format of the renderer (float) DataSourceHelper.ToFloat(outputBuffer, outputBufferInt, outputBuffer.Length); if (readResult != context.SampleCount) { outputBuffer.Slice((int)readResult, (int)context.SampleCount - (int)readResult).Fill(0); } } else { AuxiliaryBufferInfo.Reset(context.MemoryManager, BufferInfo.SendBufferInfo); AuxiliaryBufferInfo.Reset(context.MemoryManager, BufferInfo.ReturnBufferInfo); if (InputBufferIndex != OutputBufferIndex) { inputBuffer.CopyTo(outputBuffer); } } }
public void Process(CommandList context) { Span <float> inputBuffer = context.GetBuffer((int)InputBufferIndex); if (IsEffectEnabled) { Span <int> inputBufferInt = MemoryMarshal.Cast <float, int>(inputBuffer); // Convert input data to the target format for user (int) DataSourceHelper.ToInt(inputBufferInt, inputBuffer, inputBuffer.Length); // Send the input to the user Write(context.MemoryManager, OutputBuffer, CountMax, inputBufferInt, context.SampleCount, WriteOffset, UpdateCount); // Convert back to float DataSourceHelper.ToFloat(inputBuffer, inputBufferInt, inputBuffer.Length); } else { AuxiliaryBufferInfo.Reset(context.MemoryManager, DspBufferInfoAddress); } }