use of com.gempukku.libgdx.graph.shader.ClampMethod in project gdx-graph by MarcinSc.
the class GradientShaderNodeBuilder method buildCommonNode.
@Override
protected ObjectMap<String, ? extends FieldOutput> buildCommonNode(boolean designTime, String nodeId, JsonValue data, ObjectMap<String, FieldOutput> inputs, ObjectSet<String> producedOutputs, CommonShaderBuilder commonShaderBuilder, GraphShaderContext graphShaderContext, GraphShader graphShader) {
FieldOutput inputValue = inputs.get("input");
Array<ColorPoint> pointArray = new Array<>();
JsonValue points = data.get("points");
for (String point : points.asStringArray()) {
String[] split = point.split(",");
pointArray.add(new ColorPoint(Color.valueOf(split[0]), Float.parseFloat(split[1])));
}
ClampMethod clampMethod = ClampMethod.valueOf(data.getString("clamp", "Normal"));
String remapValueFunctionName = "gradient_" + nodeId;
String functionText = createGradientFunction(remapValueFunctionName, pointArray, clampMethod);
commonShaderBuilder.addFunction(remapValueFunctionName, functionText);
String name = "result_" + nodeId;
commonShaderBuilder.addMainLine("// Gradient node");
commonShaderBuilder.addMainLine("vec4 " + name + " = " + remapValueFunctionName + "(" + inputValue + ");");
return LibGDXCollections.singletonMap("output", new DefaultFieldOutput(ShaderFieldType.Vector4, name));
}
use of com.gempukku.libgdx.graph.shader.ClampMethod in project gdx-graph by MarcinSc.
the class RemapValueShaderBoxProducer method createPipelineGraphBox.
@Override
public GraphBox createPipelineGraphBox(Skin skin, String id, JsonValue data) {
GraphBoxImpl result = createGraphBox(id);
addConfigurationInputsAndOutputs(result);
final CurveWidget curveWidget = new CurveWidget(skin);
if (data != null) {
JsonValue points = data.get("points");
for (String point : points.asStringArray()) {
String[] split = point.split(",");
curveWidget.createPoint(Float.parseFloat(split[0]), Float.parseFloat(split[1]));
}
} else {
curveWidget.createPoint(0, 0);
}
curveWidget.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
curveWidget.fire(new GraphChangedEvent(false, true));
}
});
curveWidget.setSize(300, 200);
result.addGraphBoxPart(new GraphBoxPartImpl(curveWidget, new GraphBoxPartImpl.Callback() {
@Override
public void serialize(JsonValue object) {
Array<Vector2> points = curveWidget.getPoints();
JsonValue pointsValue = new JsonValue(JsonValue.ValueType.array);
for (Vector2 point : points) {
pointsValue.addChild(new JsonValue(SimpleNumberFormatter.format(point.x) + "," + SimpleNumberFormatter.format(point.y)));
}
object.addChild("points", pointsValue);
}
}));
final VisSelectBox<ClampMethod> clampMethodSelectBox = new VisSelectBox<ClampMethod>();
clampMethodSelectBox.setItems(ClampMethod.values());
if (data != null)
clampMethodSelectBox.setSelected(ClampMethod.valueOf(data.getString("clamp", "Normal")));
clampMethodSelectBox.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
clampMethodSelectBox.fire(new GraphChangedEvent(false, true));
}
});
VisTable clampActor = new VisTable();
clampActor.add("Clamp method:").row();
clampActor.add(clampMethodSelectBox).growX();
result.addGraphBoxPart(new GraphBoxPartImpl(clampActor, new GraphBoxPartImpl.Callback() {
@Override
public void serialize(JsonValue object) {
object.addChild("clamp", new JsonValue(clampMethodSelectBox.getSelected().name()));
}
}));
return result;
}
use of com.gempukku.libgdx.graph.shader.ClampMethod in project gdx-graph by MarcinSc.
the class GradientShaderBoxProducer method createPipelineGraphBox.
@Override
public GraphBox createPipelineGraphBox(Skin skin, String id, JsonValue data) {
final GraphBoxImpl result = createGraphBox(id);
addConfigurationInputsAndOutputs(result);
final GradientWidget gradientWidget = new GradientWidget();
gradientWidget.setSize(300, 40);
if (data != null) {
JsonValue points = data.get("points");
for (String point : points.asStringArray()) {
String[] split = point.split(",");
gradientWidget.createPoint(Color.valueOf(split[0]), Float.parseFloat(split[1]));
}
} else {
gradientWidget.createPoint(Color.WHITE, 0);
}
gradientWidget.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
gradientWidget.fire(new GraphChangedEvent(false, true));
}
});
gradientWidget.setListener(new GradientWidget.GradientWidgetListener() {
@Override
public void colorPickerShow(final ColorPoint point, final Runnable onSuccess) {
final ColorPicker picker = new ColorPicker();
picker.setColor(point.color);
picker.setListener(new ColorPickerAdapter() {
@Override
public void finished(Color newColor) {
point.color.set(newColor);
picker.dispose();
onSuccess.run();
result.getActor().fire(new GraphChangedEvent(false, true));
}
@Override
public void canceled(Color oldColor) {
picker.dispose();
}
});
gradientWidget.getStage().addActor(picker.fadeIn());
}
});
result.addGraphBoxPart(new GraphBoxPartImpl(gradientWidget, new GraphBoxPartImpl.Callback() {
@Override
public void serialize(JsonValue object) {
Array<ColorPoint> points = gradientWidget.getPoints();
JsonValue pointsValue = new JsonValue(JsonValue.ValueType.array);
for (ColorPoint point : points) {
pointsValue.addChild(new JsonValue(point.color.toString() + "," + SimpleNumberFormatter.format(point.pos)));
}
object.addChild("points", pointsValue);
}
}));
final VisSelectBox<ClampMethod> clampMethodSelectBox = new VisSelectBox<ClampMethod>();
clampMethodSelectBox.setItems(ClampMethod.values());
if (data != null)
clampMethodSelectBox.setSelected(ClampMethod.valueOf(data.getString("clamp", "Normal")));
clampMethodSelectBox.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
result.getActor().fire(new GraphChangedEvent(false, true));
}
});
VisTable clampActor = new VisTable();
clampActor.add("Clamp method:").row();
clampActor.add(clampMethodSelectBox).growX();
result.addGraphBoxPart(new GraphBoxPartImpl(clampActor, new GraphBoxPartImpl.Callback() {
@Override
public void serialize(JsonValue object) {
object.addChild("clamp", new JsonValue(clampMethodSelectBox.getSelected().name()));
}
}));
return result;
}
use of com.gempukku.libgdx.graph.shader.ClampMethod in project gdx-graph by MarcinSc.
the class RemapValueShaderNodeBuilder method buildCommonNode.
@Override
protected ObjectMap<String, ? extends FieldOutput> buildCommonNode(boolean designTime, String nodeId, JsonValue data, ObjectMap<String, FieldOutput> inputs, ObjectSet<String> producedOutputs, CommonShaderBuilder commonShaderBuilder, GraphShaderContext graphShaderContext, GraphShader graphShader) {
FieldOutput inputValue = inputs.get("input");
Array<Vector2> pointArray = new Array<>();
JsonValue points = data.get("points");
for (String point : points.asStringArray()) {
String[] split = point.split(",");
pointArray.add(new Vector2(Float.parseFloat(split[0]), Float.parseFloat(split[1])));
}
ClampMethod clampMethod = ClampMethod.valueOf(data.getString("clamp", "Normal"));
String remapValueFunctionName = "remapValue_" + nodeId;
String functionText = createRemapValueFunction(remapValueFunctionName, pointArray, clampMethod);
commonShaderBuilder.addFunction(remapValueFunctionName, functionText);
String name = "result_" + nodeId;
commonShaderBuilder.addMainLine("// Remap Value node");
commonShaderBuilder.addMainLine("float " + name + " = " + remapValueFunctionName + "(" + inputValue + ");");
return LibGDXCollections.singletonMap("output", new DefaultFieldOutput(ShaderFieldType.Float, name));
}
Aggregations