blob: 6eca09e775e4764ff65de7b5da4df100d91a0f36 [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 Int
< namespace : "testing";
vendor : "Apache";
version : 1;
description : "Int with a default";
>
{
input image4 src;
output pixel4 dst;
parameter int theInt
<
minValue:int(0);
maxValue:int(7);
defaultValue:int(0);
>;
void
evaluatePixel()
{
float2 pos = outCoord();
float x = pos.x;
float y = pos.y;
float4 bit1Bounds;
float4 bit2Bounds;
float4 bit3Bounds;
// Booleans are not supported in hydra byte code, so we'll use an int's 1 and 0.
int bit1 = (theInt == 1 || theInt == 3 || theInt == 5 || theInt == 7) ? 1 : 0;
int bit2 = (theInt == 2 || theInt == 3 || theInt == 6 || theInt == 7) ? 1 : 0;
int bit3 = (theInt >= 4 && theInt <= 7) ? 1 : 0;
bit1Bounds.x = float(67); //minX
bit1Bounds.y = float(100); //maxX
bit1Bounds.z = float(0); //minY
bit1Bounds.w = float(25); //maxY
bit2Bounds.x = float(34);
bit2Bounds.y = float(66);
bit2Bounds.z = float(0);
bit2Bounds.w = float(25);
bit3Bounds.x = float(0);
bit3Bounds.y = float(33);
bit3Bounds.z = float(0);
bit3Bounds.w = float(25);
// 1's place
if(
((bit1 > 0) && x >= bit1Bounds.x && y <= bit1Bounds.w)||
((bit2 > 0) && x >= bit2Bounds.x && x <= bit2Bounds.y && y >= bit2Bounds.z && y <= bit2Bounds.w) ||
((bit3 > 0) && x >= bit3Bounds.x && x <= bit3Bounds.y && y >= bit3Bounds.z && y <= bit3Bounds.w))
{
dst.r = float(0);
dst.g = float(0);
dst.b = float(0);
}else{
dst.r = float(0.5);
dst.g = float(0.5);
dst.b = float(0.5);
}
dst.a = sampleNearest(src, outCoord()).a;
}
}