Skip to content

Commit cd43684

Browse files
committed
Implement Float16 color conversions
1 parent feba1cf commit cd43684

File tree

9 files changed

+2629
-34
lines changed

9 files changed

+2629
-34
lines changed

src/Aardvark.Base.Tensors.CSharp/PixImage/PixImage.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,30 +1057,42 @@ public static PixImageInfo GetInfoFromStream(Stream stream, IPixLoader loader =
10571057
{ (typeof(byte), typeof(byte)), v => ((Volume<byte>)v).CopyWindow() },
10581058
{ (typeof(byte), typeof(ushort)), v => ((Volume<byte>)v).ToUShortColor() },
10591059
{ (typeof(byte), typeof(uint)), v => ((Volume<byte>)v).ToUIntColor() },
1060+
{ (typeof(byte), typeof(Half)), v => ((Volume<byte>)v).ToHalfColor() },
10601061
{ (typeof(byte), typeof(float)), v => ((Volume<byte>)v).ToFloatColor() },
10611062
{ (typeof(byte), typeof(double)), v => ((Volume<byte>)v).ToDoubleColor() },
10621063

10631064
{ (typeof(ushort), typeof(byte)), v => ((Volume<ushort>)v).ToByteColor() },
10641065
{ (typeof(ushort), typeof(ushort)), v => ((Volume<ushort>)v).CopyWindow() },
10651066
{ (typeof(ushort), typeof(uint)), v => ((Volume<ushort>)v).ToUIntColor() },
1067+
{ (typeof(ushort), typeof(Half)), v => ((Volume<ushort>)v).ToHalfColor() },
10661068
{ (typeof(ushort), typeof(float)), v => ((Volume<ushort>)v).ToFloatColor() },
10671069
{ (typeof(ushort), typeof(double)), v => ((Volume<ushort>)v).ToDoubleColor() },
10681070

10691071
{ (typeof(uint), typeof(byte)), v => ((Volume<uint>)v).ToByteColor() },
10701072
{ (typeof(uint), typeof(ushort)), v => ((Volume<uint>)v).ToUShortColor() },
10711073
{ (typeof(uint), typeof(uint)), v => ((Volume<uint>)v).CopyWindow() },
1074+
{ (typeof(uint), typeof(Half)), v => ((Volume<uint>)v).ToHalfColor() },
10721075
{ (typeof(uint), typeof(float)), v => ((Volume<uint>)v).ToFloatColor() },
10731076
{ (typeof(uint), typeof(double)), v => ((Volume<uint>)v).ToDoubleColor() },
10741077

1078+
{ (typeof(Half), typeof(byte)), v => ((Volume<Half>)v).ToByteColor() },
1079+
{ (typeof(Half), typeof(ushort)), v => ((Volume<Half>)v).ToUShortColor() },
1080+
{ (typeof(Half), typeof(uint)), v => ((Volume<Half>)v).ToUIntColor() },
1081+
{ (typeof(Half), typeof(Half)), v => ((Volume<Half>)v).CopyWindow() },
1082+
{ (typeof(Half), typeof(float)), v => ((Volume<Half>)v).ToFloatColor() },
1083+
{ (typeof(Half), typeof(double)), v => ((Volume<Half>)v).ToDoubleColor() },
1084+
10751085
{ (typeof(float), typeof(byte)), v => ((Volume<float>)v).ToByteColor() },
10761086
{ (typeof(float), typeof(ushort)), v => ((Volume<float>)v).ToUShortColor() },
10771087
{ (typeof(float), typeof(uint)), v => ((Volume<float>)v).ToUIntColor() },
1088+
{ (typeof(float), typeof(Half)), v => ((Volume<float>)v).ToHalfColor() },
10781089
{ (typeof(float), typeof(float)), v => ((Volume<float>)v).CopyWindow() },
10791090
{ (typeof(float), typeof(double)), v => ((Volume<float>)v).ToDoubleColor() },
10801091

10811092
{ (typeof(double), typeof(byte)), v => ((Volume<double>)v).ToByteColor() },
10821093
{ (typeof(double), typeof(ushort)), v => ((Volume<double>)v).ToUShortColor() },
10831094
{ (typeof(double), typeof(uint)), v => ((Volume<double>)v).ToUIntColor() },
1095+
{ (typeof(double), typeof(Half)), v => ((Volume<double>)v).ToHalfColor() },
10841096
{ (typeof(double), typeof(float)), v => ((Volume<double>)v).ToFloatColor() },
10851097
{ (typeof(double), typeof(double)), v => ((Volume<double>)v).CopyWindow() },
10861098
};

