Houdini OpenCL

SOP:

simple moveKernel

#include "interpolate.h" 
float lerpConstant( constant float * in, int size, float pos);

float3 getFloat3(global float * data, int i)
{
        return (float3)(data[i*3+0], data[i*3+1], data[i*3+2]);
}

void setFloat3(global float * dataout, int i, float3 datain)
{
        dataout[i*3+0] = datain.s0;
        dataout[i*3+1] = datain.s1;
        dataout[i*3+2] = datain.s2;
}

kernel void moveKernel( 
                 float time,
                 int test_length, 
                 global float * test
                 
)
{
    int idx = get_global_id(0);
    if (idx >= test_length)
        return;

    float3 datain = getFloat3(test,idx);
    datain.s1 += time;
    setFloat3(test,idx, datain);
}
View Code

binding:

<2>

原文地址:https://www.cnblogs.com/gearslogy/p/7447755.html