/******************************************************************************* * Breakout Cave Survey Visualizer * * Copyright (C) 2014 James Edwards * * jedwards8 at fastmail dot fm * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 51 * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *******************************************************************************/ package org.andork.jogl.shadelet; public class GradientShadelet extends Shadelet { public GradientShadelet() { setProperty("loValue", "loValue"); setProperty("hiValue", "hiValue"); setProperty("loColor", "loColor"); setProperty("hiColor", "hiColor"); setProperty("param", "param"); setProperty("out", "gl_FragColor"); setProperty("loValueDeclaration", "/* fragment */ uniform float $loValue;"); setProperty("hiValueDeclaration", "/* fragment */ uniform float $hiValue;"); setProperty("loColorDeclaration", "/* fragment */ uniform vec4 $loColor;"); setProperty("hiColorDeclaration", "/* fragment */ uniform vec4 $hiColor;"); setProperty("paramDeclaration", "varying float $param;"); } @Override public String getFragmentShaderMainCode() { return " $out = mix($loColor, $hiColor, clamp(($param - $loValue) / ($hiValue - $loValue), 0.0, 1.0));"; } public String hiColor() { return replaceProperties("$hiColor"); } public GradientShadelet hiColor(Object hiColor) { setProperty("hiColor", hiColor); return this; } public GradientShadelet hiColorDeclaration(Object hiColorDeclaration) { setProperty("hiColorDeclaration", hiColorDeclaration); return this; } public String hiValue() { return replaceProperties("$hiValue"); } public GradientShadelet hiValue(String hiValue) { setProperty("hiValue", hiValue); return this; } public GradientShadelet hiValueDeclaration(String hiValueDeclaration) { setProperty("hiValueDeclaration", hiValueDeclaration); return this; } public String loColor() { return replaceProperties("$loColor"); } public GradientShadelet loColor(Object loColor) { setProperty("loColor", loColor); return this; } public GradientShadelet loColorDeclaration(Object loColorDeclaration) { setProperty("loColorDeclaration", loColorDeclaration); return this; } public String loValue() { return replaceProperties("$loValue"); } public GradientShadelet loValue(String loValue) { setProperty("loValue", loValue); return this; } public GradientShadelet loValueDeclaration(String loValueDeclaration) { setProperty("loValueDeclaration", loValueDeclaration); return this; } public GradientShadelet out(String out) { setProperty("out", out); return this; } public GradientShadelet outDeclaration(String outDeclaration) { setProperty("outDeclaration", outDeclaration); return this; } public GradientShadelet param(Object param) { setProperty("param", param); return this; } public GradientShadelet paramDeclaration(Object paramDeclaration) { setProperty("paramDeclaration", paramDeclaration); return this; } }