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); }
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 }