compute shader_图形学

由于一些情况,分几次完成

这里主要是考虑处理2D图片

基本概念就是分组,一个组内多个线程,这样子

首先有一个numthreads(8, 8, 1) 这个是用来指定一个组有多少线程,numthread.x*y*z<=1024,然后分多少组,假如是1920*1080 图片  那就是240*135*1组

dispatch会指定组,上图分的就是5 3 2组,一个组有10 8 3个线程

这几个变量的解释

compute shader_图形学_02

那么我想处理图片,需要texCoord,这个其实就是了,2D情况下算出来的xy就是像素的xy,texelFetch直接读就可以了

compute shader_编译链接_03

这个就是把索引给一维化 threadIndex.z*threadSize.x*threadSize.y+threadIndex.y*threadSize.x+threadIndex.x 

compute shader_图形学_04

这是组内的线程的索引

compute shader_编译链接_05

这个是这个组的索引

然后如果只跑computeshader,那么program可以不绑vertex fragment

就只编译链接computeshader