protected override AbstractMaterialNode CreateNode(ShaderGraphBuilder builder, MaterialExpressionTextureCoordinate unrealNode)
 {
     return(new UVNode {
         uvChannel = (UVChannel)unrealNode.CoordinateIndex,
         previewExpanded = !unrealNode.Collapsed,
     });
 }
Ejemplo n.º 2
0
 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));
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 14
0
 public override void CreateConnections(MaterialExpressionDesaturation unrealNode, Material unrealMaterial, ShaderGraphBuilder builder)
 {
     builder.Connect(unrealNode.Input, unrealNode.Name, 0);
     builder.Connect(unrealNode.Fraction, unrealNode.Name, 1);
 }
Ejemplo n.º 15
0
        protected virtual AbstractMaterialNode CreateNodeForShaderInput(ShaderInput shaderInput, ShaderGraphBuilder builder, U unrealNode)
        {
            var graphNode = builder.CreateNode <PropertyNode>();

            graphNode.propertyGuid = shaderInput.guid;

            return(graphNode);
        }
Ejemplo n.º 16
0
        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);
                }
            }
        }
Ejemplo n.º 17
0
 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");
                }
            }
        }
Ejemplo n.º 19
0
        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);
            }
        }
Ejemplo n.º 20
0
 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);
            }
        }
Ejemplo n.º 22
0
        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());
 }
Ejemplo n.º 24
0
        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);
            }
        }
Ejemplo n.º 28
0
 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);
 }
Ejemplo n.º 30
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);
 }