예제 #1
0
        public void ParseVector(OpTypeVector instruction)
        {
            var componentType             = ResolveType(instruction.ComponentType);
            var instructionComponentCount = instruction.ComponentCount;
            var vector = SpirvTypeBase.ResolveVector(componentType, instructionComponentCount);

            AddType(instruction, vector);
        }
예제 #2
0
        protected virtual TypeDesc GenerateVector(OpTypeVector type, TypeDesc element)
        {
            var length = (int)type.ComponentCount;

            if (!element.IsArray())
            {
                if (element.ElementType == "float")
                {
                    switch (length)
                    {
                    case 2:
                        return(new TypeDesc("Vector2", length * element.ElementSize));

                    case 3:
                        return(new TypeDesc("Vector3", length * element.ElementSize));

                    case 4:
                        return(new TypeDesc("Vector4", length * element.ElementSize));
                    }
                }
            }

            return(new TypeDesc(element.ElementType, length * element.ArraySize));
        }
예제 #3
0
 protected virtual TypeDesc GenerateVector(OpTypeVector type)
 {
     return(GenerateVector(type, ResolveType(type.ComponentType)));
 }
예제 #4
0
 partial void SetUp(OpTypeVector instruction, SpirvInstructionTreeBuilder treeBuilder);