×
Menu

NiPixelData - parameters

О настройках вкратце.
Т.к. добавлять этот элемент полностью в ручном режиме, занятие так себе.
Отчего не было подробных примеров, что и за что отвечает.
Pixel Format
PX_FMT_PAL8
 
 
 
PX_FMT_RGB8
 
 
 
PX_FMT_RGBA8
 
 
 
 
PX_FMT_DXT1
 
PX_FMT_DXT5
 
PX_FMT_DXT5_ALT
An 8-bit palettized format with no alpha
8-bit palette index: uses 8 bits to store an index into the palette stored in a NiPalette object.
 
A 8-bit format stored in the order specified with no alpha.
24-bit color: uses 8 bit to store each red, blue, and green component.
 
A 8-bit format stored in the order specified with alpha.
32-bit color with alpha: uses 8 bits to store each red, blue, green, and alpha component.
 
 
DXT1 compressed format
 
DXT5 compressed format
 
DXT5 compressed format invert alpha or color
DXT5 compressed texture. It is not clear what the difference is with PX_FMT_DXT5
 
 
The format of the pixels in this internally stored image.
 
 
Определяется форматом исходной текстуры, наличием в ней альфа канала и битностью оной.
Изменение через Нифскоп этого значения, может поменять поведение этой текстуры.
 
Для типовых .DDS, .Tga текстур с альфа каналом: PX_FMT_RGBA8.
Без альфа канала: PX_FMT_RGB8
Для .Bmp текстуры в режиме IndexColor: PX_FMT_PAL8
Для .Bmp в обычном 24 битовом RGB: PX_FMT_RGB8
 
PX_FMT_DXT5_ALT может показывать "странный" результат.
Т.е. простая смена Pixel Format текстуры, может приводить к странного рода искажениям оной.
 
Color Masks
 
RGB(A) format with the given set of masks and the specified number of bits per pixel. If the alpha mask is zero, then the format is assumed to be RGB.
 
The mask is already in its pre-shifted position (i.e. for a given format, at any bit position, only one component's mask will be "1").
 
 
Значения по умолчанию:
Red 255
Green 65280
Blue 16711680
Alpha 4278190080 (если альфы в текстуре не было, пусто)
 
Примечание.
Можно поправить ниф.хмл файл, указав Color4.
Т.е. вместо 4х полей получить одно значение.
Впрочем, не определенность смысла не показывает насущную необходимость такого деяния.
 
Bits Per Pixel
 
8, 24 or 32.
Only the least-significant BitsPerPixel bits should be used for mask values.
 
Зависит от битности текстуры в т.ч.
В некоторых случаях указывается нуль.
Для index color именно.
 
Для Тга - 32 бита (если было сохранено в таком режиме + альфа).
Для типовых ДДС, ТГА - 24.
Для 8 битных index color - 8.
Для тга сохранных в 16 бит - 24...
 
Не определяется точно.
Одни Тга текстуры дают значение 32, другие 24.
Для ддс в основном 24, даже если альфа и АРГБ32 режим.
Однако сохранение в формате ДХТ3, той же текстуры, давало значение битности 32..
Для 8 битных Index Color - 8.
 
Примечание.
Т.е. были проведены быстрые тесты, что за что влияет, но четкой картины не выявлялось.
В связи не определенной ценностью для моддинга таких данных, более подробные тесты не проводились.
 
Old Fast Compare
 
Compare bits are some internal value the engine uses to easier detect reused textures. The other two are as their name suggests (G7)
Возможно используется для оптимизации сцены.
т.е. аналогично случаю, когда несколько моделей используют общую текстуру?
 
Нет точных данных.
 
По видимости, одинаковая текстура в файле может использовать одинаковые значения в этом разделе.
Что странно...
Тест с одинаковой по рисунку текстурой, но с разным разрешением оной - показал одинаковые значения для всех niPixeldata.
В другом файле, часть текстур имела одинаковые значения, при этом сами текстуры были принципиально различны.
 
Значения могут меняться, для самых простых текстур все строки = 0.
Т.е. для текстуры бмп в режиме index color 8bit, значения = 0.
 
Для более "сложных" текстуры, строки меняют значения.
 
Palette
 
Returns true if the format is palettized, and false otherwise.
 
если текстура была в формате 8-бит palette (index color).
 
Num Mipmaps
 
 
Кол-во мип-уровней.
Зависит от размера текстуры.
Чем она больше (512, 1024 и пр) тем больше будет уровней.
 
Mipmaps
 
Finally, the number of mipmap levels should be less than or equal to the number of mipmap levels in a full pyramid based on the image dimensions. If 1 is passed in, a "flat" (non-mipmapped) array is created. If 0 is passed in, the number of levels in a full pyramid is automatically calculated, and the full pyramid is allocated.
Значения мип уровней.
Размер и дистанции.
 
если текстура не использует мип уровни - пусто.
 
Width
Height
Offset
 
Width of the mipmap image.
Height of the mipmap image.
Offset into the pixel data array where this mipmap starts.
 
Значение размера мипкарт.
Ближние уровни, имеют значения больше дальних, см. Лоды.
Bytes Per Pixel
 
Bytes per pixel (Bits Per Pixel / 8).
Еще одно значение со сходным (см. выше названием).
 
Обычные значения 1-3-4.
Т.е. непохоже на связь с битностью текстуры.
Для текстур в режиме палитры, значение может быть 11.
 
Возможно бит на пиксель.
т.е. сколько бит кодируют значения цвета для одного пикселя?
 
Num Pixels
 
Greatness7 писал:
yea scene viewer doesnt load them properly, not sure why.
these values are correct
or should be at least
ingame test looks like this
the pixel data is just some arbitrary amount of bytes.
The size depends on what format the image is in, what size it is, and if its compressed, etc.
Each byte does not necessarily correspond to a pixel
if its a compressed format the pixel data  will be compressed
how to interpret the bytes is controlled by the pixel format stuff
i dont think nifskope will support all the formats
probably its because the enum order changed
they got rid of BGR stuff (С) G7)
 
