Объявление
public void SetTextureFromGlobal(int kernelIndex, string name, string globalTextureName);public void SetTextureFromGlobal(int kernelIndex, int nameID, int globalTextureNameID);
Параметры
kernelIndex | Для какого ядра ставится текстура. См. раздел FindKernel. |
nameID | Идентификатор имени свойства. Чтобы получить его, используйте Shader.PropertyToID. |
name | Имя переменной буфера в коде шейдера. |
globalTextureName | Глобальное свойство текстуры для назначения шейдеру. |
globalTextureNameID | Идентификатор имени свойства. Чтобы получить его, используйте Shader.PropertyToID. |
Описание
Установите параметр текстуры из глобального свойства текстуры.
Эта функция может либо установить обычную текстуру, которая считывается в вычислить шейдер или выходную текстуру, которая записывается шейдером. Для выходной текстуры это должна быть RenderTexture со случайной записью. флаг включен, см. RenderTexture.enableRandomWrite.
Буферы и текстуры устанавливаются для каждого ядра. Используйте FindKernel, чтобы найти индекс ядра по имени функции.
Смотрите так же: FindKernel, SetBuffer, SetTexture, Shader.SetGlobalTexture.
// Assign the CameraMotionVectorsTexture global texture to a compute texture
using System;
using UnityEngine;
public class SampleBehaviour : MonoBehaviour
{
public int renderTargetWidth;
public int renderTargetHeight;
ComputeShader myComputeShader;
void ComputeUsingMotionVector()
{
int kKernelIndex = 0;
myComputeShader.SetTextureFromGlobal(kKernelIndex, "computeTexture", "_CameraMotionVectorsTexture");
myComputeShader.Dispatch(kKernelIndex, renderTargetWidth, renderTargetHeight, 1);
}
}