Compute Shader 是为了在Unity中使用GPGPU,即通用目的图形计算单元,它独立于渲染管线,通用目的也说明了它可以用于多种目的,与CPU相比,GPU的优势在于多线程并行计算,当你想对大量数据进行相同的计算的时候,会快很多。
以下是使用说明:
#pragma kernel CSMain
#define GroupLength_x 8
RWStructuredBuffer<int> buffer;
[numthreads(4,4,1)]
void CSMain (uint3 id : SV_DispatchThreadID)
{
buffer[id.x + id.y * GroupLength_x] = id.x + id.y * GroupLength_x;
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
---------------------------------------------------------------------------------
public class _t1 : MonoBehaviour {
public ComputeShader cs;
// Use this for initialization
void Start () {
ComputeBuffer buffer = new ComputeBuffer(4 * 4 * 2 * 2, sizeof(int));
cs.SetBuffer(0, "buffer", buffer);
cs.Dispatch(0, 2, 2, 1);
int[] output = new int[buffer.count];
buffer.GetData(output);
foreach (int i in output)
{
print(i);

本文介绍了Unity中的Compute Shader,重点讲解了如何使用Compute Shader进行GPGPU计算,包括RWStructuredBuffer、ComputeBuffer的使用,线程组与线程矩阵的概念,以及如何通过Kernel索引进行操作。同时,文章还探讨了线程组的限制和优势,以及如何提高计算效率。
最低0.47元/天 解锁文章
2371

被折叠的 条评论
为什么被折叠?