Кол-во байт описывающих пиксели текстуры.
Чем больше разрешение текстуры, тем выше значение здесь.
При этом, не все так просто.
Цвет одного пикселя, кодируются 4ми или 5тью значениями!
При этом влияя на цвета соседних пикселей.
 
В основном, выглядит так, что, цвет одного пикселя кодирован тремя, или четырьмя полями byte. RGB+A
Если альфы нет, то три строки воздействуют на цвет одного пикселя.
Но при изменения данный одной байта, можно заметить влияние на цвета соседних пикселей.
 
Если в текстуре есть альфа, то "кол-во" пикселей, увеличивается.
 
И смена значения "четвертого" байта будет влиять на прозрачность пикселя... если формат текстуры подразумевает наличие альфы.
 
Если формат текстуры без альфы, то 4го байта нет - т.е. смена значения 4-го байта приведет к изменению цвета следующего пикселя, но не прозрачности целевого!
 
8х8 DXT1 = 255
8x8 DXT1a = 255
8x8 DXT3 = 340
8x8 DXT5 = 340
8x8 ARGBA32 = 340
8x8 TGA (32) = 340
Размер текстуры
кол-во писклей.
16х16
1364
32х32
5460
64х64
21844
128х128
87380
256х256
349524
512х512
1398100
1024х1024
5592404
 
Упакованная текстура 1024х1024 с альфой в режиме PX_FMT_DXT5_ALT дала значение: 1398128
В режиме PX_FMT_DXT1: 699064
В режиме PX_FMT_RGBA8: 4194304
В режиме PX_FMT_RGB8: 3145728
 
Т.е. значение может сильно меняться, в зависимости от формата исходной текстуры ( DXT1-5) и метода (PX_FMT) ее упаковки в файл + влияние наличия альфа канала.
 
Pixel Data
 
Один тестовый ниф в ТЕС КС.
Как видно, показывает с ошибками.
При этом в СкенеВиювере все нормально.
 
Другой ниф файл показывает обратную ситуацию:
Значения цвета пикселя.
Можно изменять вручную...
Начинается с левого верхнего угла текстуры...
255 изменен на 8.
128 для 4х пикселей рядом.
0 для 4х пикселей рядом.
4 для 4х пикселей рядом.
 
 
Здесь хорошо видно создание градиента влияния на соседние пиксели.
 8х8 текстура, смена значения для 1 вертекса *в разных строках!
И стало (при смене значение на 255 для 4х вертексов сразу)
 
Т.е. управлять цветом вертексов можно - но довольно сложно. )