internal void AddField(MappedField field)
        {
            int size = field.GetTotalSizeOf();

            if (field.PackOffsetBytes.HasValue)
            {
                int minSize = field.PackOffsetBytes.Value + size;
                SizeOf = Math.Max(minSize, SizeOf);
            }
            else
            {
                field.PackOffsetBytes = SizeOf;
                SizeOf += size;
            }

            Variables.Add(field);
        }
Example #2
0
        private ShaderMember PopulateMember(MappedField mField)
        {
            ShaderElementInfo eInfo = new ShaderElementInfo(
                dataType: mField.Type.DataType,
                dimensions: new List <int>(mField.Type.Dimensions),
                size: mField.Type.SizeOf,
                subElementCount: mField.Type.SubElementCount,
                subElementSize: mField.Type.SubElementSizeOf,
                strucType: mField.StructureType
                );

            return(new ShaderMember(
                       name: mField.Name,
                       arrayDimensions: new List <int>(mField.ArrayDimensions),
                       elementCount: mField.GetTotalArrayElements(),
                       startOffset: mField.PackOffsetBytes.HasValue ? mField.PackOffsetBytes.Value : 0,
                       elementInfo: eInfo,
                       sizeOf: mField.GetTotalSizeOf(),
                       resType: mField.ResourceType,
                       resBaseType: mField.ResourceBaseType
                       ));
        }