protected T ReadStruct <T>(EffectVariable variable) where T : struct { T result; var stride = Marshal.SizeOf(typeof(T)); using (var dataStream = variable.GetRawValue(stride)) { result = dataStream.Read <T>(); } return(result); }