Exemplo n.º 1
0
        public uint FindReducedExpressionIndexFromSlotCPU(VFXSlot slot)
        {
            if (m_ExpressionGraph == null)
            {
                return(uint.MaxValue);
            }
            var targetExpression = slot.GetExpression();

            if (targetExpression == null)
            {
                return(uint.MaxValue);
            }

            if (!m_ExpressionGraph.CPUExpressionsToReduced.ContainsKey(targetExpression))
            {
                return(uint.MaxValue);
            }

            var ouputExpression = m_ExpressionGraph.CPUExpressionsToReduced[targetExpression];

            return((uint)m_ExpressionGraph.GetFlattenedIndex(ouputExpression));
        }
        public static int TransferExpressionToParameters(IList <VFXExpression> inputExpression, IEnumerable <VFXParameter> parameters, List <VFXExpression> backedUpExpressions = null)
        {
            int cptSlot = 0;

            foreach (var param in parameters)
            {
                VFXSlot outputSlot = param.outputSlots[0];

                param.subgraphMode = true;
                if (inputExpression.Count > cptSlot)
                {
                    if (backedUpExpressions != null)
                    {
                        backedUpExpressions.Add(outputSlot.GetExpression());
                    }
                    outputSlot.SetExpression(inputExpression[cptSlot]);
                }

                cptSlot += 1;
            }

            return(cptSlot);
        }
Exemplo n.º 3
0
        public override VFXExpressionMapper GetExpressionMapper(VFXDeviceTarget target)
        {
            var localSpace = ((VFXDataParticle)GetData()).space == VFXCoordinateSpace.Local;

            if (localSpace && target == VFXDeviceTarget.GPU) // Needs to add locaToWorld matrix
            {
                var gpuMapper = new VFXExpressionMapper();
                if (IsPerCamera(sortCriterion))
                {
                    gpuMapper.AddExpression(VFXBuiltInExpression.LocalToWorld, "unity_ObjectToWorld", -1);
                    gpuMapper.AddExpression(VFXBuiltInExpression.WorldToLocal, "unity_WorldToObject", -1);
                }

                if (sortCriterion == SortCriteria.Custom)
                {
                    var sortKeyExp = customSortingSlot.GetExpression();
                    gpuMapper.AddExpression(sortKeyExp, "sortKey", -1);
                }
                return(gpuMapper);
            }

            return(null); // cpu
        }