+//TfdUniversal_US1////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+procedure TfdUniversal_US1.Map(const aPixel: TglBitmapPixelData; var aData: PByte; var aMapData: Pointer);
+var
+ i: Integer;
+begin
+ PWord(aData)^ := 0;
+ for i := 0 to 3 do
+ if (fRange.arr[i] > 0) then
+ PWord(aData)^ := PWord(aData)^ or ((aPixel.Data.arr[i] and fRange.arr[i]) shl fShift.arr[i]);
+ inc(aData, 2);
+end;
+
+procedure TfdUniversal_US1.Unmap(var aData: PByte; var aPixel: TglBitmapPixelData; var aMapData: Pointer);
+var
+ i: Integer;
+begin
+ for i := 0 to 3 do
+ aPixel.Data.arr[i] := (PWord(aData)^ shr fShift.arr[i]) and fRange.arr[i];
+ inc(aData, 2);
+end;
+
+constructor TfdUniversal_US1.Create;
+begin
+ inherited Create;
+ fPixelSize := 2.0;
+end;
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//TfdDepth_US1////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+procedure TfdDepth_US1.Map(const aPixel: TglBitmapPixelData; var aData: PByte; var aMapData: Pointer);
+begin
+ PWord(aData)^ := DepthWeight(aPixel);
+ inc(aData, 2);
+end;
+
+procedure TfdDepth_US1.Unmap(var aData: PByte; var aPixel: TglBitmapPixelData; var aMapData: Pointer);
+begin
+ aPixel.Data.r := PWord(aData)^;
+ aPixel.Data.g := PWord(aData)^;
+ aPixel.Data.b := PWord(aData)^;
+ aPixel.Data.a := 0;
+ inc(aData, 2);
+end;
+
+constructor TfdDepth_US1.Create;
+begin
+ inherited Create;
+ fPixelSize := 2.0;
+ fRange.r := $FFFF;
+ fRange.g := $FFFF;
+ fRange.b := $FFFF;
+ fglFormat := GL_DEPTH_COMPONENT;
+ fglDataFormat := GL_UNSIGNED_SHORT;
+end;
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//TfdLuminanceAlpha_US2///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+procedure TfdLuminanceAlpha_US2.Map(const aPixel: TglBitmapPixelData; var aData: PByte; var aMapData: Pointer);
+begin
+ inherited Map(aPixel, aData, aMapData);
+ PWord(aData)^ := aPixel.Data.a;
+ inc(aData, 2);
+end;
+
+procedure TfdLuminanceAlpha_US2.Unmap(var aData: PByte; var aPixel: TglBitmapPixelData; var aMapData: Pointer);
+begin
+ inherited Unmap(aData, aPixel, aMapData);
+ aPixel.Data.a := PWord(aData)^;
+ inc(aData, 2);
+end;
+
+constructor TfdLuminanceAlpha_US2.Create;
+begin
+ inherited Create;
+ fPixelSize := 4.0;
+ fRange.a := $FFFF;
+ fShift.a := 16;
+ fglFormat := GL_LUMINANCE_ALPHA;
+ fglDataFormat := GL_UNSIGNED_SHORT;
+end;
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//TfdRGB_US3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+procedure TfdRGB_US3.Map(const aPixel: TglBitmapPixelData; var aData: PByte; var aMapData: Pointer);
+begin
+ PWord(aData)^ := aPixel.Data.r;
+ inc(aData, 2);
+ PWord(aData)^ := aPixel.Data.g;
+ inc(aData, 2);
+ PWord(aData)^ := aPixel.Data.b;
+ inc(aData, 2);
+end;
+
+procedure TfdRGB_US3.Unmap(var aData: PByte; var aPixel: TglBitmapPixelData; var aMapData: Pointer);
+begin
+ aPixel.Data.r := PWord(aData)^;
+ inc(aData, 2);
+ aPixel.Data.g := PWord(aData)^;
+ inc(aData, 2);
+ aPixel.Data.b := PWord(aData)^;
+ inc(aData, 2);
+ aPixel.Data.a := 0;
+end;
+
+constructor TfdRGB_US3.Create;
+begin
+ inherited Create;
+ fPixelSize := 6.0;
+ fRange.r := $FFFF;
+ fRange.g := $FFFF;
+ fRange.b := $FFFF;
+ fShift.r := 0;
+ fShift.g := 16;
+ fShift.b := 32;
+ fglFormat := GL_RGB;
+ fglDataFormat := GL_UNSIGNED_SHORT;
+end;
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//TfdBGR_US3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+procedure TfdBGR_US3.Map(const aPixel: TglBitmapPixelData; var aData: PByte; var aMapData: Pointer);
+begin
+ PWord(aData)^ := aPixel.Data.b;
+ inc(aData, 2);
+ PWord(aData)^ := aPixel.Data.g;
+ inc(aData, 2);
+ PWord(aData)^ := aPixel.Data.r;
+ inc(aData, 2);
+end;
+
+procedure TfdBGR_US3.Unmap(var aData: PByte; var aPixel: TglBitmapPixelData; var aMapData: Pointer);
+begin
+ aPixel.Data.b := PWord(aData)^;
+ inc(aData, 2);
+ aPixel.Data.g := PWord(aData)^;
+ inc(aData, 2);
+ aPixel.Data.r := PWord(aData)^;
+ inc(aData, 2);
+ aPixel.Data.a := 0;
+end;
+
+constructor TfdBGR_US3.Create;
+begin
+ inherited Create;
+ fPixelSize := 6.0;
+ fRange.r := $FFFF;
+ fRange.g := $FFFF;
+ fRange.b := $FFFF;
+ fShift.r := 32;
+ fShift.g := 16;
+ fShift.b := 0;
+ fglFormat := GL_BGR;
+ fglDataFormat := GL_UNSIGNED_SHORT;
+end;
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//TfdRGBA_US4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+procedure TfdRGBA_US4.Map(const aPixel: TglBitmapPixelData; var aData: PByte; var aMapData: Pointer);
+begin
+ inherited Map(aPixel, aData, aMapData);
+ PWord(aData)^ := aPixel.Data.a;
+ inc(aData, 2);
+end;
+
+procedure TfdRGBA_US4.Unmap(var aData: PByte; var aPixel: TglBitmapPixelData; var aMapData: Pointer);
+begin
+ inherited Unmap(aData, aPixel, aMapData);
+ aPixel.Data.a := PWord(aData)^;
+ inc(aData, 2);
+end;
+
+constructor TfdRGBA_US4.Create;
+begin
+ inherited Create;
+ fPixelSize := 8.0;
+ fRange.a := $FFFF;
+ fShift.a := 48;
+ fglFormat := GL_RGBA;
+ fglDataFormat := GL_UNSIGNED_SHORT;
+end;
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//TfdBGRA_US4/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////