src/Aardvark.Base.Tensors.CSharp/PixImage/PixVolume.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,30 +65,42 @@ public static Tensor4<T> CreateTensor4<T>(long sizeX, long sizeY, long sizeZ, lo
6565
{ (typeof(byte), typeof(byte)), v => ((Tensor4<byte>)v).CopyWindow() },
6666
{ (typeof(byte), typeof(ushort)), v => ((Tensor4<byte>)v).ToUShortColor() },
6767
{ (typeof(byte), typeof(uint)), v => ((Tensor4<byte>)v).ToUIntColor() },
68+
{ (typeof(byte), typeof(Half)), v => ((Tensor4<byte>)v).ToHalfColor() },
6869
{ (typeof(byte), typeof(float)), v => ((Tensor4<byte>)v).ToFloatColor() },
6970
{ (typeof(byte), typeof(double)), v => ((Tensor4<byte>)v).ToDoubleColor() },
7071

7172
{ (typeof(ushort), typeof(byte)), v => ((Tensor4<ushort>)v).ToByteColor() },
7273
{ (typeof(ushort), typeof(ushort)), v => ((Tensor4<ushort>)v).CopyWindow() },
7374
{ (typeof(ushort), typeof(uint)), v => ((Tensor4<ushort>)v).ToUIntColor() },
75+
{ (typeof(ushort), typeof(Half)), v => ((Tensor4<ushort>)v).ToHalfColor() },
7476
{ (typeof(ushort), typeof(float)), v => ((Tensor4<ushort>)v).ToFloatColor() },
7577
{ (typeof(ushort), typeof(double)), v => ((Tensor4<ushort>)v).ToDoubleColor() },
76-
78+
7779
{ (typeof(uint), typeof(byte)), v => ((Tensor4<uint>)v).ToByteColor() },
7880
{ (typeof(uint), typeof(ushort)), v => ((Tensor4<uint>)v).ToUShortColor() },
7981
{ (typeof(uint), typeof(uint)), v => ((Tensor4<uint>)v).CopyWindow() },
82+
{ (typeof(uint), typeof(Half)), v => ((Tensor4<uint>)v).ToHalfColor() },
8083
{ (typeof(uint), typeof(float)), v => ((Tensor4<uint>)v).ToFloatColor() },
8184
{ (typeof(uint), typeof(double)), v => ((Tensor4<uint>)v).ToDoubleColor() },
8285

86+
{ (typeof(Half), typeof(byte)), v => ((Tensor4<Half>)v).ToByteColor() },
87+
{ (typeof(Half), typeof(ushort)), v => ((Tensor4<Half>)v).ToUShortColor() },
88+
{ (typeof(Half), typeof(uint)), v => ((Tensor4<Half>)v).ToUIntColor() },
89+
{ (typeof(Half), typeof(Half)), v => ((Tensor4<Half>)v).CopyWindow() },
90+
{ (typeof(Half), typeof(float)), v => ((Tensor4<Half>)v).ToFloatColor() },
91+
{ (typeof(Half), typeof(double)), v => ((Tensor4<Half>)v).ToDoubleColor() },
92+
8393
{ (typeof(float), typeof(byte)), v => ((Tensor4<float>)v).ToByteColor() },
8494
{ (typeof(float), typeof(ushort)), v => ((Tensor4<float>)v).ToUShortColor() },
8595
{ (typeof(float), typeof(uint)), v => ((Tensor4<float>)v).ToUIntColor() },
96+
{ (typeof(float), typeof(Half)), v => ((Tensor4<float>)v).ToHalfColor() },
8697
{ (typeof(float), typeof(float)), v => ((Tensor4<float>)v).CopyWindow() },
8798
{ (typeof(float), typeof(double)), v => ((Tensor4<float>)v).ToDoubleColor() },
8899

89100
{ (typeof(double), typeof(byte)), v => ((Tensor4<double>)v).ToByteColor() },
90101
{ (typeof(double), typeof(ushort)), v => ((Tensor4<double>)v).ToUShortColor() },
91102
{ (typeof(double), typeof(uint)), v => ((Tensor4<double>)v).ToUIntColor() },
103+
{ (typeof(double), typeof(Half)), v => ((Tensor4<double>)v).ToHalfColor() },
92104
{ (typeof(double), typeof(float)), v => ((Tensor4<double>)v).ToFloatColor() },
93105
{ (typeof(double), typeof(double)), v => ((Tensor4<double>)v).CopyWindow() },
94106
};

0 commit comments

Comments
 (0)