コード例 #1
0
            public ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode _mode, uint _count)
            {
                mode             = _mode;
                count            = _count;
                expectedSequence = new uint[Mathf.Max(50, 7 * (int)_count)];

                //Naive implementation for reference
                if (mode == VFXOperatorUtility.SequentialAddressingMode.Clamp)
                {
                    for (uint i = 0; i < expectedSequence.Length; ++i)
                    {
                        expectedSequence[i] = i < count ? i : count - 1;
                    }
                }
                else if (mode == VFXOperatorUtility.SequentialAddressingMode.Wrap)
                {
                    uint current = 0u;
                    for (uint i = 0; i < expectedSequence.Length; ++i)
                    {
                        expectedSequence[i] = current;
                        current++;
                        if (current >= count)
                        {
                            current = 0u;
                        }
                    }
                }
                else if (mode == VFXOperatorUtility.SequentialAddressingMode.Mirror)
                {
                    uint current   = 0u;
                    bool increment = true;
                    for (uint i = 0; i < expectedSequence.Length; ++i)
                    {
                        expectedSequence[i] = current;
                        if (increment)
                        {
                            current++;
                            if (current >= count)
                            {
                                increment = false;
                                current   = count > 2u ? count - 2u : 0u;
                            }
                        }
                        else
                        {
                            if (current == 0u)
                            {
                                increment = true;
                                current   = count == 1u ? 0u : 1u;
                            }
                            else
                            {
                                current--;
                            }
                        }
                    }
                }
            }
コード例 #2
0
ファイル: SampleMesh.cs プロジェクト: whpskyeagle/Graphics
        public static IEnumerable <VFXExpression> SampleTriangleAttribute(VFXExpression source, VFXExpression triangleIndex, VFXExpression coord, VFXOperatorUtility.SequentialAddressingMode mode, SurfaceCoordinates coordMode, IEnumerable <VertexAttribute> vertexAttributes)
        {
            bool skinnedMesh = source.valueType == UnityEngine.VFX.VFXValueType.SkinnedMeshRenderer;
            var  mesh        = !skinnedMesh ? source : new VFXExpressionMeshFromSkinnedMeshRenderer(source);
            var  UintThree   = VFXOperatorUtility.ThreeExpression[UnityEngine.VFX.VFXValueType.Uint32];

            var meshIndexCount = new VFXExpressionMeshIndexCount(mesh);
            var triangleCount  = meshIndexCount / UintThree;

            triangleIndex = VFXOperatorUtility.ApplyAddressingMode(triangleIndex, triangleCount, mode);

            return(SampleTriangleAttribute(source, triangleIndex, coord, coordMode, vertexAttributes));
        }
コード例 #3
0
ファイル: SampleMesh.cs プロジェクト: whpskyeagle/Graphics
        public static IEnumerable <VFXExpression> SampleEdgeAttribute(VFXExpression source, VFXExpression index, VFXExpression x, VFXOperatorUtility.SequentialAddressingMode mode, IEnumerable <VertexAttribute> vertexAttributes)
        {
            bool skinnedMesh    = source.valueType == UnityEngine.VFX.VFXValueType.SkinnedMeshRenderer;
            var  mesh           = !skinnedMesh ? source : new VFXExpressionMeshFromSkinnedMeshRenderer(source);
            var  meshIndexCount = new VFXExpressionMeshIndexCount(mesh);

            index = VFXOperatorUtility.ApplyAddressingMode(index, meshIndexCount, mode);
            return(SampleEdgeAttribute(source, index, x, vertexAttributes));
        }