kernel NewFilter < nameSpace : "your namespace"; vendor : "your vendor"; version : 1; description : "your description"; > { parameter float3x3 structure < defaultValue: float3x3( 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ); >; parameter float divisor< minValue: 1.0; maxValue: 100.0; defaultValue: 9.0; >; void evaluatePixel(in image3 src, out pixel3 dst) { float2 coord = outCoord(); pixel3 p00 = structure[0][0] * sampleLinear(src,coord-float2(1,1)); pixel3 p01 = structure[1][0] * sampleLinear(src,coord-float2(0,1)); pixel3 p02 = structure[2][0] * sampleLinear(src,coord-float2(-1,1)); pixel3 p10 = structure[0][1] * sampleLinear(src,coord-float2(1,0)); pixel3 p11 = structure[1][1] * sampleLinear(src,coord); pixel3 p12 = structure[2][1] * sampleLinear(src,coord+float2(1,0)); pixel3 p20 = structure[0][2] * sampleLinear(src,coord+float2(-1,1)); pixel3 p21 = structure[1][2] * sampleLinear(src,coord+float2(0,1)); pixel3 p22 = structure[2][2] * sampleLinear(src,coord+float2(1,1)); dst = ( p00 + p01 + p02 + p10 + p11 + p12 + p20 + p21 + p22 ) / divisor; } }