Version: 2021.3

ComputeShader.SetTextureFromGlobal

切换到手册
public void SetTextureFromGlobal (int kernelIndex, string name, string globalTextureName);
public void SetTextureFromGlobal (int kernelIndex, int nameID, int globalTextureNameID);

参数

kernelIndex 当前为其设置纹理的内核。请参阅 FindKernel
nameID 属性名称 ID,使用 Shader.PropertyToID 获取。
name 着色器代码中的缓冲区变量的名称。
globalTextureName 要指定给该着色器的全局纹理属性。
globalTextureNameID 属性名称 ID,使用 Shader.PropertyToID 获取。

描述

从全局纹理属性设置纹理参数。

此函数可设置在 计算着色器中读取的常规纹理,或者设置由该着色器写入到的输出纹理。 对于输出纹理,其必须是启用了随机写入标志的 RenderTexture, 请参阅 RenderTexture.enableRandomWrite

缓冲区和纹理按内核逐一设置。可使用 FindKernel 按函数名称查找内核索引。

另请参阅:FindKernelSetBufferSetTextureShader.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); } }