16749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni/*
26749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni * Copyright (C) 2012 The Android Open Source Project
36749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni *
46749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni * Licensed under the Apache License, Version 2.0 (the "License");
56749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni * you may not use this file except in compliance with the License.
66749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni * You may obtain a copy of the License at
76749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni *
86749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni *      http://www.apache.org/licenses/LICENSE-2.0
96749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni *
106749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni * Unless required by applicable law or agreed to in writing, software
116749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni * distributed under the License is distributed on an "AS IS" BASIS,
126749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni * See the License for the specific language governing permissions and
146749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni * limitations under the License.
156749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni */
166749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
176749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#pragma version(1)
186749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#pragma rs java_package_name(rs2spirv)
196749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni#pragma rs_fp_relaxed
206749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
216749f541c20e86f5deb6fd421ed5849ef43c275cYang Nistatic float brightM = 0.f;
226749f541c20e86f5deb6fd421ed5849ef43c275cYang Nistatic float brightC = 0.f;
236749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
246749f541c20e86f5deb6fd421ed5849ef43c275cYang Nivoid setBright(float v) {
256749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni    brightM = pow(2.f, v / 100.f);
266749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni    brightC = 127.f - brightM * 127.f;
276749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni}
286749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni
296749f541c20e86f5deb6fd421ed5849ef43c275cYang Niuchar4 __attribute__((kernel)) contrast(uchar4 in) {
306749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni    float3 v = convert_float3(in.rgb) * brightM + brightC;
316749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni    uchar4 o;
326749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni    o.rgb = convert_uchar3(clamp(v, 0.f, 255.f));
336749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni    o.a = 0xff;
346749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni    return o;
356749f541c20e86f5deb6fd421ed5849ef43c275cYang Ni}