blob: 4a2ffdebf2081b4eab9f33fa35c17d86b8618b45 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
<languageVersion : 1.0;>
kernel Float4x4
< namespace : "testing";
vendor : "Apache";
version : 1;
description : "Float4x4 with default.";
>
{
input image4 src;
output pixel4 dst;
parameter float4x4 allFloats
<
minValue:float4x4(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
maxValue:float4x4(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
defaultValue:float4x4(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
>;
void
evaluatePixel()
{
float2 pos = outCoord();
float x = pos.x;
float y = pos.y;
int4 box1bounds;
int4 box2bounds;
int4 box3bounds;
int4 box4bounds;
int4 box5bounds;
int4 box6bounds;
int4 box7bounds;
int4 box8bounds;
int4 box9bounds;
int4 box10bounds;
int4 box11bounds;
int4 box12bounds;
int4 box13bounds;
int4 box14bounds;
int4 box15bounds;
int4 box16bounds;
box1bounds.x = 0; //minX
box1bounds.y = 25; //maxX
box1bounds.z = 0; //minY
box1bounds.w = 25; //maxY
box2bounds.x = 26; //minX
box2bounds.y = 50; //maxX
box2bounds.z = 0; //minY
box2bounds.w = 25; //maxY
box3bounds.x = 51; //minX
box3bounds.y = 75; //maxX
box3bounds.z = 0; //minY
box3bounds.w = 25; //maxY
box4bounds.x = 76; //minX
box4bounds.y = 100; //maxX
box4bounds.z = 0; //minY
box4bounds.w = 25; //maxY
box5bounds.x = 0; //minX
box5bounds.y = 25; //maxX
box5bounds.z = 26; //minY
box5bounds.w = 50; //maxY
box6bounds.x = 26; //minX
box6bounds.y = 50; //maxX
box6bounds.z = 26; //minY
box6bounds.w = 50; //maxY
box7bounds.x = 51; //minX
box7bounds.y = 75; //maxX
box7bounds.z = 26; //minY
box7bounds.w = 50; //maxY
box8bounds.x = 76; //minX
box8bounds.y = 100; //maxX
box8bounds.z = 26; //minY
box8bounds.w = 50; //maxY
box9bounds.x = 0; //minX
box9bounds.y = 25; //maxX
box9bounds.z = 51; //minY
box9bounds.w = 75; //maxY
box10bounds.x = 26; //minX
box10bounds.y = 50; //maxX
box10bounds.z = 51; //minY
box10bounds.w = 75; //maxY
box11bounds.x = 51; //minX
box11bounds.y = 75; //maxX
box11bounds.z = 51; //minY
box11bounds.w = 75; //maxY
box12bounds.x = 76; //minX
box12bounds.y = 100; //maxX
box12bounds.z = 51; //minY
box12bounds.w = 75; //maxY
box13bounds.x = 0; //minX
box13bounds.y = 25; //maxX
box13bounds.z = 76; //minY
box13bounds.w = 100; //maxY
box14bounds.x = 26; //minX
box14bounds.y = 50; //maxX
box14bounds.z = 76; //minY
box14bounds.w = 100; //maxY
box15bounds.x = 51; //minX
box15bounds.y = 75; //maxX
box15bounds.z = 76; //minY
box15bounds.w = 100; //maxY
box16bounds.x = 76; //minX
box16bounds.y = 100; //maxX
box16bounds.z = 76; //minY
box16bounds.w = 100; //maxY
dst.g = float(0);
dst.b = float(0);
dst.a = sampleNearest(src, outCoord()).a;
if(x >= float(box1bounds.x) && x <= float(box1bounds.y) && y >= float(box1bounds.z) && y <= float(box1bounds.w)){
dst.r = allFloats[0][0];
}else if(x >= float(box2bounds.x) && x <= float(box2bounds.y) && y >= float(box2bounds.z) && y <= float(box2bounds.w)){
dst.r = allFloats[0][1];
}else if(x >= float(box3bounds.x) && x <= float(box3bounds.y) && y >= float(box3bounds.z) && y <= float(box3bounds.w)){
dst.r = allFloats[0][2];
}else if(x >= float(box4bounds.x) && x <= float(box4bounds.y) && y >= float(box4bounds.z) && y <= float(box4bounds.w)){
dst.r = allFloats[0][3];
}else if(x >= float(box5bounds.x) && x <= float(box5bounds.y) && y >= float(box5bounds.z) && y <= float(box5bounds.w)){
dst.r = allFloats[1][0];
}else if(x >= float(box6bounds.x) && x <= float(box6bounds.y) && y >= float(box6bounds.z) && y <= float(box6bounds.w)){
dst.r = allFloats[1][1];
}else if(x >= float(box7bounds.x) && x <= float(box7bounds.y) && y >= float(box7bounds.z) && y <= float(box7bounds.w)){
dst.r = allFloats[1][2];
}else if(x >= float(box8bounds.x) && x <= float(box8bounds.y) && y >= float(box8bounds.z) && y <= float(box8bounds.w)){
dst.r = allFloats[1][3];
}else if(x >= float(box9bounds.x) && x <= float(box9bounds.y) && y >= float(box9bounds.z) && y <= float(box9bounds.w)){
dst.r = allFloats[2][0];
}else if(x >= float(box10bounds.x) && x <= float(box10bounds.y) && y >= float(box10bounds.z) && y <= float(box10bounds.w)){
dst.r = allFloats[2][1];
}else if(x >= float(box11bounds.x) && x <= float(box11bounds.y) && y >= float(box11bounds.z) && y <= float(box11bounds.w)){
dst.r = allFloats[2][2];
}else if(x >= float(box12bounds.x) && x <= float(box12bounds.y) && y >= float(box12bounds.z) && y <= float(box12bounds.w)){
dst.r = allFloats[2][3];
}else if(x >= float(box13bounds.x) && x <= float(box13bounds.y) && y >= float(box13bounds.z) && y <= float(box13bounds.w)){
dst.r = allFloats[3][0];
}else if(x >= float(box14bounds.x) && x <= float(box14bounds.y) && y >= float(box14bounds.z) && y <= float(box14bounds.w)){
dst.r = allFloats[3][1];
}else if(x >= float(box15bounds.x) && x <= float(box15bounds.y) && y >= float(box15bounds.z) && y <= float(box15bounds.w)){
dst.r = allFloats[3][2];
}else if(x >= float(box16bounds.x) && x <= float(box16bounds.y) && y >= float(box16bounds.z) && y <= float(box16bounds.w)){
dst.r = allFloats[3][3];
}else{
dst.r = float(0);
}
}
}