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