use of com.gempukku.libgdx.graph.shader.field.ShaderFieldType in project gdx-graph by MarcinSc.
the class RemapShaderNodeBuilder 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");
FieldOutput fromValue = inputs.get("from");
FieldOutput toValue = inputs.get("to");
ShaderFieldType resultType = inputValue.getFieldType();
String functionName = appendRemapFunction(commonShaderBuilder, resultType);
commonShaderBuilder.addMainLine("// Remap node");
String name = "result_" + nodeId;
commonShaderBuilder.addMainLine(resultType.getShaderType() + " " + name + " = " + functionName + "(" + inputValue.getRepresentation() + ", " + fromValue.getRepresentation() + ", " + toValue.getRepresentation() + ");");
return LibGDXCollections.singletonMap("output", new DefaultFieldOutput(resultType, name));
}
use of com.gempukku.libgdx.graph.shader.field.ShaderFieldType in project gdx-graph by MarcinSc.
the class StepShaderNodeBuilder 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");
FieldOutput edgeValue = inputs.get("edge");
if (edgeValue == null)
edgeValue = new DefaultFieldOutput(ShaderFieldType.Float, "1.0");
ShaderFieldType resultType = inputValue.getFieldType();
commonShaderBuilder.addMainLine("// Step node");
String name = "result_" + nodeId;
commonShaderBuilder.addMainLine(resultType.getShaderType() + " " + name + " = step(" + edgeValue.getRepresentation() + ", " + inputValue.getRepresentation() + ");");
return LibGDXCollections.singletonMap("output", new DefaultFieldOutput(resultType, name));
}
use of com.gempukku.libgdx.graph.shader.field.ShaderFieldType in project gdx-graph by MarcinSc.
the class LogarithmBase2ShaderNodeBuilder 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("// Logarithm base 2 node");
String name = "result_" + nodeId;
commonShaderBuilder.addMainLine(resultType.getShaderType() + " " + name + " = log2(" + inputValue.getRepresentation() + ");");
return LibGDXCollections.singletonMap("output", new DefaultFieldOutput(ShaderFieldType.Float, name));
}
use of com.gempukku.libgdx.graph.shader.field.ShaderFieldType in project gdx-graph by MarcinSc.
the class NaturalLogarithmShaderNodeBuilder 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("// Natural logarithm node");
String name = "result_" + nodeId;
commonShaderBuilder.addMainLine(resultType.getShaderType() + " " + name + " = log(" + inputValue.getRepresentation() + ");");
return LibGDXCollections.singletonMap("output", new DefaultFieldOutput(ShaderFieldType.Float, name));
}
use of com.gempukku.libgdx.graph.shader.field.ShaderFieldType in project gdx-graph by MarcinSc.
the class LimitedCapacitySpriteBatchModel method updateSpriteData.
private void updateSpriteData(RenderableSprite sprite, int spriteIndex) {
int spriteDataStart = getSpriteDataStart(spriteIndex);
for (VertexAttribute vertexAttribute : vertexAttributes) {
PropertySource propertySource = vertexPropertySources.get(vertexAttribute);
int attributeOffset = vertexAttribute.offset / 4;
ShaderFieldType shaderFieldType = propertySource.getShaderFieldType();
Object attributeValue = sprite.getPropertyContainer().getValue(propertySource.getPropertyName());
if (attributeValue instanceof ValuePerVertex) {
for (int vertexIndex = 0; vertexIndex < 4; vertexIndex++) {
int vertexOffset = spriteDataStart + vertexIndex * floatCountPerVertex;
Object vertexValue = ((ValuePerVertex) attributeValue).getValue(vertexIndex);
shaderFieldType.setValueInAttributesArray(vertexData, vertexOffset + attributeOffset, propertySource.getValueToUse(vertexValue));
}
} else {
attributeValue = propertySource.getValueToUse(attributeValue);
for (int vertexIndex = 0; vertexIndex < 4; vertexIndex++) {
int vertexOffset = spriteDataStart + vertexIndex * floatCountPerVertex;
shaderFieldType.setValueInAttributesArray(vertexData, vertexOffset + attributeOffset, attributeValue);
}
}
}
markSpriteUpdated(spriteIndex);
}
Aggregations