GXDECLTYPE: различия между версиями

Материал из GraphiX Wiki
Перейти к навигации Перейти к поиску
(Новая страница: «==Описание== Тип данных при декларации вершинного буфера. ==Синтаксис== <syntaxhighlight lang="C++"> enum…»)
 
м (Константы)
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
 
==Описание==
 
==Описание==
Тип данных при декларации вершинного буфера.
+
Типы данных для декларации вершин.
  
 
==Синтаксис==
 
==Синтаксис==
Строка 26: Строка 26:
 
==Константы==
 
==Константы==
  
===GXDECLTYPE_FLOAT1===
+
;GXDECLTYPE_FLOAT1
1 float, итоговое значение float4(x, 0.0, 0.0, 1.0)
+
:1 float, итоговое значение float4(x, 0.0, 0.0, 1.0)
  
===GXDECLTYPE_FLOAT2===
+
;GXDECLTYPE_FLOAT2
2 float, итоговое значение float4(x, y, 0.0, 1.0)
+
:2 float, итоговое значение float4(x, y, 0.0, 1.0)
  
===GXDECLTYPE_FLOAT3===
+
;GXDECLTYPE_FLOAT3
3 float, итоговое значение float4(x, y, z, 1.0)
+
:3 float, итоговое значение float4(x, y, z, 1.0)
  
===GXDECLTYPE_FLOAT4===
+
;GXDECLTYPE_FLOAT4
4 float
+
:4 float
  
===GXDECLTYPE_UBYTE4===
+
;GXDECLTYPE_UBYTE4
4 unsigned byte
+
:4 unsigned byte
  
===GXDECLTYPE_SHORT2===
+
;GXDECLTYPE_SHORT2
2 signed short, итоговое значение short4(x, y, 0, 1)
+
:2 signed short, итоговое значение short4(x, y, 0, 1)
  
===GXDECLTYPE_SHORT4===
+
;GXDECLTYPE_SHORT4
4 signed short
+
:4 signed short
  
===GXDECLTYPE_UBYTE4N===
+
;GXDECLTYPE_UBYTE4N
4 unsigned byte, итоговое значение ubyte4(x/255.0, y/255.0, z/255.0, w/255.0)
+
:4 unsigned byte, итоговое значение ubyte4(x/255.0, y/255.0, z/255.0, w/255.0)
  
===GXDECLTYPE_SHORT2N===
+
;GXDECLTYPE_SHORT2N
2 signed short, итоговое значение short4(x/32767.0, y/32767.0, 0.0, 1.0)
+
:2 signed short, итоговое значение short4(x/32767.0, y/32767.0, 0.0, 1.0)
  
===GXDECLTYPE_SHORT4N===
+
;GXDECLTYPE_SHORT4N
4 signed short, итоговое значение short4(x/32767.0, y/32767.0, z/32767.0, z/32767.0)
+
:4 signed short, итоговое значение short4(x/32767.0, y/32767.0, z/32767.0, w/32767.0)
  
===GXDECLTYPE_USHORT2N===
+
;GXDECLTYPE_USHORT2N
2 unsigned short, итоговое значение ushort4(x/65535.0, y/65535.0, 0.0, 1.0)
+
:2 unsigned short, итоговое значение ushort4(x/65535.0, y/65535.0, 0.0, 1.0)
  
===GXDECLTYPE_USHORT4N===
+
;GXDECLTYPE_USHORT4N
4 unsigned short, итоговое значение ushort4(x/65535.0, y/65535.0, z/65535.0, w/65535.0)
+
:4 unsigned short, итоговое значение ushort4(x/65535.0, y/65535.0, z/65535.0, w/65535.0)
  
===GXDECLTYPE_FLOAT16_2===
+
;GXDECLTYPE_FLOAT16_2
2 16-bit float, итоговое значение half4(x, y, 0.0, 1.0)
+
:2 16-bit float, итоговое значение half4(x, y, 0.0, 1.0)
  
===GXDECLTYPE_FLOAT16_4===
+
;GXDECLTYPE_FLOAT16_4
4 16-bit float
+
:4 16-bit float
 
 
===GXDECLTYPE_UNUSED===
 
Значение для завершающего элемента массива декларации вершин
 
  
 +
;GXDECLTYPE_UNUSED
 +
:Значение для завершающего элемента массива декларации вершин
  
 
==Заметки==
 
