use of com.gempukku.libgdx.graph.shader.node.DefaultFieldOutput in project gdx-graph by MarcinSc.
the class VoronoiBorder2DShaderNodeBuilder 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 uvValue = inputs.get("uv");
FieldOutput scaleValue = inputs.get("scale");
FieldOutput progressValue = inputs.get("progress");
String scale = (scaleValue != null) ? scaleValue.getRepresentation() : "1.0";
String progress = (progressValue != null) ? progressValue.getRepresentation() : "0.0";
loadFragmentIfNotDefined(commonShaderBuilder, "voronoiBorder2d");
commonShaderBuilder.addMainLine("// Voronoi border 2D node");
String name = "result_" + nodeId;
String output;
if (uvValue.getFieldType().getName().equals(ShaderFieldType.Vector2)) {
output = "voronoiBorder2d(" + uvValue.getRepresentation() + " * " + scale + ", " + progress + ")";
} else {
output = "voronoiBorder2d(vec2(" + uvValue.getRepresentation() + ", 0.0) * " + scale + ", " + progress + ")";
}
commonShaderBuilder.addMainLine("float " + name + " = " + output + ";");
return LibGDXCollections.singletonMap("output", new DefaultFieldOutput(ShaderFieldType.Float, name));
}
use of com.gempukku.libgdx.graph.shader.node.DefaultFieldOutput in project gdx-graph by MarcinSc.
the class SceneColorShaderNodeBuilder 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) {
graphShader.setUsingColorTexture(true);
String textureName = "u_" + nodeId;
String transformName = "u_UV" + nodeId;
final TextureDescriptor<Texture> textureDescriptor = new TextureDescriptor<>();
if (data != null && data.has("minFilter"))
textureDescriptor.minFilter = Texture.TextureFilter.valueOf(data.getString("minFilter"));
if (data != null && data.has("magFilter"))
textureDescriptor.magFilter = Texture.TextureFilter.valueOf(data.getString("magFilter"));
if (data != null && data.has("uWrap"))
textureDescriptor.uWrap = Texture.TextureWrap.valueOf(data.getString("uWrap"));
if (data != null && data.has("vWrap"))
textureDescriptor.vWrap = Texture.TextureWrap.valueOf(data.getString("vWrap"));
commonShaderBuilder.addUniformVariable(textureName, "sampler2D", true, new UniformRegistry.UniformSetter() {
@Override
public void set(BasicShader shader, int location, ShaderContext shaderContext) {
textureDescriptor.texture = shaderContext.getColorTexture();
shader.setUniform(location, textureDescriptor);
}
}, "Scene color texture");
commonShaderBuilder.addUniformVariable(transformName, "vec4", false, new UniformRegistry.UniformSetter() {
@Override
public void set(BasicShader shader, int location, ShaderContext shaderContext) {
shader.setUniform(location, 0f, 0f, 1f, 1f);
}
}, "Scene color texture UVs");
return LibGDXCollections.singletonMap("texture", new DefaultFieldOutput(ShaderFieldType.TextureRegion, transformName, textureName));
}
use of com.gempukku.libgdx.graph.shader.node.DefaultFieldOutput in project gdx-graph by MarcinSc.
the class ScreenPositionShaderNodeBuilder method buildFragmentNodeSingleInputs.
@Override
protected ObjectMap<String, ? extends FieldOutput> buildFragmentNodeSingleInputs(boolean designTime, String nodeId, JsonValue data, ObjectMap<String, FieldOutput> inputs, ObjectSet<String> producedOutputs, VertexShaderBuilder vertexShaderBuilder, FragmentShaderBuilder fragmentShaderBuilder, GraphShaderContext graphShaderContext, GraphShader graphShader) {
fragmentShaderBuilder.addUniformVariable("u_pixelSize", "vec2", true, UniformSetters.pixelSize, "Pixel size");
String name = "result_" + nodeId;
fragmentShaderBuilder.addMainLine("// Screen Position node");
fragmentShaderBuilder.addMainLine("vec2 " + name + " = gl_FragCoord.xy * u_pixelSize;");
return LibGDXCollections.singletonMap("output", new DefaultFieldOutput(ShaderFieldType.Vector2, name));
}
use of com.gempukku.libgdx.graph.shader.node.DefaultFieldOutput in project gdx-graph by MarcinSc.
the class RectangleShapeShaderNodeBuilder 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 uvValue = inputs.get("uv");
FieldOutput sizeValue = inputs.get("size");
FieldOutput borderValue = inputs.get("border");
if (sizeValue != null && sizeValue.getFieldType().getName().equals(ShaderFieldType.Float))
sizeValue = new DefaultFieldOutput(ShaderFieldType.Vector2, "vec2(" + sizeValue.getRepresentation() + ")");
String uv = uvValue.getRepresentation();
String size = sizeValue != null ? sizeValue.getRepresentation() : "vec2(1.0)";
String border = borderValue != null ? borderValue.getRepresentation() : "0.0";
commonShaderBuilder.addMainLine("// Rectangle shape node");
String temp1 = "temp_" + nodeId;
String name = "result_" + nodeId;
String resultType = ShaderFieldType.Float;
commonShaderBuilder.addMainLine("vec2 " + temp1 + " = abs(" + uv + " * 2.0 - 1.0);");
commonShaderBuilder.addMainLine("float " + name + " = smoothstep(0.0, " + border + ", min(" + size + ".x - " + temp1 + ".x, " + size + ".y - " + temp1 + ".y));");
return LibGDXCollections.singletonMap("output", new DefaultFieldOutput(ShaderFieldType.Float, name));
}
use of com.gempukku.libgdx.graph.shader.node.DefaultFieldOutput in project gdx-graph by MarcinSc.
the class ArctanShaderNodeBuilder 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");
ShaderFieldType resultType = inputValue.getFieldType();
commonShaderBuilder.addMainLine("// Arctangent node");
String name = "result_" + nodeId;
commonShaderBuilder.addMainLine(resultType.getShaderType() + " " + name + " = atan(" + inputValue.getRepresentation() + ");");
return LibGDXCollections.singletonMap("output", new DefaultFieldOutput(resultType, name));
}
Aggregations