Создание входных данных для вычислительного шейдера в URP
Когда вы запускаете вычислительный шейдер в проходе рендеринга, вы можете выделить буфер для предоставления входных данных для вычислительного шейдера.
Выполните следующие действия:
-
Создайте графический буфер, а затем добавьте к нему манипулятор в данных пропуска. Например:
// Declare an input buffer public GraphicsBuffer inputBuffer; // Add a handle to the input buffer in your pass data class PassData { ... public BufferHandle input; } // Create the buffer in the render pass constructor public ComputePass(ComputeShader computeShader) { // Create the input buffer as a structured buffer // Create the buffer with a length of 5 integers, so you can input 5 values. inputBuffer = new GraphicsBuffer(GraphicsBuffer.Target.Structured, 5, sizeof(int)); } -
Устанавливает данные в буфере. Например:
var inputValues = new List<int> { 1, 2, 3, 4, 5 }; inputBuffer.SetData(inputValues); -
Используйте граф рендеринга
ImportBufferAPI для преобразования буфера в адрес, который может использовать система графа рендеринга, а затем установите полеBufferHandleв данных прохода. Например:BufferHandle inputHandleRG = renderGraph.ImportBuffer(inputBuffer); passData.input = inputHandleRG; -
Используйте метод
UseBufferдля установки буфера как читаемого буфера в системе графов отображения. Например:builder.UseBuffer(passData.input, AccessFlags.Read); -
В вашем методе
SetRenderFuncиспользуйтеSetComputeBufferParamAPI для присоединения буфера к вычислительному шейдеру. Например:// The first parameter is the compute shader // The second parameter is the function that uses the buffer // The third parameter is the RWStructuredBuffer input variable to attach the buffer to // The fourth parameter is the handle to the input buffer context.cmd.SetComputeBufferParam(passData.computeShader, passData.computeShader.FindKernel("Main"), "inputData", passData.input);
Пример
Полный пример см. в примере Вычисление в примерах пакета Universal Render Pipeline (URP).
Дополнительные ресурсы
- Вычисление шейдеров
- Запись шейдеров