将Shader输出用于绘图以外的其他内容

时间:2016-01-01 23:59:30

标签: java parallel-processing shader gpu lwjgl

如果我没弄错的话,着色器程序基本上是通过GPU可以并行执行的操作来运行的,与CPU相比,每秒可以进行多次操作。我想知道是否有任何方法可以使用LWJGL运行着色器程序并将其用于除绘图之外的其他内容。例如,如果我有一个任意float值的数组和另一个大小相等的float[],我想将第二个数组中的每个元素设置为-1,0或1,基于在第一个数组中相应元素的符号上,在我看来应该有一些方法来使用一个类似于下面的着色器程序:

in float a;

out float b;

void main(void){
    float t = 0;
    if(a > 0)
        t = 1;
    if(a < 0)
        t = -1;
    b = t;
}

为数组中的每个元素运行它,将第一个数组的元素作为a传递给第一个数组,并将第二个数组的元素设置为输出b。我想象如果它可以在GPU上执行,那么对于非常大的阵列来说,这可以在更短的时间内完成,并且如果需要更复杂的操作,这将更加真实。我以前尝试过使用JOCL和CUDA,但是没有多少运气,发现它非常复杂,到目前为止,我喜欢我所看到的LWJGL出现的内容简单,所以如果有办法做我要问的事,请解释一下。谢谢。

0 个答案:

没有答案