==Заметки==
В видеопамяти регистры по 4 float, значит [[#GXDECLTYPE_FLOAT1]] в видеопамяти будет занимать 4 float.
+
В видеопамяти регистры четырехкомпонентные, значит [[#GXDECLTYPE_FLOAT1]] в видеопамяти будет занимать 4 float.
  
 
[[#GXDECLTYPE_FLOAT1]] (2, 3), введены для того чтобы меньше данных гонять по шине, то есть с CPU в GPU будет отправлен 1 float при этом GPU допишет в регистр скрытые данные. Аналогичное правило действует и для других типов данных.
 
[[#GXDECLTYPE_FLOAT1]] (2, 3), введены для того чтобы меньше данных гонять по шине, то есть с CPU в GPU будет отправлен 1 float при этом GPU допишет в регистр скрытые данные. Аналогичное правило действует и для других типов данных.
  
Данные имеющие нормализацию (в конце имени символ N) являются float типом в пределах отведенной памяти. Например [[#GXDECLTYPE_UBYTE4N]] принимают значения [0.0/255.0, 255.0/255.0].
+
Данные имеющие нормализацию (в конце имени символ N) являются float типом в пределах отведенной памяти. Например [[#GXDECLTYPE_UBYTE4N]] принимают значения [0.0/255.0, 255.0/255.0]. Однако, на стороне CPU данные представлены указанными в значении типами.
 +
 
 +
При пересылке со стороны CPU в GPU данные должны иметь следующие размеры (на компоненту):
 +
* float - 4 байта
 +
* float16 - 2 байта
 +
* ubyte - 1 байт
 +
* short - 2 байта
  
 
[[Category:Буферы]]
 
[[Category:Буферы]]
 
[[Category:Константы]]
 
[[Category:Константы]]
 
[[Category:buffers.h]]
 
[[Category:buffers.h]]

Текущая версия на 15:12, 23 июня 2019

Описание[править]

Типы данных для декларации вершин.

Синтаксис[править]

enum GXDECLTYPE
{
	GXDECLTYPE_FLOAT1 = 0,
	GXDECLTYPE_FLOAT2 = 1,
	GXDECLTYPE_FLOAT3 = 2,
	GXDECLTYPE_FLOAT4 = 3,
	GXDECLTYPE_UBYTE4 = 5,
	GXDECLTYPE_SHORT2 = 6,
	GXDECLTYPE_SHORT4 = 7,
	GXDECLTYPE_UBYTE4N = 8,
	GXDECLTYPE_SHORT2N = 9,
	GXDECLTYPE_SHORT4N = 10,
	GXDECLTYPE_USHORT2N = 11,
	GXDECLTYPE_USHORT4N = 12,
	GXDECLTYPE_FLOAT16_2 = 15,
	GXDECLTYPE_FLOAT16_4 = 16,
	GXDECLTYPE_UNUSED = 17,
};

Константы[править]

GXDECLTYPE_FLOAT1
1 float, итоговое значение float4(x, 0.0, 0.0, 1.0)
GXDECLTYPE_FLOAT2
2 float, итоговое значение float4(x, y, 0.0, 1.0)
GXDECLTYPE_FLOAT3
3 float, итоговое значение float4(x, y, z, 1.0)
GXDECLTYPE_FLOAT4
4 float
GXDECLTYPE_UBYTE4
4 unsigned byte
GXDECLTYPE_SHORT2
2 signed short, итоговое значение short4(x, y, 0, 1)
GXDECLTYPE_SHORT4
4 signed short
GXDECLTYPE_UBYTE4N
4 unsigned byte, итоговое значение ubyte4(x/255.0, y/255.0, z/255.0, w/255.0)
GXDECLTYPE_SHORT2N
2 signed short, итоговое значение short4(x/32767.0, y/32767.0, 0.0, 1.0)
GXDECLTYPE_SHORT4N
4 signed short, итоговое значение short4(x/32767.0, y/32767.0, z/32767.0, w/32767.0)
GXDECLTYPE_USHORT2N
2 unsigned short, итоговое значение ushort4(x/65535.0, y/65535.0, 0.0, 1.0)
GXDECLTYPE_USHORT4N
4 unsigned short, итоговое значение ushort4(x/65535.0, y/65535.0, z/65535.0, w/65535.0)
GXDECLTYPE_FLOAT16_2
2 16-bit float, итоговое значение half4(x, y, 0.0, 1.0)
GXDECLTYPE_FLOAT16_4
4 16-bit float
GXDECLTYPE_UNUSED
Значение для завершающего элемента массива декларации вершин

Заметки[править]

В видеопамяти регистры четырехкомпонентные, значит #GXDECLTYPE_FLOAT1 в видеопамяти будет занимать 4 float.

#GXDECLTYPE_FLOAT1 (2, 3), введены для того чтобы меньше данных гонять по шине, то есть с CPU в GPU будет отправлен 1 float при этом GPU допишет в регистр скрытые данные. Аналогичное правило действует и для других типов данных.

Данные имеющие нормализацию (в конце имени символ N) являются float типом в пределах отведенной памяти. Например #GXDECLTYPE_UBYTE4N принимают значения [0.0/255.0, 255.0/255.0]. Однако, на стороне CPU данные представлены указанными в значении типами.

При пересылке со стороны CPU в GPU данные должны иметь следующие размеры (на компоненту):

  • float - 4 байта
  • float16 - 2 байта
  • ubyte - 1 байт
  • short - 2 байта