protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, MaterialExpressionTextureCoordinate unrealNode) { return(new UVNode { uvChannel = (UVChannel)unrealNode.CoordinateIndex, previewExpanded = !unrealNode.Collapsed, }); }
protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, MaterialExpressionDesaturation unrealNode) { return(new SaturationNode() { previewExpanded = !unrealNode.Collapsed, }); }
protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, MaterialExpressionSine unrealNode) { return(new SineNode() { previewExpanded = false, }); }
protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, MaterialExpressionFresnel unrealNode) { var node = new FresnelNode() { previewExpanded = false, }; return(node); }
protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, Material unrealNode) { var masterNode = new UnlitMasterNode(); masterNode.twoSided = new ToggleData(unrealNode.IsTwoSided); masterNode.surfaceType = Helper.BlendModeToSurfaceType(unrealNode.BlendMode); masterNode.alphaMode = Helper.BlendModeToAlphaMode(unrealNode.BlendMode); return(masterNode); }
public override void Convert(Node unrealNode, ShaderGraphBuilder builder) { var commentNode = unrealNode as MaterialExpressionComment; if (null == commentNode) { return; } builder.AddGroup(commentNode.Text, new Vector2(commentNode.EditorX, commentNode.EditorY), new Vector2(commentNode.SizeX, commentNode.SizeY)); }
protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, MaterialExpressionConstant unrealNode) { var node = new Vector1Node() { previewExpanded = false }; node.FindSlot <Vector1MaterialSlot>(Vector1Node.InputSlotXId).value = unrealNode.R; return(node); }
protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, MaterialExpressionPower unrealNode) { var node = new PowerNode() { previewExpanded = !unrealNode.Collapsed }; if (unrealNode.Exponent == null) { node.FindInputSlot <DynamicVectorMaterialSlot>(1).value = new Vector4(unrealNode.ConstExponent, 0); } return(node); }
public override void Convert(Node unrealNode, ShaderGraphBuilder builder) { var nodeAsT = unrealNode as T; if (nodeAsT == null) { // FIXME: throw new System.Exception("Unexpected node type"); } var graphNode = CreateNode(builder, nodeAsT); builder.RegisterNodeAndPositionOnGraph(graphNode, unrealNode); }
public sealed override void Convert(Node unrealNode, ShaderGraphBuilder builder) { var parameterNode = unrealNode as U; if (parameterNode == null) { // FIXME: throw new System.Exception("Unexpected node type"); } var shaderInput = CreateShaderInput(parameterNode, builder); var graphNode = CreateNodeForShaderInput(shaderInput, builder, (U)unrealNode); builder.RegisterNodeAndPositionOnGraph(graphNode, unrealNode); }
protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, MaterialExpressionTextureSample unrealNode) { var node = new SampleTexture2DNode() { previewExpanded = false, }; if (unrealNode.Texture != null) { // FIXME: don't use unresolved reference directly and don't guess the extension node.FindInputSlot <Texture2DInputMaterialSlot>(SampleTexture2DNode.TextureInputId).texture = Helper.LoadTexture(unrealNode.Texture.FileName); } return(node); }
protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, MaterialExpressionDivide unrealNode) { var node = new DivideNode() { previewExpanded = false, }; if (unrealNode.A == null) { node.FindInputSlot <DynamicVectorMaterialSlot>(0).value = new Vector4(unrealNode.ConstA, 0); } if (unrealNode.B == null) { node.FindInputSlot <DynamicVectorMaterialSlot>(1).value = new Vector4(unrealNode.ConstB, 0); } return(node); }
protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, MaterialExpressionMultiply unrealNode) { var node = new MultiplyNode() { previewExpanded = !unrealNode.Collapsed }; if (unrealNode.A == null) { node.FindInputSlot <DynamicValueMaterialSlot>(0).value = new Matrix4x4(new Vector4(unrealNode.ConstA, 0), Vector4.zero, Vector4.zero, Vector4.zero); } if (unrealNode.B == null) { node.FindInputSlot <DynamicValueMaterialSlot>(1).value = new Matrix4x4(new Vector4(unrealNode.ConstB, 0), Vector4.zero, Vector4.zero, Vector4.zero); } return(node); }
public override void CreateConnections(MaterialExpressionDesaturation unrealNode, Material unrealMaterial, ShaderGraphBuilder builder) { builder.Connect(unrealNode.Input, unrealNode.Name, 0); builder.Connect(unrealNode.Fraction, unrealNode.Name, 1); }
protected virtual AbstractMaterialNode CreateNodeForShaderInput(ShaderInput shaderInput, ShaderGraphBuilder builder, U unrealNode) { var graphNode = builder.CreateNode <PropertyNode>(); graphNode.propertyGuid = shaderInput.guid; return(graphNode); }
public override void CreateConnections(MaterialExpressionMaterialFunctionCall unrealNode, Material unrealMaterial, ShaderGraphBuilder builder) { foreach (var functionInput in unrealNode.FunctionInputs) { var inputPropertyBag = ValueUtil.ParseAttributeList(functionInput.FindPropertyValue("Input")); var expressionValue = ValueUtil.ParseExpressionReference(inputPropertyBag.FindPropertyValue("Expression")); var resolvedFunctionInput = unrealMaterial.ResolveExpressionReference(expressionValue); if (resolvedFunctionInput != null) { var slotId = GetConnectionIdSlotForFunctionInput(inputPropertyBag.FindPropertyValue("InputName"), resolvedFunctionInput); var inputSlot = builder.FindSlot <MaterialSlot>(resolvedFunctionInput?.Name, unrealNode.Name, slotId, inputPropertyBag); builder.Connect(resolvedFunctionInput?.Name, unrealNode.Name, slotId, inputPropertyBag); } } }
protected abstract AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, T unrealNode);
public override void CreateConnections(MaterialExpressionAppendVector unrealNode, Material unrealMaterial, ShaderGraphBuilder builder) { if (unrealNode.A != null) { var a = unrealMaterial.ResolveExpressionReference( ValueUtil.ParseExpressionReference(unrealNode.A.FindPropertyValue("Expression")) ); var aSlot = builder.FindSlot <MaterialSlot>(a?.Name, unrealNode.Name, 0, unrealNode.A); if (aSlot.concreteValueType == ConcreteSlotValueType.Vector4 || aSlot.concreteValueType == ConcreteSlotValueType.Vector3) { builder.Connect(a?.Name, unrealNode.Name, 0, unrealNode.A); builder.Connect(a?.Name, unrealNode.Name, 1, unrealNode.A); builder.Connect(a?.Name, unrealNode.Name, 2, unrealNode.A); } else if (aSlot.concreteValueType == ConcreteSlotValueType.Vector2) { builder.Connect(a?.Name, unrealNode.Name, 0, unrealNode.A); builder.Connect(a?.Name, unrealNode.Name, 1, unrealNode.A); } else if (aSlot.concreteValueType == ConcreteSlotValueType.Vector1) { builder.Connect(a?.Name, unrealNode.Name, 0, unrealNode.A); } else { throw new System.Exception("FIXME: unhandled vector type"); } } if (unrealNode.B != null) { var b = unrealMaterial.ResolveExpressionReference( ValueUtil.ParseExpressionReference(unrealNode.B.FindPropertyValue("Expression")) ); var bSlot = builder.FindSlot <MaterialSlot>(b?.Name, unrealNode.Name, 0, unrealNode.B); if (bSlot.concreteValueType == ConcreteSlotValueType.Vector4 || bSlot.concreteValueType == ConcreteSlotValueType.Vector3) { builder.Connect(b?.Name, unrealNode.Name, 0, unrealNode.B); builder.Connect(b?.Name, unrealNode.Name, 1, unrealNode.B); builder.Connect(b?.Name, unrealNode.Name, 2, unrealNode.B); } else if (bSlot.concreteValueType == ConcreteSlotValueType.Vector2) { builder.Connect(b?.Name, unrealNode.Name, 1, unrealNode.B); builder.Connect(b?.Name, unrealNode.Name, 2, unrealNode.B); } else if (bSlot.concreteValueType == ConcreteSlotValueType.Vector1) { builder.Connect(b?.Name, unrealNode.Name, 1, unrealNode.B); } else { throw new System.Exception("FIXME: unhandled vector type"); } } }
public override void CreateConnections(MaterialExpressionClamp unrealNode, Material unrealMaterial, ShaderGraphBuilder builder) { builder.Connect(unrealNode.Input, unrealNode.Name, 0); if (unrealNode.Min != null) { builder.Connect(unrealNode.Min, unrealNode.Name, 1); } if (unrealNode.Max != null) { builder.Connect(unrealNode.Max, unrealNode.Name, 2); } }
public override void CreateConnections(MaterialExpressionTextureSampleParameter2D unrealNode, Material unrealMaterial, ShaderGraphBuilder builder) { builder.Connect(unrealNode.Coordinates, unrealNode.Name, SampleTexture2DNode.UVInput); }
public override void CreateConnections(MaterialExpressionFresnel unrealNode, Material unrealMaterial, ShaderGraphBuilder builder) { if (unrealNode.Normal != null) { builder.Connect(unrealNode.Normal, unrealNode.Name, 0); } if (unrealNode.BaseReflectFractionIn != null) { Debug.Log("FIXME: unhandled fresnel baseReflectFractionIn/baseReflectFraction"); } if (unrealNode.ExponentIn != null) { Debug.Log("FIXME: unhandled fresnel exponentIn/exponent"); } if (unrealNode.Power != null) { builder.Connect(unrealNode.Power, unrealNode.Name, 2); } }
protected override AbstractMaterialNode CreateNodeForShaderInput(ShaderInput shaderInput, ShaderGraphBuilder builder, MaterialExpressionStaticSwitchParameter unrealNode) { var propertyNode = base.CreateNodeForShaderInput(shaderInput, builder, unrealNode); var branchNode = builder.CreateNode <BranchNode>(); builder.PositionNodeOnGraph(propertyNode, unrealNode); builder.Connect(propertyNode.GetSlotReference(0), branchNode.GetSlotReference(0)); return(branchNode); }
protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, MaterialExpressionMaterialFunctionCall unrealNode) { return(new ContrastNode()); }
public override void CreateConnections(MaterialExpressionTextureSample unrealNode, Material unrealMaterial, ShaderGraphBuilder builder) { if (unrealNode.TextureObject != null) { builder.Connect(unrealNode.TextureObject, unrealNode.Name, SampleTexture2DNode.TextureInputId); } builder.Connect(unrealNode.Coordinates, unrealNode.Name, SampleTexture2DNode.UVInput); }
protected override AbstractShaderProperty CreateShaderInput(MaterialExpressionScalarParameter parameterNode, ShaderGraphBuilder builder) { return(builder.FindOrCreateProperty <Vector1ShaderProperty>(parameterNode.ParameterName, (p) => { p.value = parameterNode.DefaultValue; })); }
public override void CreateConnections(MaterialExpressionPower unrealNode, Material unrealMaterial, ShaderGraphBuilder builder) { builder.Connect(unrealNode.Value, unrealNode.Name, 0); if (unrealNode.Exponent != null) { builder.Connect(unrealNode.Exponent, unrealNode.Name, 1); } }
public override void CreateConnections(MaterialExpressionDivide unrealNode, Material unrealMaterial, ShaderGraphBuilder builder) { if (unrealNode.A != null) { builder.Connect(unrealNode.A, unrealNode.Name, 0); } if (unrealNode.B != null) { builder.Connect(unrealNode.B, unrealNode.Name, 1); } }
protected abstract AbstractShaderProperty CreateShaderInput(U parameterNode, ShaderGraphBuilder builder);
public override void CreateConnections(MaterialExpressionSine unrealNode, Material unrealMaterial, ShaderGraphBuilder builder) { builder.Connect(unrealNode.Input, unrealNode.Name, 0); }
public override void CreateConnections(MaterialExpressionStaticSwitchParameter unrealNode, Material unrealMaterial, ShaderGraphBuilder builder) { builder.Connect(unrealNode.A, unrealNode.Name, 1); builder.Connect(unrealNode.B, unrealNode.Name, 2); }